如何根据第一个下拉框中选定的值获取第二个下拉框中的值?

3
我用PHP编写了以下代码,在同一个页面上生成两个下拉框。
第一个下拉框从MySQL表中获取值。此下拉框包含一些用户ID。第二个下拉框包含一些日期,这些日期应基于在第一个下拉框中选择的UserID。我已经用MySQL表中的所有日期填充了第2个下拉框,但是它应该由第一个下拉框中选择的UserID过滤。
只是为了通知,在此PHP页面上使用这两个下拉框的值,我通过按提交按钮将它们发布到另一个PHP页面以处理其他工作。
如果您能帮助我仅基于第一个下拉框中选择的UserID填充第二个下拉框,我将不胜感激。这里是我编写用于显示和填充这些下拉框的代码。请告诉我应修改代码的哪个部分,并且如果您可以向我展示修改后的代码,我将不胜感激。我是PHP的新手,所以我请求代码级别的帮助。
我的代码:
<html>
<head>
<title>
 Search Alert DB
</title>
<body>

  <br />

<?php>

  $con = mysql_connect("localhost","root","root"); // (host, user,pwd)
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("mysql", $con);

echo "<p> Search Alert database </p>";
echo "<br />";

$result = mysql_query("SELECT distinct(UserID) FROM tblAlertLogSpecificUsersDayStatusFinal_1");
$options="";

echo "<form action='Search_AlertDB_process.php' method='POST'>\n";
//echo "Please choose a user: ";
echo "Please choose a user: <select name = userid>";
echo "<option>-Select-";
while ($row = mysql_fetch_array($result))
{

$userid=$row["UserID"]; 
$options ="<option value = \"$userid\">$userid </option>";
echo "$options";

}
echo "</select>";
echo "<br />";
echo "<br />";
$dayresult = mysql_query("SELECT distinct(Occurred_date) FROM tblAlertLogSpecificUsersDayStatusFinal_1");
$dayoptions="";

echo "Please pick a date:<select name = day>";
echo "<option>-Select-";
while ($row=mysql_fetch_array($dayresult)) { 

    $day=$row["Occurred_date"]; 
    $dayoptions ="<option value = \"$day\">$day </option>";
    echo "$dayoptions";
    //$options.="<OPTION VALUE=\"$id\">".$day; 
}   
echo "</select>";
echo "<br />";  
mysql_close($con);  
?>  

<br />
<input type="submit" name="Submit" value="Search" /> <br /> <br />
</form>

</body>
</html>
2个回答

2

好的,我们不会为您编写代码。否则,您将一生都是新手 :)

您需要的是称为AJAX的东西。最简单的实现方法可能是使用jQuery ajax函数。如果您不了解jQuery,请学习基础知识,不应该超过一个小时左右。这是值得的 :)


谢谢,经过尝试后我自己完成了它。虽然花费了我几个小时的时间,但是这种尝试是值得的。你说得对,尝试可以让人变得更加高效。 - Tariq

2
你需要3个东西
1. 带有选择字段的初始页面 - 第一个选择字段中预填了用户ID - 第二个字段不包含选项并且被禁用
2. 一个单独的终端/页面,它将用户ID作为参数以返回相关日期。 - 它应该返回JSON/XML(或类似的东西),或者您可以在<option />标签中预渲染日期(不应该这样做,但是这样很快可以实现)。
3. 当第一个下拉菜单中的选项被选中时,触发Javascript回调。回调应该向单独的终端发送AJAX请求,并使用结果填充第二个下拉菜单。
也许为我写出所有内容比[尝试]解释它更容易,但这不是重点。只是想设置这一切(虽然相对简单),但这会教你很多关于Javascript、AJAX和Web服务方面的知识。
如果您选择从Web服务(单独的终端/页面)返回JSON/XML,并希望您能这样做,那么您可能还将开始看到将逻辑与展示分离的好处,这将极大地改善您对代码的理解和交付。

感谢您详细的解释。我使用了Ajax来完成我的工作。您提到的步骤非常有帮助。 - Tariq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接