Понимаю, что неправильно, но не понимаю как сделать верно. Нужно вписать цикл while в конструкцию switch case Код (Text): include ("connect_db.php"); require("JsHttpRequest.php"); $JsHttpRequest=new JsHttpRequest("windows-1251"); $country_list = mysql_query("SELECT * FROM countries ORDER BY country_name"); $city_list = mysql_query("SELECT * FROM cities ORDER BY city_name"); while ($country = mysql_fetch_array($country_list)) { switch($_REQUEST["country"]): case $country['country_id']: $html.= "<select name='city'>"; while ($city = mysql_fetch_array($city_list)) { if ($city['country']==$country['country_id']) { $html.= "<option value='".$city['city_id']."'>".$city['city_name']."</option>"; } } $html.= "</select>"; break; mysql_data_seek($city_list, 0); default: $html=null; endswitch; } echo $html;
Народ, помогите советом! Я понимаю, что Код (Text): switch($_REQUEST["country"]): должен за рамками цикла находится, но тогда ошибки пишет.
Задумка, как я уже сказал динамический select Первая часть. В ней есть родительский селект Код (Text): <script src="JsHttpRequest.js"></script> <script> function doload(value){ var req=new JsHttpRequest(); req.onreadystatechange=function(){ if(req.readyState==4) document.getElementById("result").innerHTML=req.responseText;} req.open(null,"poi2.php",true); req.send({country:value});} </script> <form action="index.php" method="POST"> <select name="country" onchange="doload(this.value);"> <? include ("connect_db.php"); $country_list2 = mysql_query("SELECT * FROM countries ORDER BY country_name"); while ($country2 = mysql_fetch_array ($country_list2)) { echo "<option value='".$country2['country_id']."'>".$country2['country_name']."</option>"; } ?> </select> <br><br> <div id='result'></div> <br><br> <input type='submit' value='Отправить'> </form> Вторая часть это второй селект, который выводится при выборе в первом селекте. Так вот когда выбираешь в первом селекте, второй не появляется. Код второй части я привел в первом сообщении
igorka ты был прав =))) Перевелся на mysqli_ (все без болезнено ничего не <матное слово>), в топку mysql_ его скоро походу выкинут)))) По теме почему бы вам не посетить раздел: viewtopic.php?f=16&t=9420
чувствую, что вопрос с подвохом ) Мне кажется, что правильный ответ - "да" Добавлено спустя 6 минут 4 секунды: Код, который у меня, рабочий! Но работает, если во втором файле вручную вписать все option, без цикла. Я не могу правильно вписать цикл в эту конструкцию. Я банально, не могу врубиться в синтаксис!!!
У тебя там жесть какая-то. Зачем там вообще switch, если там нужна всего одна проверка? Достаточно if. Зачем выбирать из базы все страны? Зачем выбирать из базы все города всех стран? Пришёл запрос от пользователя - покажи мне города, которые относятся к стране с таким-то id. Всё, что тебе нужно получить от базы - это города запрошенной страны. Их и вывести. Тогда вообще никаких там switch-ей и if-ов не останется, просто выведешь результат запроса к б.д. в цикле и всё.
Я как-то зациклился на той конструкции и не подумал посмотреть на проблему с другой стороны! Спасибо! Все получилось! Может кому пригодится, вот код: Код (Text): require("JsHttpRequest.php"); $JsHttpRequest=new JsHttpRequest("windows-1251"); if (isset($_REQUEST["country"])) { $city_list = mysql_query("SELECT * FROM cities WHERE country=".$_REQUEST['country']." ORDER BY city_name"); $html.= "<select name='city'>"; while ($city = mysql_fetch_array($city_list)) { $html.= "<option value='".$city['city_id']."'>".$city['city_name']."</option>"; } $html.= "</select><br>"; } echo $html;
Код (PHP): $html.= "<select name='city'>"; на Код (PHP): $html= "<select name='city'>"; И зачем тебе 2 запроса?) Эх, как же вы устаните менять на mysqli_ в своих 1000 файлах по 500 запросов в каждом ))), . Не надо было так делать надо было делать в 1 функции =))) И случись такое чтобы только в 1 функции заменить =)