[英]Populating drop down boxes in php
很快,我就希望填充三个下拉框来过滤数据,而每个下拉框都会影响下一个。
我想要的是
下拉1有公司
一旦选择下拉菜单1,第二个下拉菜单将填充该公司的分支机构
一旦选择了第三个下拉列表,则由该分支机构中该公司的工作人员填充,然后当我按“搜索”时,它应该提取该1个工作人员的数据。 所有信息都放在一个表中
我的桌子叫做“工作人员”
列是“公司”,“分支机构”和“工作人员名称”,每个工作人员都有一个自动编号ID字段,我将其用作称为“ staffID”的查找
感谢您的任何帮助
关于斯洛维
让我们举一个简单的例子,这是一个javascript解决方案。 我正在使用它,并且效果很好。 如果您选择的国家/地区在第二个下拉列表中填充了相应的城市,则此脚本有效。 您可以采取一些想法,并将其用于需要分别处理三个下拉菜单的情况。
这是国家/地区下拉列表:
<?php
$countrylist=mysql_query("SELECT * FROM country ORDER BY name ASC");
echo "<select name='country' id='country' onchange=\"reload(this.form)\" title='Country e:g; United Kingdom,Pakistan'><option value='0'>Select Country</option>";
while($clist=mysql_fetch_array($countrylist))
{
echo "<option value='$clist[Name]'>$clist[Name]</option>"."<br/>";
}
echo "</select>";
?>
这是地区下拉列表:
<select name="region" id="region" ></select>
现在,创建一个名为crlist.js的单独文件,并将其包含在具有上述代码的页面中,如下所示:
<script type="text/javascript" src="crlist.js"> </script>
crlist.js的代码:
var request = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
request = false;
}
}
@end @*/
function fillSelect(country,path) {
var url = path+"crlist.php?country=" + country;
request.open("GET", url, true);
request.onreadystatechange = go;
request.send(null);
}
function go() {
if (request.readyState == 4) {
//if (request.status == 200) {
var response = request.responseText;
var list=document.getElementById("region");
for (i = list.length - 1; i>=0; i--) {
list.remove(i);
}
var records=response.split('|');
for (i=1; i<records.length; i++) {
//alert("rcord="+records[i]);
var record=records[i].split('*');
var region=record[0];
//alert("region="+region);
var regionid=record[1];
//alert("regionid="+regionid);
var x=document.createElement('option');
//var y=document.createTextNode(region);
x.text=region;
//x.value=region;
//alert(x.text);
//x.appendChild(y);
//list.appendChild(x);
list.options.add(x);
}
//}
}
}
function initCs(path) {
if (!request && typeof XMLHttpRequest != 'undefined') {
request = new XMLHttpRequest();
}
var country=document.getElementById('country');
country.onchange=function() {
if(this.value!="Select") {
var list=document.getElementById("region");
for (i = list.length - 1; i>=0; i--) {
list.remove(i);
}
//while (list.childNodes[0]) {
//list.removeChild(list.childNodes[0]);
//}
}
fillSelect(this.value,path);
//alert(this.value);
}
//fillSelect(country.value);
}
现在,创建一个名为crlist.php的单独文件。
crlist.php的代码:
<?php
require_once 'yourconfigfile.php';
$cname = $_GET['country'];
$query="select ID,Name from city where CountryCode=(select code from country where name='$cname') Order By Name ASC";
$res = mysql_query($query) or die(mysql_error());
while($region = mysql_fetch_array($res)){
echo "<option value='".$region['Name']."'>".$region['Name']."</option>";
}
?>
现在,在具有下拉菜单的页面上添加以下脚本:
<script type="text/javascript" src="crlist.js"> </script>
<script>
$(document).ready(function() {
initCs("");
});
</script>
这是我自己的脚本,我假设您已经创建了国家和地区表。 但是您需要根据您的数据库结构调整查询和上面的代码。 对于您的情况,您必须为公司,分支机构和员工创建表。
希望这可以帮助。
您是否听说过AJAX()或jQuery ? 如果没有,请先参考那些链接; 实际上,对于您的任务,您需要使用基于Ajax或jquery的下拉框。 这可以使您的梦想成功。 :)
请参考下面的链接为您的解决方案 。
如果需要任何帮助,您可以随时问我。
编辑根据您的commnet:
Step-1:- "SELECT company_id,company_name from company_table WHERE $condition ";
Step-2:- Fill first drop down box with record of first query set.
Step-3:- call jquery.ajax function onchange event of first drop down box in which call one
php page i.e: getRecords.php.
Step-4:- In getRecords.php page you need to get all the Branches of that company by passing company id in ajax and return a record array as response.
Step-5:- Fill second drop down with these records and again onchange event call another jquery.ajax request for final drop down box and do all things same as Step-4.
我认为这是您需要的所有步骤。 还有任何问题让我通知。
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.