【问题标题】:Populate 2nd dropdown based on results of 1st根据第一个结果填充第二个下拉列表
【发布时间】:2011-07-17 11:42:25
【问题描述】:

目前我使用动态选择来填充下拉列表。我想做的是显示第二个下拉列表,其中包含基于第一个选择的结果。我不知道该怎么做,并且已经寻找答案但无济于事。我已经包含了我用来填充第一个菜单的代码,如果您需要任何进一步的代码,请告诉我。如果有人可以帮助编写代码,我非常愿意查看 jQuery 或 javascript。非常感谢

<form id="boxform" method="post" class="webform" name="boxform" />

        <label for="company">Select a Company:</label>
                <select name="company" id="company" />
                    <option SELECTED VALUE="">Select a Company</option>
                        <?php
                          do {  
                        ?>
                    <option value="<?php echo $row_Recordsetcust['customer']?>"><?php echo $row_Recordsetcust['customer']?></option>
                        <?php

                    } 
                        while ($row_Recordsetcust = mysql_fetch_assoc($Recordsetcust));
                        $rows = mysql_num_rows($Recordsetcust);

                if($rows > 0)

                    {
                        mysql_data_seek($Recordsetcust, 0);
                        $row_Recordsetcust = mysql_fetch_assoc($Recordsetcust);
                    }

                         ?>
                 </select>

更新:

这是我目前拥有的 php 格式的第二个下拉列表的代码,如果它有助于继续进行此操作,谢谢

<label for="boxrtnaddress">Select Address</label>
     <select name="boxrtnaddress" id="boxrtvaddress" />
        <option SELECTED VALUE="">Select Delivery Address</option>

            <?php
            while ($row_rs_select_address2 = mysql_fetch_assoc($rs_select_address2))
            {  
                    $value=$row_rs_select_address2['address1_com']. " ". $row_rs_select_address2['address2_com']. " ". $row_rs_select_address2['address3_com']. " ". $row_rs_select_address2['town_com']. " ". $row_rs_select_address2['postcode_com'];
                    $caption=$row_rs_select_address2['address1_com']. " ". $row_rs_select_address2['address2_com']. " ". $row_rs_select_address2['address3_com']. " ". $row_rs_select_address2['town_com']. " ". $row_rs_select_address2['postcode_com'];
                    echo "<option value=\"", $value, "\">", $caption, "</option>";
            }
            ?>
    </select>

+++++++++++++++解决方案++++++++++

<script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script language="javascript" type="text/javascript">
      $(function() {
            $("#company").change(function() {
              if ($(this).val()!="") $.get("getOptions.php?customer=" + $(this).val(), function(data) {
                $("#divId").html(data);
                });
              });
      });
</script>

getOptions.php

<?php
    $customer = mysql_real_escape_string( $_GET["customer"] ); // not used here, it's the customer choosen

    $con = mysql_connect("localhost","root","");
    $db = "sample";
      if (!$con)
        {
        die('Could not connect: ' . mysql_error());
        }

        mysql_select_db($db, $con);
        $query_rs_select_address2 = sprintf("SELECT * FROM company_com where idcode_com = '$customer'");
        $rs_select_address2 = mysql_query($query_rs_select_address2, $con) or die(mysql_error());
        $row_rs_select_address2 = mysql_fetch_assoc($rs_select_address2);
        $totalRows_rs_select_address2 = mysql_num_rows($rs_select_address2);



                    $address=$row_rs_select_address2['address1_com']. " ". $row_rs_select_address2['address2_com']. " ". $row_rs_select_address2['address3_com']. " ". $row_rs_select_address2['town_com']. " ". $row_rs_select_address2['postcode_com'];
                     echo '<select name="customer">'.'<option value="">Select delivery address</option>'.'<option value="address">'.$address.'</option>'.'</select>';



?>

【问题讨论】:

  • 通过为选择设置一个名称制作一个子按钮,然后通过$_POST[the option that was selected]调用ifisset('sub',$_POST),您可以继续
  • @negin 对不起,我不明白。你能举个例子吗?
  • @bollo $("#divId").html(data); 是什么意思

标签: php jquery


【解决方案1】:

它可能会有所帮助,这是一个小提琴

http://jsfiddle.net/gZzQr/

根据第一个 select 的选择动态附加一个 select 代码是混乱和肮脏的所以我不会在这里发布它:)

您可以查看以下内容以更好地了解其工作原理

changeselect 的选定值更改时触发

is(':empty')检查新创建的div是否`select 是否要附加 是否为空

http://api.jquery.com/is/

http://api.jquery.com/empty/

编辑 我会给你提示希望你能填写其余的代码......

首先你需要做的是处理你的第一个下拉列表的change事件,当值改变时你可以向你的服务器发出ajaxgetpost请求,获取结果并填充第二个下拉列表,这是一个有用的 stackoverflow 链接,可能会对您有所帮助

php dropdown menu population

$("#firstDD").change(function(){
var value = $(this).val();//get the changed value of first dd(drop down)


//now do a post request 

$.post("results.php",{data:value},function(data){
//get the values here and populate the second drop down

});

});

在你的 results.php 中

从第一个下拉列表中获取值

$val = $_POST['data'];
//now do the sql queries to fetch desired result
//and echo the results back

echo $results ;

这里有一些有用的链接

http://www.prodevtips.com/2008/08/15/jquery-json-with-php-json_encode-and-json_decode/

http://api.jquery.com/jQuery.post/

http://www.factsandpeople.com/facts-mainmenu-5/26-html-and-javascript/89-jquery-ajax-json-and-php

【讨论】:

  • 如何将该代码转换为从 mysql 的菜单中提取?谢谢
  • 你想用 mysql db 中的值填充第二个下拉列表吗?
  • 谢谢。我会努力让它发挥作用。我唯一的问题是重新调用 php db 。是否有一个如何做到这一点的例子,或者它与标准 php 相同吗?
  • 只是您访问数据库和进行查询的正常方式
  • 发布了适合我的解决方案。只需要让while循环在php中工作。可能会帮助某人。感谢您的所有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 2013-12-06
  • 1970-01-01
  • 2020-05-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
相关资源
最近更新 更多