简体   繁体   中英

select box based on another select box value php

I'm using ajax to do my select box, however the second select box didn't show any value when I choose the 1st select box. How can I display the value on the 2nd select box?

index.php (jQuery):

$(document).ready(function(){
    $('#brand').on('change',function(){ 
        var brand = $(this).val();
        if(brand){
            $.ajax({
                type:'POST',
                url:'ajax_city.php',
                data:'brand='+brand,
                success:function(html){
                    $('#outlet').html(html);
                }
            }); 
        }else{
            $('#outlet').html('<option value="">Select OUTLET first</option>');
        }
    });
});

index.php (Html/php)

        <select class="brand" style="width:200px" id="brand" name="brand" >
            <?php $i = 0;
            while (!$br->EOF) {
                $fv = $br->Fields("mBrand");
                $name = $fv->value;
                echo '<option value="' . trim($name) . '"><b>' . $name . '</b></option>';
                $br->MoveNext();
            }
            ?>
        </select>
        <input type="hidden" name="loc" id="loc">
    </td>
</div>
<li class="form-line" id="id_19">
    <label class="form-label-left" id="label_19" for="input_19">  Outlet  </label>
    <div id="cid_20" class="form-input">
    <br><br>
    <select class="outlet" name="outlet" id="outlet" style="width:200px" >
        <option value="">--Select outlet--</option>
    </select>

ajax_city.php:

if(isset($_POST["brand"])&&!empty($_POST["brand"]))
{
$brand=$_POST['brand'];
$rb = $itdeptconn->Execute("SELECT DISTINCT mOutlet FROM [IT_Dept].[dbo].[mstOutlet] WHERE mBrand='".$brand."'");
//$sql=mysql_query("select b.id,b.data from data_parent a,data b where b.id=a.did and parent='$id'");

echo '<option value="">Select Outlet</option>';
                                while (!$rb->EOF) {

                                    $fv = $rb->Fields("mOutlet");
                                    $name = $fv->value;

                                    echo '<option value="' . trim($name) . '"><b>' . $name . '</b></option>';
                                    $rb->MoveNext();
                                }
}
              ?>

Use square brackets instead of round brackets on your ajax_city.php page. It should be -> !empty($_POST["brand"]))

hope it will work

Index :

                                <!DOCTYPE html>
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
              <head>
                <meta http-equiv='content-type' content='text/html;charset=utf-8' />
                <link type='text/css' rel='stylesheet' href='test.css' />
                <script type='text/javascript' src='js/jquery-1.12.1.js'></script>
              </head>
            <body>
             <select class="brand" style="width:200px" id="brand" name="brand" >
                        <option value="">--Select outlet--</option>
                    <option value="data11">Data11</option>
                    <option value="data21">data21</option>
                    <option value="data31">data31</option>
                    </select>
                    <input type="hidden" name="loc" id="loc">
                </td>
            </div>
            <li class="form-line" id="id_19">
                <label class="form-label-left" id="label_19" for="input_19">  Outlet  </label>
                <div id="cid_20" class="form-input">
                <br><br>
                <select class="outlet" name="outlet" id="outlet" style="width:200px" >
                    <option value="">--Select outlet--</option>
                </select>
              <script type="text/javascript">
              $(document).ready(function(){
                    $('#brand').on('change',function(){ 
                        var brand = $(this).val();
                        if(true){
                            $.ajax({
                                type:'POST',
                                url:'ajax_city.php',
                                data:'brand='+brand,
                                success:function(html){
                                    $('#outlet').html(html);
                                }
                            }); 
                        }else{
                            $('#outlet').html('<option value="">Select OUTLET first</option>');
                        }
                    });
                });
              </script>
            </body>
            </html>

ajax_city.php

                                <?php 

            if(isset($_POST["brand"])&&!empty($_POST["brand"]))
            {
                $brand = $_POST['brand'];
            //  $rb = $itdeptconn->Execute("SELECT DISTINCT mOutlet FROM [IT_Dept].[dbo].[mstOutlet] WHERE mBrand='".$brand."'");
                //$sql=mysql_query("select b.id,b.data from data_parent a,data b where b.id=a.did and parent='$id'");
                $rb = ["brand1","brand2","brand3"];
            //  $rowcount = $rb->num_rows;
                if(count($rb)>0){
                    echo '<option value="">Select Outlet</option>';
                        for($i=0;$i<count($rb);$i++)
                        {
                            echo '<option value="'.$rb[$i] .'"><b>'.$rb[$i]. '</b></option>';
                        }
                }else {
                    echo '<option value="">Outlet not available</option>';
                }
            }   
            ?>

Use this code,I have added all the comments just follow that comments and check if it works.It is working fine for me.

ajax_city.php

                <?php 
            define("DBHOST"," "); //write your host name
            define("DBNAME"," "); //write your database name
            define("DBUSER"," "); //write your username
            define("PASS"," "); //write your password
            $itdeptconn = new PDO('mysql:host='.DBHOST.';dbname='.DBNAME,DBUSER,PASS);


            if(isset($_POST["brand"])&&!empty($_POST["brand"]))
            {
                $brand=$_POST['brand'];
                $rb=$itdeptconn->prepare("SELECT DISTINCT name FROM restaurant WHERE check_payable_to='C3'"); //write here your query
                $rb ->execute();
                if(count($rb)>0)
                { 
                    echo '<option value="">Select Outlet</option>';
                        while($data = $rb ->fetch())
                        {
                            echo '<option value="' . $data['name'] . '"><b>' . $data['name'] . '</b></option>'; }  //name is the column name,change it with your column name
                        }   
                }       
                else 
                {
                    echo '<option value="">Outlet not available</option>';
                }       
            ?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM