Я хочу изменить значение раскрывающегося списка города при смене страны. Ну вот теперь, когда я выбираю значение в стране, он говорит, что переменная $ 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> </td> <td> </td> </tr> <tr> <td> </td> <td> </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>'; } ?>