【问题标题】:Populating drop down boxes in php在php中填充下拉框
【发布时间】:2011-12-09 10:09:29
【问题描述】:

只是一个快速的我想填充三个下拉框来过滤数据,每个下拉框都会影响下一个。

我想要的是为了

下拉1有公司

一旦选择了下拉列表 1,第二个下拉列表中就会填充该公司的分支机构

一旦选择了第三个下拉列表,就会由该分支机构中该公司的员工填充,然后当我按搜索时,它应该提取该 1 位员工的数据。所有信息都在一个表中

我的表叫做“stafflist”

列是“company”、“branch”和“staffname”,每个员工都有一个自动编号 id 字段,我将其用作名为“staffID”的查找

感谢您的帮助

问候 慢吞吞

【问题讨论】:

  • 我不明白你到底在问什么?如何编写查询?如何输出下拉菜单?
  • 我认为你必须使用 Javascript 来完成。您不能仅使用 PHP/MySQL 以这种方式过滤下拉列表。但是,正如尤里所说,这个问题要更具体一些。
  • 对不起,伙计们,是的,我忘了确保我想要的东西在那里。是的,我只是想知道我怎么能做到这一点,一个例子会很棒
  • @slowie 你试过什么吗?有什么吗?

标签: php javascript mysql ajax


【解决方案1】:

让我们举一个简单的例子,这是一个 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>

这是我自己的脚本,我假设您已经创建了国家和地区表。但是您需要根据您的数据库结构调整查询和上述代码。在您的情况下,您必须为公司、分支机构和员工创建表。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您听说过AJAX()jQuery 吗?如果没有,请先参考这些链接;实际上,对于您的任务,您需要使用基于 Ajax 或 jquery 的下拉框。这可以使您的梦想成功。 :)

    请参阅下面的链接以获取your solution

    如果需要任何帮助,您可以随时问我..

    根据您的 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.
    

    我认为这是您需要的所有步骤。还有什么问题可以告诉我。

    谢谢。

    【讨论】:

    • jquery 也会使用 ajax 吗?为什么是“ajax OR jquery”而不是“ajax WITH jquery”?
    • 你确定..Y不是吗? “AJAX 或 jQuery”,因为两者是不同的东西,而且工作方式也不同..THX.
    • 是的,因为我遇到了麻烦,所以会得到帮助。我需要的是第一个下拉菜单来查找不同的公司并将它们分组为员工列表目前有 2 家公司的 30 条记录然后它需要查找具有该公司 ID 的所有员工并显示分支机构然后最后显示该分支机构的所有员工让我输入一名工作人员的信息
    猜你喜欢
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2010-10-06
    • 1970-01-01
    相关资源
    最近更新 更多