while-loop 中的嵌入式 html,用于根据返回的数据显示结果



嗨,朋友们

我提供的代码显示与登录用户关联的数据(moduleID和moduleName)。目前,它显示与模块ID关联的特定html代码,该代码应在用户登录时显示在屏幕上。我想实现一种方法来遍历值(可能是循环中的 if-else 语句),以便在用户附加一个或多个模块 ID 时显示我提供的特定 html 代码。

这是我的主页演示.php

<?php
session_start();
//including the database connection file
include 'config.php';
$cuserID= $_SESSION['userID'];
//fetching data in descending order (lastest entry first)
//$result = mysql_query("SELECT * FROM users ORDER BY id DESC"); // mysql_query is deprecated
$result = mysqli_query($mysqli, "SELECT m.moduleID, m.moduleName
FROM modules m
JOIN courses c ON m.courseID = c.courseID
JOIN usersDemo u ON c.courseID = u.courseID
WHERE userID = '$cuserID'"); // using mysqli_query instead

//while($res = mysql_fetch_array($result)) { // mysql_fetch_array is deprecated, we need to use mysqli_fetch_array 
while($res = mysqli_fetch_array($result)) {     
echo "
<div id='loader-wrapper'>
<div id='loader'><div id='loader1'> 
</div> 
</div>
<p><a  onclick='IS4439Function()'>IS4437</a></p>
</div>
";
}
?>

这是附加到 IS4437 模块 ID 的 html 代码

<div id="loader-wrapper">
<div id="loader"><div id="loader1"> 
</div> 
</div>
<p><a  onclick="IS4439Function()">IS4437</a></p>
</div>

这是附加到 IS4408 模块 ID 的 html 代码

<div id="loader-wrapper1">
<div id="loader"><div id="loader1"> 
</div> 
</div>
<p><a onclick="IS4408Function()">IS4408</a></p>
</div>

编辑

因此,正如我提到的我目前遇到的问题,这些是我已经尝试过的不同方法。

最初在将 html 嵌入到 homepageDemo.PHP 的 while 循环中之前,我只是将 moduleID 和 moduleName 作为文本返回与登录用户关联的 moduleID 和 moduleName

<?php
session_start();
//including the database connection file
include 'config.php';
$cuserID= $_SESSION['userID'];
//fetching data in descending order (lastest entry first)
//$result = mysql_query("SELECT * FROM users ORDER BY id DESC"); // mysql_query is deprecated
$result = mysqli_query($mysqli, "SELECT m.moduleID, m.moduleName
FROM modules m
JOIN courses c ON m.courseID = c.courseID
JOIN usersDemo u ON c.courseID = u.courseID
WHERE userID = '$cuserID'"); // using mysqli_query instead

//while($res = mysql_fetch_array($result)) { // mysql_fetch_array is deprecated, we need to use mysqli_fetch_array 
while($res = mysqli_fetch_array($result)) {     
echo "<tr>";
echo "<td>"."<a>".$res['moduleID']."</a>"."</td>";
echo "<td>"."<a>".$res['moduleName']."</a>"."</td>";
}
?>

然后我尝试遍历这些值以返回与每个单独的模块 ID 关联的 html 代码

切换语句尝试:

while($res = mysqli_fetch_array($result)) {     
switch ($cuserID) {
case 1:
echo "
<div id='loader-wrapper'>
<div id='loader'><div id='loader1'> 
</div> 
</div>
<p><a  onclick='IS4439Function()'>IS4437</a></p>
</div>
";
break;
case 2:
echo "
<div id='loader-wrapper'>
<div id='loader'><div id='loader1'> 
</div> 
</div>
<p><a  onclick='IS4408Function()'>IS4408</a></p>
</div>
";
break;
case 7:
echo"
<div id='loader-wrapper'>

调用的函数

function IS4439Function() {
{
window.location.href = "global.php";
}
}
function IS4408Function() {
{
window.location.href = "isStrategy.php";
}
}
function IS4449Function() {
{
window.location.href = "webApp.php";
}
}

不幸的是,两者都不是我想要实现的目标。有什么想法吗?

你真的很接近,我不确定断开连接在哪里,但你来了。 您需要将硬编码的模块 ID 值 (IS4439) 替换为已从数据库中提取的值。 将您已经拥有的东西放在一起,它实际上只是归结为串联。

while($res = mysqli_fetch_array($result)) {     
echo "
<div id='loader-wrapper'>
<div id='loader'><div id='loader1'> 
</div> 
</div>
<p><a  onclick='" . $res['moduleID'] . "Function()'>". $res['moduleID'] . "</a></p>
</div>
";
}

不过,我建议不要调用不同的函数,而是考虑只调用一个函数,并将 moduleID 作为参数传入,然后在函数中采取相应的行动。

根据您的更新,您将拥有这个...

while($res = mysqli_fetch_array($result)) {     
?>
<div id='loader-wrapper'>
<div id='loader'><div id='loader1'> 
</div> 
</div>
<p><a  onclick='redirectFunction("<?php echo $res['moduleID']; ?>");'><?php echo $res['moduleID']; ?></a></p>
</div>
<?php
}
?>

你的功能将是...

function redirectFunction(moduleID)
{
var newLocation = "";
if(moduleID == "IS4439")
{
newLocation = "global.php";
}
else if(moduleID == "IS4408")
{
newLocation = "isStrategy.php";
}
else if(moduleID == "IS4449")
{
newLocation = "webApp.php";
}
window.location.href = newLocation;
}

最新更新