обновление раскрывающегося списка изменений другого раскрывающегося списка с помощью php-ajax

Я хочу изменить значение раскрывающегося списка города при смене страны. Ну вот теперь, когда я выбираю значение в стране, он говорит, что переменная $ r не определена. page: index.php

<form method="post" action="" name="form1"> <table width="60%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="150">Country</td> <td width="150"><select name="country" onChange="getCity('findcity.php?country='+this.value)"> <option value="">Select Country</option> <option value="1">USA</option> <option value="2">Canada</option> </select></td> </tr> <tr style=""> <td>City</td> <td ><div id="citydiv"><select name="city"> <option>Select City</option> </select></div></td> </tr> <tr> <td>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td>&nbsp;</td> <td>&nbsp;</td> </tr> </table> 

страница: findcity.php

 <?php $country=$_REQUEST['country']; $link = mysql_connect('localhost', 'root', ''); if (!$link) { die('Could not connect: ' . mysql_error()); } mysql_select_db('db_ajax'); $query="select city from city where countryid=$country"; $result=mysql_query($query); ?> <select name="city"> <? while($r=mysql_fetch_array($result)) { ?> <option value=""><?php echo $r['city'];?></option> <? } ?> </select> 

вот сценарий

 <script> function getXMLHTTP() { //function to return the xml http object var xmlhttp=false; try{ xmlhttp=new XMLHttpRequest(); } catch(e) { try{ xmlhttp= new ActiveXObject("Microsoft.XMLHTTP"); } catch(e){ try{ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e1){ xmlhttp=false; } } } return xmlhttp; } function getCity(strURL) { var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('citydiv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } </script> 

попробуйте использовать mysql_fetch_assoc вместо mysql_fetch_array

вы не можете написать «php» рядом с <?(write down php here) while($r=mysql_fetch_array($result)) { ". и выполните некоторую отладку, такую ​​как проверка, что вы получаете идентификатор страны или нет, чем проверяете запрос возвращает правильный результат или нет или распечатывает запрос в браузере и запускает этот запрос в базе данных.

измените свой код на ..

 <?php while($r=mysql_fetch_array($result)) { echo '<option value="">'.$r['city'].'</option>'; } ?> в <?php while($r=mysql_fetch_array($result)) { echo '<option value="">'.$r['city'].'</option>'; } ?>