За последние 24 часа нас посетили 16553 программиста и 1679 роботов. Сейчас ищут 857 программистов ...

Выпадающий список.

Тема в разделе "PHP для новичков", создана пользователем Tony, 1 апр 2011.

  1. Tony

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

    С нами с:
    22 мар 2011
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Russia
    Проблема вот какая, есть выпадающий список. В списке выбираю какое либо значения:

    [​IMG]

    нажимаем отправить, выполняется SQL запрос в базу, а списки слетают на 1ю позицию после отображения результатов:

    [​IMG]

    Как сохранить списки?
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Tony
    эта... проверяешь в скрипте, что выбрато, ты же как-то используешь эту инфу для построения выборки.

    Ну при отрисовке селекта на каждом пункте проверяешь соответствие тому, что выбрано - и пишешь sected

    <option value='t1'".($city == $option['city'] ? ' selected' : '').">Чебурашка</option>
     
  3. Tony

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

    С нами с:
    22 мар 2011
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Russia
    PHP:
    1.  
    2. <html><body><p style="text-align: center;"><b>Воспользуйтесь фильтром для более детального поиска отеля</b></p>
    3. <form id="myForm" method="POST" action = "">
    4. <p style="text-align: center;">
    5. Уровень
    6.     <select name="level">
    7.       <option value="">Не учитывать</option>  
    8.       <option value="эконом">эконом</option>
    9.       <option value="эконом+">эконом+</option>
    10.       <option value="средний">средний</option>
    11.       <option value="средний+">средний+</option>
    12.       <option value="высокий">высокий</option>
    13.       </select>
    14. Город
    15.     <select name="city">
    16.     <option value="">Не учитывать</option>  
    17.     <option value="Адлер">Адлер</option>
    18.     <option value="Анапа">Анапа</option>
    19.     <option value="Геленджик">Геленджик</option>
    20.     <option value="Лазаревский">Лазаревский р-он</option>
    21.     <option value="Лоо">Лоо</option>
    22.     <option value="Сочи">Сочи</option>
    23.     <option value="Туапсе">Туапсе</option>
    24.     <option value="Хоста">Хоста</option>
    25.   </select> До моря
    26. <select name="sea">
    27.       <option value="">Не учитывать</option>  
    28.       <option value="1я линия">1я линия</option>
    29.       <option value="2я линия">2я линия</option>
    30.       <option value="3я линия">3я линия</option>
    31.       <option value="4я линия">4я линия</option>
    32.     </select> Питание
    33.     <select name="feed">
    34.       <option value="">Не учитывать</option>  
    35.       <option value="Без питания">Без питания</option>
    36.       <option value="Завтрак">Завтрак</option>
    37.       <option value="2х разовое">2х разовое</option>
    38.       <option value="3х разовое">3х разовове</option>
    39.       <option value="Все включено">Все включено</option>
    40.       <option value="Доп. плата">Доп. плата</option>
    41.     </select></[>
    42.     <p style="text-align: center;"><input type="submit"/></p>
    43. </form>
    44. </body>
    45. </html>
    46.  
    47. <?php
    48. include 'config.php'; // Загрузили конфиг
    49.  
    50. $city = $_POST['city']; // Загрузили переменную в массив
    51. $city = mysql_real_escape_string($city); // Экранируем массив для безопасной передачи в запрос
    52. $feed = $_POST['feed']; // Загрузили переменную в массив
    53. $feed = mysql_real_escape_string($feed); // Экранируем массив для безопасной передачи в запрос
    54. $sea = $_POST['sea']; // Загрузили переменную в массив
    55. $sea = mysql_real_escape_string($sea); // Экранируем массив для безопасной передачи в запрос
    56. $level = $_POST['level']; // Загрузили переменную в массив
    57. $level = mysql_real_escape_string($level); // Экранируем массив для безопасной передачи в запрос
    58.  
    59. $que = mysql_query("select * from hotels WHERE city LIKE '$city%' AND sea LIKE '%$sea' AND level LIKE '$level%' AND feed LIKE '%$feed%'");
    60. if($que) // Если все ОК то, рисуем шапку таблицы
    61. {
    62.   echo "<table id='myTable' class='tablesorter' width='100%'>";
    63.   echo "<thead><tr><th width='30%'>Название</th><th width='12%'>Уровень</th><th width='20%'>Город</th><th width='16%'>До моря</th><th width='22%'>Питание</th></tr></thead><tbody>";
    64.  
    65. while($hotels = mysql_fetch_array($que)) // Цикл на рисование строк
    66.   {
    67.     echo "<tr><td><a href='".$hotels['link']."'>".$hotels['name']."</a>&nbsp;</td><td>".$hotels['level']."&nbsp;</td><td>".$hotels['city']."
    68.    &nbsp;</td><td>".$hotels['sea']."&nbsp;</td><td>".  
    69.     $hotels['feed']."&nbsp; <br>".$hotels['feed_type']." </td></tr>";
    70.   }
    71.   echo "</tbody></table>";
    72. }
    73. else // если ничего не ОК, то выводим ошибку SQL запроса
    74. {
    75.   echo "<p><b>Error: ".mysql_error()."</b><p>";
    76.   exit();
    77. }
    78. ?>
    4 Часа, ничего не получилось
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Tony
    ты вобще прочел, что я пишу?

    ВСЕ опшнсы надо привести к виду:

    <option value='эконом+' ".($_POST['level'] == 'эконом+' ? ' checked' : '').">эконом+</option>
     
  5. Johny_PHP

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

    С нами с:
    26 окт 2010
    Сообщения:
    34
    Симпатии:
    0
    PHP:
    1. <option <?if (isset($_POST) && $_POST["level"] == "эконом") echo "selected='selected'";?> value="эконом">эконом</option>
     
  6. Tony

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

    С нами с:
    22 мар 2011
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Russia
    igordata
    Все перепробовал, все время ошибку выдает. работать отказывается.

    Johny_PHP
    твою сроку долго правил, но наконец то заработала:
    PHP:
    1.  echo "<option "; if (isset($_POST) && $_POST["level"] == "эконом") echo "selected='selected' "; echo "value='эконом'>эконом</option>";
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Tony
    покажи весь код который получился, плс
     
  8. Tony

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

    С нами с:
    22 мар 2011
    Сообщения:
    13
    Симпатии:
    0
    Адрес:
    Russia
    PHP:
    1. <?php
    2. include 'config.php'; // Загрузили конфиг
    3.  
    4. $city = $_POST['city']; // Загрузили переменную в массив
    5. $city = mysql_real_escape_string($city); // Экранируем массив для безопасной передачи в запрос
    6. $feed = $_POST['feed']; // Загрузили переменную в массив
    7. $feed = mysql_real_escape_string($feed); // Экранируем массив для безопасной передачи в запрос
    8. $sea = $_POST['sea']; // Загрузили переменную в массив
    9. $sea = mysql_real_escape_string($sea); // Экранируем массив для безопасной передачи в запрос
    10. $level = $_POST['level']; // Загрузили переменную в массив
    11. $level = mysql_real_escape_string($level); // Экранируем массив для безопасной передачи в запрос
    12.  
    13. echo "<form id='myForm' method='POST' action =''>";
    14. echo " Уровень: <select name='level'>";
    15. echo "<option value=''>Не учитывать</option>";
    16. echo "<option ";  if (isset($_POST) && $_POST["level"] == "эконом") echo "selected='selected' "; echo "value='эконом'>Эконом</option>";
    17. echo "<option ";  if (isset($_POST) && $_POST["level"] == "эконом+") echo "selected='selected' "; echo "value='эконом+'>Эконом+</option>";
    18. echo "<option ";  if (isset($_POST) && $_POST["level"] == "средний") echo "selected='selected' "; echo "value='средний'>Средний</option>";
    19. echo "<option ";  if (isset($_POST) && $_POST["level"] == "средний+") echo "selected='selected' "; echo "value='средний+'>Средний+</option>";
    20. echo "<option ";  if (isset($_POST) && $_POST["level"] == "высокий") echo "selected='selected' "; echo "value='высокий'>Высокий</option>";
    21. echo "</select>";
    22. echo " Город: <select name='city'>";
    23. echo "<option value=''>Не учитывать</option>";
    24. echo "<option ";  if (isset($_POST) && $_POST["city"] == "Адлер") echo "selected='selected' "; echo "value='Адлер'>Адлер</option>";
    25. echo "<option ";  if (isset($_POST) && $_POST["city"] == "Анапа") echo "selected='selected' "; echo "value='Анапа'>Анапа</option>";
    26. echo "<option ";  if (isset($_POST) && $_POST["city"] == "Геленджик") echo "selected='selected' "; echo "value='Геленджик'>Геленджик</option>";
    27. echo "<option ";  if (isset($_POST) && $_POST["city"] == "Лазаревский") echo "selected='selected' "; echo "value='Лазаревский'>Лазаревский</option>";
    28. echo "<option ";  if (isset($_POST) && $_POST["city"] == "Лоо") echo "selected='selected' "; echo "value='Лоо'>Лоо</option>";
    29. echo "<option ";  if (isset($_POST) && $_POST["city"] == "Сочи") echo "selected='selected' "; echo "value='Сочи'>Сочи</option>";
    30. echo "<option ";  if (isset($_POST) && $_POST["city"] == "Туапсе") echo "selected='selected' "; echo "value='Туапсе'>Туапсе</option>";
    31. echo "<option ";  if (isset($_POST) && $_POST["city"] == "Хоста") echo "selected='selected' "; echo "value='Хоста'>Хоста</option>";
    32. echo "</select>";
    33. echo " До моря: <select name='sea'>";
    34. echo "<option value=''>Не учитывать</option>";
    35. echo "<option ";  if (isset($_POST) && $_POST["sea"] == "1я линия") echo "selected='selected' "; echo "value='1я линия'>1я линия</option>";
    36. echo "<option ";  if (isset($_POST) && $_POST["sea"] == "2я линия") echo "selected='selected' "; echo "value='2я линия'>2я линия</option>";
    37. echo "<option ";  if (isset($_POST) && $_POST["sea"] == "3я линия") echo "selected='selected' "; echo "value='3я линия'>3я линия</option>";
    38. echo "<option ";  if (isset($_POST) && $_POST["sea"] == "4я линия") echo "selected='selected' "; echo "value='4я линия'>4я линия</option>";
    39. echo "</select>";
    40. echo " Питание: <select name='feed'>";
    41. echo "<option value=''>Не учитывать</option>";
    42. echo "<option ";  if (isset($_POST) && $_POST["feed"] == "Без питания") echo "selected='selected' "; echo "value='Без питания'>Без питания</option>";
    43. echo "<option ";  if (isset($_POST) && $_POST["feed"] == "Завтрак") echo "selected='selected' "; echo "value='Завтрак'>Завтрак</option>";
    44. echo "<option ";  if (isset($_POST) && $_POST["feed"] == "2х разовое") echo "selected='selected' "; echo "value='2х разовое'>2х разовое</option>";
    45. echo "<option ";  if (isset($_POST) && $_POST["feed"] == "3х разовое") echo "selected='selected' "; echo "value='3х разовое'>3х разовое</option>";
    46. echo "<option ";  if (isset($_POST) && $_POST["feed"] == "Доп. плата") echo "selected='selected' "; echo "value='Доп. плата'>Доп. плата</option>";
    47. echo "<option ";  if (isset($_POST) && $_POST["feed"] == "Все включено") echo "selected='selected' "; echo "value='Все включено'>Все включено</option>";
    48. echo "</select><p></p>";
    49.  
    50. echo "<p style='text-align: center;'><input type='submit' value='Отправить запрос'/> <INPUT type='reset' value='Отчистить'></p></form>";
    51.  
    52. $que = mysql_query("select * from hotels WHERE city LIKE '$city%' AND sea LIKE '%$sea' AND level LIKE '$level%' AND feed LIKE '%$feed%'");
    53. if($que) // Если все ОК то, рисуем шапку таблицы
    54. {
    55.   echo "<table id='myTable' class='tablesorter' width='100%'>";
    56.   echo "<thead><tr><th width='30%'>Название</th><th width='12%'>Уровень</th><th width='20%'>Город</th><th width='16%'>До моря</th><th width='22%'>Питание</th></tr></thead><tbody>";
    57.  
    58. while($hotels = mysql_fetch_array($que)) // Цикл на рисование строк
    59.   {
    60.     echo "<tr><td><a href='".$hotels['link']."'>".$hotels['name']."</a>&nbsp;</td><td>".$hotels['level']."&nbsp;</td><td>".$hotels['city']."
    61.    &nbsp;</td><td>".$hotels['sea']."&nbsp;</td><td>".  
    62.     $hotels['feed']."&nbsp; <br>".$hotels['feed_type']." </td></tr>";
    63.   }
    64.   echo "</tbody></table>";
    65. }
    66. else // если ничего не ОК, то выводим ошибку SQL запроса
    67. {
    68.   echo "<p><b>Error: ".mysql_error()."</b><p>";
    69.   exit();
    70. }
    71. ?>
     
  9. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Tony
    Циклы отменили?

    1. Формируется массив с городами, классами, питанием и др. array('type' => array( ... ))
    2. С помощью вложенных циклов формируется таблица

    Преимущества? А надо объяснять?
    Когда у тебя будет штук 10 столбцов и в каждом по сотне строк, например, то я сильно что-то сомневаюсь о твоём желании для каждой строки дописывать selected и созависимости, если такие возникнут.

    Исправить, расширить ил исузить плохо спроектированный проект практически невозможно без смены его архитектуры на ещё блее херовую.
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768