我正在 php 中创建一个下拉列表,其中显示表中该列的每个项目。
一旦选择了一个选项,就会出现另一个下拉列表,其中包含选择第一项的该行中的其他值。在我的中,他们首先必须选择时间,然后在选择时间后,与该时间关联的 id 应该位于该下拉列表中,但是只有最后一个值是下拉列表保存在 session 中,即使该值不是没有为第一个和第二个下拉列表选择。
我不明白为什么选择的值不是存储的值:
<?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;
}
?>
最佳答案
您只能看到存储在 session 变量中的选择的最后一个值,因为您正在覆盖循环中 session 变量的值:
while ($row = mysql_fetch_array($rs))
{
/* ... */
$_SESSION["flytime"] = $row["flytime"];
}
在上面的示例中,您不断使用相同的变量来保存$row["flytime"]
的值。该变量仅保存一个值,这就是为什么您只保存循环中出现的最后一个值。
解决方案提示:
要从选择动态地将值保存到 PHP session 变量,请查看 AJAX
(也许与 jQuery
结合使用)。
PHP 没有这样的动态客户端行为 - 一旦呈现页面,PHP 的工作就完成了,直到您加载下一个页面或使用 AJAX 请求。
关于php - 在 php 中从数据库创建一个具有未知数量值的下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30394195/