0

I am trying to make a cascading dropdown, I want when a user select region then city dropdown is populated accordingly.

JS:

$(document).ready(function() {
    $('#region').change(function() {
        var region = $(this).val();
        $.post('get_region.php', {
            region: region
        }, function(data) {
            $('#district_div').html(data);
        });
    });

PHP:

<?php
require_once('../db/connect.php');

$region = $_POST['region'];

$q = mysql_query("select name from city where region='$region'");

$row = mysql_fetch_array($q);
echo $row['name']; 
?>

HTML:

<div class="controls">
    <select class="bootstrap-select" name="region" id="region">
        <option value="">Choose</option>
        //from database
        <?php echo $region_result; ?>
                                          
    </select>
</div>

<select class="bootstrap-select" name="district" id="district" >
    <div id='district_div'></div>
</select>
7
  • What's your question? Also, seems like you're missing }) in js code Commented Jul 4, 2013 at 17:35
  • So your are not retrieving data? Commented Jul 4, 2013 at 17:44
  • 1
    my question is i dropdown is not populated onchage and where do i miss this ???? Commented Jul 4, 2013 at 17:44
  • am retrieving from mysql as u can see in ma php @RicardoGonzales Commented Jul 4, 2013 at 17:45
  • Is the element calling the function on change at least? Commented Jul 4, 2013 at 17:53

3 Answers 3

1
-for JS it should be like this-

$(document).ready(function() {
    $('#region').change(function() {
        var region = $(this).val();
        $.post('get_region.php', {
            region: region
        }, function(data) {
            $('#district').html(data); // I change this part
        });
    });


-for php-

<?php
require_once('../db/connect.php');

$region=$_POST['region'];

$q=mysql_query("select name from city where region='$region'");

while($row = mysql_fetch_array($q)){
   echo "<option>".$row['name']."</option>";
}

?>


-for the html

<div class="controls">
   <select class="bootstrap-select" name="region" id="region">
      <option value="">Choose</option>
      //from database
      <?php echo $region_result; ?>
    </select>

     <select class="bootstrap-select" name="district" id="district" >

     </select>     <!--you don't need to put a div in the select tag-->
</div>
Sign up to request clarification or add additional context in comments.

2 Comments

what part of the code you didn't understand.? as you can see, I just edit the code posted.
Just some basic understanding of what you have modified... Would help make your answer better...
0

you mis some pieces

// will echo the name value of one row
    $row=mysql_fetch_array($q);
    echo $row['name']; 

try

$results = array();
while($row = mysql_fetch_array($q)){
$results[] = '<option>.'$row['name'].'</option>';
}
$optionString= implode(' ', $results);
echo $optionsString;

2 Comments

i changed, but nothn goes on onchange
can you post the html of the dropdown
0

You are trying to write plain text inside a select box. Try to write in HTML format:

<option>name</option>

In your JS, replace the line:

$('#district_div').html(data);

With:

$('#district').html(data);

Delete the DIV with id "district_div". You cannot have a DIV inside a SELECT. In PHP, the last line is:

echo "<option>$row[name]</option>";

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.