2013-10-25 4 views
0

Я хочу создать динамическое раскрывающееся меню, где параметры второго спуска будут меняться после выбора первого выпадающего списка.Динамические выпадающие меню

test.php файл

<?php 
$con=mysqli_connect("localhost","******","****","******"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$result = mysqli_query($con,"SELECT * FROM countries"); 
?> 
<select id="country" name='country' onchange="get_states();"> 
<option value=''>Select</option> 
<?php 
while($row = mysqli_fetch_array($result)) 
{ 
echo "<option value='" . $row['country_id'] . "'>" . $row['country_name'] . "</option>"; 
} 
?> 
</select> 
<div id="get_state"></div> // Sub will be appended here using ajax 

<script type="text/javascript"> 
function get_states() { // Call to ajax function 
var country = $('#country').val(); 
var dataString = "country="+country; 
$.ajax({ 
    type: "POST", 
    url: "getstates.php", // Name of the php files 
    data: dataString, 
    success: function(html) 
    { 
     $("#get_state").html(html); 
    } 
}); 
} 
</script> 
<?php 
mysqli_close($con); 
?> 

и gestates.php является:

<?php if ($_POST) { 
$country = $_POST['country']; 
if ($country != '') { 
    $sql1 = "SELECT * FROM states WHERE country_id=" . $country; 
    $result1 = mysql_query($sql1); 
    echo "<select name='state'>"; 
    echo "<option value=''>Select</option>"; 
    while ($row = mysql_fetch_array($result1)) { 
     echo "<option value='" . $row['id'] . "'>" . $row['state_name'] . "</option>";} 
    echo "</select>"; 
} 
else 
{ 
    echo ''; 
} 
} 
?> 

Однако приведенный выше код не работает!

+0

именно то, что ошибка, которую вы получили ??? – Manwal

+0

нет ошибки. [link] (http://www.crazypencilmedia.com/demos/test-1.php) – user2921351

ответ

0

на изменения в первом раскрывающемся меню вам необходимо сделать вызов Ajax, который получит параметры, а затем вы можете заполнить следующий выпадающий

0

Попробуйте добавить одинарные кавычки $ страны

$ SQL1 = "SELECT * FROM states WHERE country_id = '". $ страна. "'";

или

$ SQL1 = "SELECT * FROM состояний WHERE country_id = '$ страны";

EDIT: Кроме того, вы можете только отозвать один результат. Ваше второе эхо будет проигнорировано JQuery, поскольку первое будет считаться успешным.

Вы должны отформатировать результаты по-разному.

Возможно, json закодированный массив.

В РНР:

while($row = mysql_fetch_array($result1)) 
{ 
     $data[$row['id']] = $row['state_name']; 
} 

echo json_encode($data); 

В вашем Jquery установлен DATATYPE: '' JSON

$.each(html,function(key,value){ 

     $("#get_state").append($('<option>',{ 
       value:key, 
      text: value 
    })); 
}); 
+0

Я пробовал это, но все равно никакой разницы – user2921351

Смежные вопросы