За последние 24 часа нас посетил 66931 программист и 1641 робот. Сейчас ищут 944 программиста ...

Выпадающий список, выбо из базы.

Тема в разделе "PHP для новичков", создана пользователем Dima4321, 22 ноя 2010.

  1. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    HTML:
    1. <title>HTML формы</title>
    2. </head>
    3. <form action="action.php" method="GET" name="bill">
    4. <select name="menu" size="1">
    5. <option value="first">All</option>
    6. <option selected="selected" value="second">Pop</option>
    7. <option value="third">Rock</option>
    8. <option value="fourth">Metal</option>
    9. <option value="five">Jazz</option>
    10. <option value="six">Club</option>
    11. </form>
    12.  
    13. </html>
    обработчик


    PHP:
    1. <?php
    2.  include('conn.php');
    3.  if ($_GET['option value']="first") {
    4.  $sql = 'SELECT * FROM groups WHERE  GENRE = "POP"';
    5.  $data = mysql_query($sql);
    6.  while($row = mysql_fetch_row($data))
    7.  
    8.  
    9. echo $row[1];
    10.  
    11. }
    12.  
    13.  
    14.  ?>
    Отдельно обработчик пямым выовом работает. А вот с помощью html формы нет..((

    if ($_GET['option value']="first") ---думаю ошибка здесь ??
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    после while должна быть скобочка {
     
  3. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    PHP:
    1.        <?php
    2.  include('conn.php');
    3.  if ($_GET['option value']="first") {
    4.  $sql = 'SELECT * FROM groups WHERE  GENRE = "POP"';
    5.  $data = mysql_query($sql);
    6.  while($row = mysql_fetch_row($data))  {
    7.  
    8.  
    9. echo $row[1];
    10.  
    11. }  }
    12.  
    13.  
    14.  ?>
    Добавил и после while и в конце для закрытия одну и все равно ничего не изменилось
     
  4. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    а ссори по-видимому работает но странно.

    т.е. я выбираю пункт из выпадающего списка и еще оказывается должен нажать enter

    а как сделать так чтобы действие происходило сразу при выборе мышкой без enter
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    на яваскрипте повесить на событие сабмит формы
     
  6. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    а без явы не обойтись ?? ((

    я пока вот так сделал но это конечно варварство..))

    HTML:
    1. <input type=submit value="GO">

    Кстати вот немного усложнил задачу




    HTML:
    1. <title>HTML формы</title>
    2. </head>
    3. <form action="action.php" method="GET" name="drop_down_box">
    4. <select name="menu" size="3">
    5. <option value="ALL">All</option>
    6. <option value="POP">Pop</option>
    7. <option value="ROCK">Rock</option>
    8. <option value="METAL">Metal</option>
    9. <option value="JAZZ">Jazz</option>
    10. <option value="BLUES">BLUES</option>
    11. <option value="CLUB">Club</option>
    12. <br>
    13. <br>
    14. <input type=submit value="GO">
    15. </form>
    16.  
    17. </html>

    PHP:
    1.        <?php
    2.  include('conn.php');
    3.  if ($_GET['option value']="POP") {
    4.  $sql = 'SELECT * FROM groups WHERE  GENRE = "POP"';
    5.  $data = mysql_query($sql);
    6.  while($row = mysql_fetch_row($data))  {
    7.  
    8.  
    9. echo $row[1];
    10. echo "<br>";
    11.  
    12. }  }
    13.  
    14. if ($_GET['option value']="BLUES") {
    15.  $sql = 'SELECT * FROM groups WHERE  GENRE = "BLUES"';
    16.  $data = mysql_query($sql);
    17.  while($row = mysql_fetch_row($data))  {
    18.  
    19.  
    20. echo $row[1];
    21. echo "<br>";
    22.  
    23. }  }
    24.  
    25. if ($_GET['option value']="ROCK") {
    26.  $sql = 'SELECT * FROM groups WHERE  GENRE = "ROCK"';
    27.  $data = mysql_query($sql);
    28.  while($row = mysql_fetch_row($data))  {
    29.  
    30.  
    31. echo $row[1];
    32. echo "<br>";
    33.  
    34. }  }
    35.  
    36.  
    37. if ($_GET['option value']="СLUB") {
    38.  $sql = 'SELECT * FROM groups WHERE  GENRE = "CLUB"';
    39.  $data = mysql_query($sql);
    40.  while($row = mysql_fetch_row($data))  {
    41.  
    42.  
    43. echo $row[1];
    44. echo "<br>";
    45.  
    46. }  }
    47.  
    48.  
    49.  ?>

    Почему -то выбирает в обработчик выводит все пункты согласно и року и попу и джазу и клубу...хотя например выбираю джаз.

    Может надо ставить break или что-то подобное..??))
     
  7. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    c
    строка в браузере выглядит та сайт/action.php?menu=POP

    пробовал менять if ($_GET['option value']="POP" на if ($_GET['menu']="POP"
     
  8. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    чувак, во первых так
    Код (Text):
    1.  
    2. include('conn.php');
    3.  
    4. $genre = mysql_real_escape_string($_GET['option value']);
    5.  
    6.   $sql = "SELECT * FROM groups WHERE  GENRE = '" . $genre . "'";
    7.    $data = mysql_query($sql);
    8.    while($row = mysql_fetch_row($data))  {
    9.  
    10.  
    11.   echo $row[1];
    12.   echo "<br>";
    13.  
    14.   }
    Вместо всего твоего кода
     
  9. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    во-вторых вместо $_GET['option value'] должно быть по идее $_GET['menu']

    Ты сделай после include('conn.php');

    Код (Text):
    1. echo "<pre>";print_r($_GET);die();
    - и увидишь что у тебя в массиве $_GET приходит
     
  10. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Cпасибо дружище заменил на menu проверил что в адресной строке отдает обработчику.) А там как раз menu

    я об этом еще выше писал ))


    Код корректен, также хотел ущнать а можно было задачу реализовать с помощью конструкции case ??

    PHP:
    1. <?php
    2. include('conn.php');
    3.  
    4. $genre = mysql_real_escape_string($_GET['menu']);
    5.  
    6.   $sql = "SELECT * FROM groups WHERE  GENRE = '" . $genre . "'";
    7.    $data = mysql_query($sql);
    8.    while($row = mysql_fetch_row($data))  {
    9.  
    10.  
    11.   echo $row[1];
    12.   echo "<br>";
    13.  
    14.   }
    15.  
     
  11. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Можно, но незачем. Если жанры фиксированные, я бы жесткую проверку сделал
    PHP:
    1. <?php
    2.  
    3. include('conn.php');
    4.  
    5. $genres_list = array('POP', 'BLUES', 'ROCK', 'CLUB');
    6.  
    7. if (!in_array($_GET['menu'], $genres_list)) die('Hacker? He-he-he');
     
  12. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    с проверкой понятно. Она сработает если массив с определенным жанром отсутсвует. т.е. напрмер стилю club не соответствует не одна группа.


    Но мне все таки по-прежнему интересно почему мой код не выводит определенные массивы , а выводит сразу все прописанные в if .

    PHP:
    1. <?php
    2.   include('conn.php');
    3.   if ($_GET['menu']="POP") {
    4.   $sql = 'SELECT * FROM groups WHERE  GENRE = "POP"';
    5.   $data = mysql_query($sql);
    6.   while($row = mysql_fetch_row($data))  {
    7.  
    8.  
    9.  echo $row[1];
    10.  echo "<br>";
    11.  
    12.  }  }
    13.  
    14.  if ($_GET['menu']="BLUES") {
    15.   $sql = 'SELECT * FROM groups WHERE  GENRE = "BLUES"';
    16.   $data = mysql_query($sql);
    17.   while($row = mysql_fetch_row($data))  {
    18.  
    19.  
    20.  echo $row[1];
    21.  echo "<br>";
    22.  
    23.  }  }
    24.  
    25.  if ($_GET['menu']="ROCK") {
    26.   $sql = 'SELECT * FROM groups WHERE  GENRE = "ROCK"';
    27.   $data = mysql_query($sql);
    28.   while($row = mysql_fetch_row($data))  {
    29.  
    30.  
    31.  echo $row[1];
    32.  echo "<br>";
    33.  
    34.  }  }
    35.  
    36.  
    37.  if ($_GET['menu']="СLUB") {
    38.   $sql = 'SELECT * FROM groups WHERE  GENRE = "CLUB"';
    39.   $data = mysql_query($sql);
    40.   while($row = mysql_fetch_row($data))  {
    41.  
    42.  
    43.  echo $row[1];
    44.  echo "<br>";
    45.  
    46.  }  }
    47.  
    48.  
    49.   ?>
     
  13. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    вместо $_GET['menu']="POP" должно быть $_GET['menu']=="POP"

    Пропустил второй знак =, т.е. вместо сравнения делал присваивание