在数据库中使用未知数量的值创建下拉列表

时间:2015-05-22 10:21:52

标签: php mysql

我在php中创建一个下拉列表,其中显示了表中该列的每个项目。

一旦选择了一个选项,就会出现另一个下拉列表,其中包含该行中拾取第一个项目的其他值。在我的第一次,他们必须选择和时间然后在时间被选择后,与该时间相关联的ID应该在该下拉列表中但是只有最后一个值是下拉列表被保存在会话中,即使那个不是没有选择第一个和第二个下拉列表。

我不明白为什么选择的值不是存储的值:

 <?php
   $select = '<select name = "flytime" size = "1">';
    while ($row = mysql_fetch_array($rs))
    {

    $select.= '<option value="' .$row["ID"].'" >     '.$row['flytime'].' </option>';
     $_SESSION["flytime"] =  $row["flytime"]; 
    }

     $time = $_SESSION["flytime];

     $select.= '</select>';
      echo $select;
     echo $time;
     ?>
     <p><input type="submit"  value="submit" name ="submit" /></p>
      <?php 
      mysql_close($conn); ?>

      <?php
      $conn = mysql_connect("localhost");
      mysql_select_db("hello", $conn)
      or die ('Database not found ' . mysql_error() );
      $sql = "SELECT * FROM fly WHERE flytime = '".$flytime ."';";
      $rs = mysql_query($sql, $conn)
      or die ('Problem with query' . mysql_error());
       ?>

      <?php

      if(isset($_POST["submit"]))
         {
        $select = '<select name = "ID" size = "1">';
        while ($row = mysql_fetch_array($rs))
         {

        $select.= '<option value="' .$row["flytime"].'" >  '.$row['ID'].' </option>';
        $_SESSION["ID"] =  $row["ID"] ; 
         }

       $select.= '</select>';
       echo $select;
       }
       ?>

1 个答案:

答案 0 :(得分:0)

您只能看到存储在会话变量中的选择中的最后一个值,因为您要覆盖循环中会话变量的值:

while ($row = mysql_fetch_array($rs))
{
    /* ... */
    $_SESSION["flytime"] =  $row["flytime"]; 
}

在上面的示例中,您始终使用相同的变量来保存$row["flytime"]的值。变量只保存一个值,这就是为什么你只保存循环中出现的最后一个值。

解决方案提示:
要从select中动态保存值到PHP会话变量,请查看AJAX(可能与jQuery结合使用)。
PHP没有像这样的动态客户端行为 - 一旦呈现页面,PHP的工作就会完成,直到你加载下一页或使用AJAX请求。