【问题标题】:How to get the second value in a dropdown box based on the selected one in the first dropdown box如何根据第一个下拉框中的选定值获取下拉框中的第二个值
【发布时间】:2012-03-18 18:37:17
【问题描述】:

我在 PHP 中编写了以下代码以在同一页面上生成两个下拉框。

第一个下拉框从 MySQL 表中获取值。这个 dropdpwn 框包含一些用户 ID。第二个下拉框包含一些日期,这些日期应基于在第一个下拉框中选择的 UserID。我已经用 MySQL 表中的所有日期填充了第二个下拉框,但是,它应该由在第一个下拉框中选择的 UserID 过滤。

只是通知一下,使用此 PHP 页面中这两个下拉框中的这两个值,我已通过按提交按钮将它们发布到另一个 PHP 页面以处理其他工作。

如果您能帮助我仅根据在第一个 Dropbox 上选择的用户 ID 填充第二个 Dropbox,我将不胜感激。这是我编写的用于显示和填充这些下拉框的代码。你能告诉我,我应该修改代码的哪一部分,如果你也能告诉我修改代码,我将不胜感激。我是 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>

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    你需要三样东西

    1. 带有选择字段的初始页面
      • 第一个选择字段已预先填充了用户 ID
      • 第二个字段不包含任何选项并被禁用
    2. 一个单独的端点/页面,它以用户 ID 作为参数来返回相关日期
      • 它可能应该返回 JSON/XML(或类似的东西),或者您可以返回在 &lt;option /&gt; 标签中预渲染的日期(实际上不应该这样做,但将它们组合在一起会更快)李>
    3. 选择第一个下拉菜单中的选项时触发 Javascript 回调。回调应向单独的端点发送 AJAX 请求,并使用结果填充第二个下拉列表。

    对我来说,把它全部写出来可能比[尝试]解释它更容易,但这并不是重点。只需尝试设置这一切(全部设置;相对简单)将教您大量有关 Javascript、AJAX 和 Web 服务的知识。

    如果您选择从您的 Web 服务(单独的端点/页面)返回 JSON/XML,并且希望您会这样做,您可能还会开始看到将逻辑与表示分离的好处,这将使世界变得与众不同您对代码的理解和交付。

    【讨论】:

    • 感谢您的详细解释。我使用 Ajax 来完成我的工作。你提到的步骤很有帮助。
    【解决方案2】:

    好吧,我们不会为您编写代码。否则你将一辈子都是新手:)

    您在这里需要的是 AJAX。实现它的最简单方法可能是jQuery ajax function。如果您不了解 jQuery - 学习基础知识,它应该不会花费超过一个小时左右。这是值得的:)

    【讨论】:

    • 谢谢,我自己试了下就可以了。虽然,它花了我几个小时,但值得一试。你是对的,尝试使人更有效率。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多