За последние 24 часа нас посетили 18227 программистов и 1596 роботов. Сейчас ищут 927 программистов ...

как вписать while в конструкцию switch case

Тема в разделе "PHP для новичков", создана пользователем LAlexS, 9 июл 2012.

  1. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Понимаю, что неправильно, но не понимаю как сделать верно. Нужно вписать цикл while в конструкцию switch case

    Код (Text):
    1. include ("connect_db.php");
    2.     require("JsHttpRequest.php");
    3.     $JsHttpRequest=new JsHttpRequest("windows-1251");
    4.  
    5.     $country_list = mysql_query("SELECT * FROM countries ORDER BY country_name");
    6.     $city_list = mysql_query("SELECT * FROM cities ORDER BY city_name");
    7.  
    8.     while ($country = mysql_fetch_array($country_list))
    9.        {
    10.           switch($_REQUEST["country"]):
    11.           case $country['country_id']:
    12.           $html.= "<select name='city'>";
    13.           while ($city = mysql_fetch_array($city_list))
    14.           {
    15.              if ($city['country']==$country['country_id'])
    16.              {
    17.                 $html.= "<option value='".$city['city_id']."'>".$city['city_name']."</option>";
    18.              }
    19.           }
    20.           $html.= "</select>";
    21.           break;
    22.        mysql_data_seek($city_list, 0);
    23.        
    24.        default: $html=null;
    25.        endswitch;
    26.     }
    27.     echo $html;
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: switch case и while - проблема

    что это вобще планировалось сделать?
     
  3. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Re: switch case и while - проблема

    динамический select. Это вторая часть
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: switch case и while - проблема

    мдя
     
  5. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Re: switch case и while - проблема

    содержательно, конечно
     
  6. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Народ, помогите советом! Я понимаю, что
    Код (Text):
    1. switch($_REQUEST["country"]):
    должен за рамками цикла находится, но тогда ошибки пишет.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в чем ваша задумка? вы можете изложить её простым язком по шагам?
     
  8. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Задумка, как я уже сказал динамический select
    Первая часть. В ней есть родительский селект
    Код (Text):
    1. <script src="JsHttpRequest.js"></script>
    2.  
    3. <script>
    4. function doload(value){
    5. var req=new JsHttpRequest();
    6. req.onreadystatechange=function(){
    7. if(req.readyState==4) document.getElementById("result").innerHTML=req.responseText;}
    8. req.open(null,"poi2.php",true);
    9. req.send({country:value});}
    10. </script>
    11.  
    12. <form action="index.php" method="POST">
    13.  
    14. <select name="country" onchange="doload(this.value);">
    15. <?
    16. include ("connect_db.php");
    17. $country_list2 = mysql_query("SELECT * FROM countries ORDER BY country_name");
    18. while ($country2 = mysql_fetch_array ($country_list2))
    19.     {
    20.         echo "<option value='".$country2['country_id']."'>".$country2['country_name']."</option>";
    21.     }
    22. ?>
    23. </select>
    24. <br><br>
    25. <div id='result'></div>
    26. <br><br>
    27. <input type='submit' value='Отправить'>
    28. </form>
    Вторая часть это второй селект, который выводится при выборе в первом селекте. Так вот когда выбираешь в первом селекте, второй не появляется.
    Код второй части я привел в первом сообщении
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты понимаешь, что пхп работает на сервере?
     
  10. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    igorka ты был прав =)))
    Перевелся на mysqli_ (все без болезнено ничего не <матное слово>), в топку mysql_ его скоро походу выкинут))))

    По теме почему бы вам не посетить раздел:

    viewtopic.php?f=16&t=9420
     
  11. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    чувствую, что вопрос с подвохом ) Мне кажется, что правильный ответ - "да"

    Добавлено спустя 6 минут 4 секунды:
    Код, который у меня, рабочий! Но работает, если во втором файле вручную вписать все option, без цикла. Я не могу правильно вписать цикл в эту конструкцию. Я банально, не могу врубиться в синтаксис!!!
     
  12. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    У тебя там жесть какая-то. Зачем там вообще switch, если там нужна всего одна проверка? Достаточно if. Зачем выбирать из базы все страны? Зачем выбирать из базы все города всех стран? Пришёл запрос от пользователя - покажи мне города, которые относятся к стране с таким-то id. Всё, что тебе нужно получить от базы - это города запрошенной страны. Их и вывести. Тогда вообще никаких там switch-ей и if-ов не останется, просто выведешь результат запроса к б.д. в цикле и всё.
     
  13. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Я как-то зациклился на той конструкции и не подумал посмотреть на проблему с другой стороны! Спасибо! Все получилось!

    Может кому пригодится, вот код:

    Код (Text):
    1. require("JsHttpRequest.php");
    2. $JsHttpRequest=new JsHttpRequest("windows-1251");
    3.  
    4. if (isset($_REQUEST["country"]))
    5. {
    6.     $city_list = mysql_query("SELECT * FROM cities WHERE country=".$_REQUEST['country']." ORDER BY city_name");
    7.     $html.= "<select name='city'>";
    8.        
    9.     while ($city = mysql_fetch_array($city_list))
    10.     {
    11.         $html.= "<option value='".$city['city_id']."'>".$city['city_name']."</option>";
    12.     }
    13.     $html.= "</select><br>";
    14. }
    15. echo $html;
     
  14. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. $html.= "<select name='city'>"; 
    на

    Код (PHP):
    1. $html= "<select name='city'>"; 
    И зачем тебе 2 запроса?)


    Эх, как же вы устаните менять на mysqli_ в своих 1000 файлах по 500 запросов в каждом ))), :D.
    Не надо было так делать надо было делать в 1 функции =))) И случись такое чтобы только в 1 функции заменить =)
     
  15. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Второй запрос - просто забыл удалить, когда постил сюда.