2012-03-18 163 views
3

我已经在PHP中编写了以下代码以在同一页面上生成两个下拉框。如何根据第一个下拉框中的所选内容获取第二个值

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

只需通过这个PHP页面中的这两个下拉框来通知这两个值,我已经通过按下提交按钮到另一个PHP页面来处理其他一些工作。

如果您可以帮助我根据第一个保管箱上选择的用户ID填写第二个保管箱,我将不胜感激。这里是我写的代码来显示并填充这些下拉框。你能告诉我,我应该修改哪部分代码,如果你能向我展示修改代码,我将不胜感激。我是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

你需要三样东西

  1. 与选择字段 初始页
    • 的第一选择字段预填充用户ID
    • 第二个字段包含任何选项而被禁用
  2. 一个单独的端点/页,需要一个用户ID作为参数,以返回有关日期
    • 它可能应该返回JSON/XML(或类似的东西),或者你可以返回<option />标签的日期,预渲染(真的不应该这样做,但它会更快一起破解这个)
  3. 选择第一个下拉菜单中的选项时会触发Javascript回调。该回调应该发送一个AJAX请求到单独的端点并填充第二个下拉列表。

这对我来说可能比我更容易写出来,而不是尝试解释它,但那不是重点。只是试图设置这一切(都是这样;相对简单)会教你一些有关Javascript,AJAX和Web服务的东西。

如果您选择从您的Web服务(单独的端点/页面)返回JSON/XML,并希望您愿意,您也可能会开始看到将逻辑从表示中分离出来的好处,这将带来不同的世界以便您了解和交付代码。

+0

感谢您的详细解释。我使用Ajax来完成我的工作。您提到的步骤非常有帮助。 – Tariq 2012-03-19 08:18:16

2

好了,我们不会为你写的代码。否则,你将成为所有人的新手:)

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

+0

谢谢,我试了一下后就可以自己做。尽管这花费了我几个小时的时间,但它值得尝试。你是对的,试图让一个人高效。 – Tariq 2012-03-19 08:15:34

相关问题