【问题标题】:Embedded html within while-loop to display result based on what data is returned在 while 循环中嵌入 html 以根据返回的数据显示结果
【发布时间】:2018-08-18 04:52:10
【问题描述】:

朋友们好

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

这是我的主页Demo.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的moduleID的html代码

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

这是附加在IS4408的moduleID上的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作为文本返回

<?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>";
        }
        ?>

然后我尝试遍历这些值以返回与每个单独的 moduleID 关联的 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";
    }
}

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

【问题讨论】:

  • 嗨,我是 php 新手,如果你能告诉我哪里出错了,或者这可能是重复的并且我的问题已经存在,我将不胜感激被问到然后链接答案。谢谢
  • “我的问题是,您对如何实现 while 循环有任何见解或编码示例吗?” 所以不是您来获取代码示例或洞察你应该怎么做。
  • 您已经将行数据导入$res。对如何访问mysqli_fetch_array() 的调用结果进行一些基本搜索。
  • 这是一个常见的误解,SO isn't a forum,它是一个问答网站,(对某些人来说)有严格的规则/指导方针,说明什么可以做,什么不可以做。这更像是“我有 X 问题,我已经尝试过 A 和 B,这是我的代码的一个最小示例,其中提到了错误” - 或者它的一些变体。
  • 嗨@Epodax 我会更新我的问题来做到这一点。谢谢

标签: php sql loops mysqli while-loop


【解决方案1】:

你真的很接近,我不确定断开连接的位置,但你去吧。您需要将硬编码的 moduleID 值 (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;
}

【讨论】:

  • 谢谢您,非常感谢您的帮助。我遇到的唯一问题是,即使有 3 个模块 ID 与登录用户关联,它也只显示最后一个模块 ID!
  • 显示最后一个moduleID 3次?还是只显示一行,那一行有最后一个moduleID?
  • 显示一行,该行有最后一个moduleID
  • 这听起来更像是您的数据和/或查询的问题。在不知道您的数据的情况下,我无法真正谈论它。
  • 如果我使用您提供的答案而不使用我的 css,它会显示每个关联的 moduleID,但如果我包含我的 css,它只会显示一行并具有最后一个 moduleID。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 2013-12-18
  • 2014-07-13
  • 2012-10-30
  • 2014-08-30
  • 2019-09-24
相关资源
最近更新 更多