【问题标题】:how to pass value from while loop to next page after clicking on menu item php单击菜单项php后如何将值从while循环传递到下一页
【发布时间】:2018-08-01 04:12:21
【问题描述】:

我有一个导航栏,其中一个导航项是带有子类别的下拉菜单。使用 while 循环仅从数据库中提取子类别。

当点击其中一个下拉项目时,它们将被重定向到 dancerProfile.php。

我希望 dancerProfile.php 从其他页面中提取菜单项名称。

html

 <li class="li-spacing"><a href="parentdashboard.php">Home</a></li>
                        <li class="dropdown li-spacing">
                            <a class="dropdown-toggle" data-toggle="dropdown">Dancers<b class="caret"></b></a>
                            <ul class="dropdown-menu">
                                <?php
                            $dancers = "SELECT `dancer_name` FROM `dancers` WHERE name = '$name'";
                            $dres = mysqli_query($con,$dancers); 

                            //if($res==FALSE){
                            //die('there was an error running query [' . $con->error . ']');
                            //  }

                            while($data=mysqli_fetch_array($dres)){
                              $dancerName = $data['dancer_name'];
                              foreach ($dancerName as $DANCER){
                                echo '
                                   <li><a href="dancerProfile.php?dancer_name=<?php echo $DANCER; ?>">'.$data["dancer_name"].'</a></li>
                                   <li class="divider"><hr></li>
                                ';
                              }
                            }
                            ?>
                            <li><a href="addDancer.php">Add New</a></li>
                            </ul>
                        </li>

这很有效,因为所有舞者都会出现在下拉列表中。 我想要的是,当我点击 dancerA 时, dancerProfile.php 将显示 dancerA 信息。当我点击 dancerB 时,它会显示 dancerB 信息等。

但无论我点击哪个名字,它都只会显示最后一个舞者的信息。

dancerProfile.php

 <div class="col-sm-6 dancerInfo">
                <div class="row">
                    <div class="col-sm-6">
                        <div class="dancerName"><?php echo $dancerName;?></div>
                    </div>

所以当我在任何其他页面的导航栏上单击 dancerA 时,在 dancerProfile.php $dancerName 应该打印 dancerA。如果我从导航栏中单击 dancerB,它应该会打印出 dancerB。

但无论我点击哪个链接,它都只会打印 dancerB。

我正在使用引导程序。谁能帮帮我?

编辑 这是我的代码现在的更新。

<li class="li-spacing"><a href="parentdashboard.php">Home</a></li>
                        <li class="dropdown li-spacing">
                            <a class="dropdown-toggle" data-toggle="dropdown">Dancers<b class="caret"></b></a>
                            <ul class="dropdown-menu">
                                <?php
                            $dancers = "SELECT `dancer_name`, `id` FROM `dancers` WHERE name = '$name'";
                            $dres = mysqli_query($con,$dancers); 
                            $dancerId= 'id';
                             }

                            while($data=mysqli_fetch_array($dres)){
                              $dancerName = $data['dancer_name'];
                                echo '
                                   <li><a href="dancerProfile.php?id=<?php echo $dancerId; ?>">'.$data["dancer_name"].'</a></li>
                                   <li class="divider"><hr></li>
                                ';
                              }
                            ?>
                            <li><a href="addDancer.php">Add New</a></li>
                            </ul>
                        </li>

还有 dancerProfile.php:

<?PHP
if(isset($_GET['id'])) {
$dancerId=$_GET['id'];
$dancerquery = "SELECT `dancer_name` FROM `dancers` WHERE id = " . $_GET['id'] . ";";
                $dancer_res = mysqli_query($con,$dancers);
                if($dancer_res){
                    $DANCER='dancer_name';
                }
            }
            ?>
<div class="col-sm-6 dancerInfo">
                <div class="row">
                    <div class="col-sm-6">
                        <div class="dancerName"><?php echo " $DANCER ";?></div>
                    </div>

我也忘了提到这个导航也在 dancerProfile 页面上。所以我提供的所有代码都在 dancerProfile 页面上。我不知道这是否重要

My database table

【问题讨论】:

  • 您希望自己熟悉 URL 参数。你应该使用$_GET。为澄清起见,当while 循环完成时,$dancerName 保存数组的最后一个值,这是预期的。
  • 你不需要使用foreach循环,如果你想使用它必须在你的while循环之外,你需要将while循环的结果存储在可以交互的东西然后循环。否则,您可以在 while 循环期间构建链接
  • 如何在while循环中建立链接?你是说在将循环结果存储在变量中并再次循环之后?或者我可以将循环结果存储在一个变量中,然后在
  • 中使用该变量吗?

标签: php html variables mysqli submenu


【解决方案1】:

您需要传递舞者 ID,或者在您的舞者表中是唯一的。如下所示。

 <li><a href="dancerProfile.php?dancer_id=<?php echo $DANCER_id; ?>">'.$data["dancer_name"].'</a></li>

现在转到dancerProfile.php 并尝试这样的事情。

if (isset($_GET['dancer_id'])) {
    $dancer_id=$_GET['dancer_id'];
    //your query
}

您的完整代码:

<li class="li-spacing"><a href="parentdashboard.php">Home</a></li>
<li class="dropdown li-spacing">
    <a class="dropdown-toggle" data-toggle="dropdown">Dancers<b class="caret"></b></a>
    <ul class="dropdown-menu">
        <?php
    $dancers = "SELECT `dancer_name`, `id` FROM `dancers` WHERE name = '$name'";
    $dres = mysqli_query($con,$dancers); 
    $dancerId= 'id';
     }

    while($data=mysqli_fetch_array($dres)){ ?>
      $dancerName = $data['dancer_name'];

           <li><a href="dancerProfile.php?id=<?php echo $data['id'];?>"><?php echo $data['dancer_name']; ?>'</a></li>
           <li class="divider"><hr></li>

      <?php } ?>
    <li><a href="addDancer.php">Add New</a></li>
    </ul>
</li>

你的dancerProfile.php应该是

<?PHP
if(isset($_GET['id'])) {
$dancerId=$_GET['id'];
$dancerquery = "SELECT `dancer_name` FROM `dancers` WHERE id = '$dancerId'";
    $dancer_res = mysqli_query($con,$dancerquery);
    $data=mysqli_fetch_array($dancer_res);
}
?>


<div class="col-sm-6 dancerInfo">
    <div class="row">
        <div class="col-sm-6">
            <div class="dancerName"><?php echo $data['dancer_name'];?></div>
</div>

【讨论】:

  • 我尝试了你的建议,但我收到一个错误通知:未定义变量:第 362 行 /home/hqwkui898g3u/public_html/dancerProfile.php 中的 DANCER
  • 这是代码: dancer_name FROM dancers WHERE id = '$dancerId'"; $dancer_res = mysqli_query($con,$dancers); $DANCER = '舞者名'; } ?>
    跨度>
  • 你能用数据库结构展示你的完整代码吗
  • 哇,你真的是最棒的!我一直在努力,你认真地救了我。非常感谢您的时间、耐心和帮助!
  • 很高兴为您提供帮助
【解决方案2】:

您当前在每次迭代时都会覆盖 $DANCER 的值,因此最后一个始终是使用的值。

稍微改变一下你的循环:

while($data=mysqli_fetch_array($dres)){
     echo '<li><a href="dancerProfile.php?dancer_name='.$data['dancer_name'].'">'.$data['dancer_name'].'</a></li>';
}

【讨论】:

  • 我试过这个,Ilit 没用。它仍然显示我循环的最后一个值。 :(
猜你喜欢
相关资源
最近更新 更多
热门标签