选择选项以基于mysql填充的下拉列表更新第二个选择选项

时间:2012-09-25 14:47:17

标签: php javascript mysql html ajax

我正在尝试创建一个智能表单,它会自动限制第二个下拉框的可用选项。

背景: 我正在创建一个票务系统,我希望用户从“站点选择”下拉列表中选择一个站点,然后“用户选择”下拉列表将只包含链接到第一个下拉列表中所选站点的用户,所有从MySQL填充的信息。

未来: 然后,我想在“选择受影响的服务”

下列出与该用户关联的所有服务

我的js很差。到目前为止,我已经能够通过搜索找到一些代码,允许我将用户的计算机ID写入文本字段。但我无法弄清楚如何捕获输出并查询计算机名称(不同的表)并将其显示为勾选框选项或使用相同的方法来限制下一批选择框。下面列出的所有代码我还没有清理,alpha阶段。

我意识到我可以仅使用PHP执行此操作,但我想在这里和那里完善我的编码。

显示下降时间:

    <h3>Assign Site</h3> 

    <select id="site_add" name="site_add" style="width:217px; height:20px !important;">
        <option value="-1"></option>';

  $o = "SELECT * FROM company_sites WHERE company_id = " . $company_id . " ORDER BY sitename";
$rs = mysql_query($o);
$nr = mysql_num_rows($rs);
for ($i=0; $i<$nr; $i++) {
$r = mysql_fetch_array($rs);
        echo '<option value="' . $r['id'] . '">' . $r['sitename'] . '</option>';
    }

    <h3>Assign User</h3> 
    <select id="comp_add" name="comp_add_1" style="width:217px; height:20px !important;">
        <option value=""></option>';

  $o = "SELECT * FROM company_staff WHERE company_id = " . $company_id . " ORDER BY id DESC";
$rs = mysql_query($o);
$nr = mysql_num_rows($rs);
for ($i=0; $i<$nr; $i++) {
$r = mysql_fetch_array($rs);

    $user_computer_id = $r['computer_id'];

        echo '<option value="' . $r['id'] . '">' . $r['firstname'] . ' ' . $r['lastname'] . '</option>';
    }

当前JS将所选用户的计算机ID输出到文本字段:

<script type="text/javascript"> 
window.onload=function() { attachBehaviors(); }; 
// 
function attachBehaviors() { 
 document.getElementById(\'person\').onchange=function() { 
 loadUser(this.options[this.selectedIndex].value); // <-- check this, may be incorrect 
 } 
} 
function loadUser(optionvalue) { 
 // Always set a default 
 if (optionvalue==\'\') {  
 return; 
 }
 opts = optionvalue.split(\':\'); 
 var name = opts[0]; 
 var email = opts[1]; 
 document.getElementById(\'computer_id\').value=name; 
} 

</script> 

<select name="person" id="person"> 
    <option value=""></option>';


$result=mysql_query("SELECT * FROM company_staff"); 
while($row=mysql_fetch_array($result)) { 

$submit_firstname = $row['firstname']; 
$submit_lastname = $row['lastname']; 
$submit_staff_id = $row['id']; 
$submit_computer_id = $row['computer_id']; 


 echo '<option value="' . $submit_staff_id . '">' . $submit_firstname . ' ' . $submit_lastname . '</option>\n'; 
} 
echo '
</select> 
<input type="text" id="computer_id" name="name" placeholder="name" /> 
';

非常感谢任何有关如何实现这一目标的建议!

提前致谢!

1 个答案:

答案 0 :(得分:1)

你需要AJAX,它是PHP和JS的结合。 (javascript从服务器请求数据,php处理请求,返回数据)。

您需要练习一点AJAX以了解如何制作此选择框。

这是理论上的过程:

  1. 使用PHP输出第一个选择框。
  2. 为它创建一个onchange事件处理程序,它将调用服务器以获取信息。

    .. ..选项

  3. 此updateNewDropDown函数将从您选择的服务器响应中获取值,并通过PHP获取第二个选择菜单的新数据,并使用提供的数据AJAX响应创建新的选择菜单。

    < / LI>

    AJAX TUTORIALS:

    http://api.jquery.com/jQuery.ajax/ http://www.w3schools.com/ajax/default.asp