HTML: <html> <title>HTML формы</title> </head> <body> <form action="action.php" method="GET" name="bill"> <select name="menu" size="1"> <option value="first">All</option> <option selected="selected" value="second">Pop</option> <option value="third">Rock</option> <option value="fourth">Metal</option> <option value="five">Jazz</option> <option value="six">Club</option> </select> </form> </html> обработчик PHP: <?php include('conn.php'); if ($_GET['option value']="first") { $sql = 'SELECT * FROM groups WHERE GENRE = "POP"'; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) echo $row[1]; } ?> Отдельно обработчик пямым выовом работает. А вот с помощью html формы нет..(( if ($_GET['option value']="first") ---думаю ошибка здесь ??
PHP: <?php include('conn.php'); if ($_GET['option value']="first") { $sql = 'SELECT * FROM groups WHERE GENRE = "POP"'; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) { echo $row[1]; } } ?> Добавил и после while и в конце для закрытия одну и все равно ничего не изменилось
а ссори по-видимому работает но странно. т.е. я выбираю пункт из выпадающего списка и еще оказывается должен нажать enter а как сделать так чтобы действие происходило сразу при выборе мышкой без enter
а без явы не обойтись ?? (( я пока вот так сделал но это конечно варварство..)) HTML: <input type=submit value="GO"> Кстати вот немного усложнил задачу HTML: <html> <title>HTML формы</title> </head> <body> <form action="action.php" method="GET" name="drop_down_box"> <select name="menu" size="3"> <option value="ALL">All</option> <option value="POP">Pop</option> <option value="ROCK">Rock</option> <option value="METAL">Metal</option> <option value="JAZZ">Jazz</option> <option value="BLUES">BLUES</option> <option value="CLUB">Club</option> </select> <br> <br> <input type=submit value="GO"> </form> </html> PHP: <?php include('conn.php'); if ($_GET['option value']="POP") { $sql = 'SELECT * FROM groups WHERE GENRE = "POP"'; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) { echo $row[1]; echo "<br>"; } } if ($_GET['option value']="BLUES") { $sql = 'SELECT * FROM groups WHERE GENRE = "BLUES"'; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) { echo $row[1]; echo "<br>"; } } if ($_GET['option value']="ROCK") { $sql = 'SELECT * FROM groups WHERE GENRE = "ROCK"'; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) { echo $row[1]; echo "<br>"; } } if ($_GET['option value']="СLUB") { $sql = 'SELECT * FROM groups WHERE GENRE = "CLUB"'; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) { echo $row[1]; echo "<br>"; } } ?> Почему -то выбирает в обработчик выводит все пункты согласно и року и попу и джазу и клубу...хотя например выбираю джаз. Может надо ставить break или что-то подобное..??))
c строка в браузере выглядит та сайт/action.php?menu=POP пробовал менять if ($_GET['option value']="POP" на if ($_GET['menu']="POP"
чувак, во первых так Код (Text): include('conn.php'); $genre = mysql_real_escape_string($_GET['option value']); $sql = "SELECT * FROM groups WHERE GENRE = '" . $genre . "'"; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) { echo $row[1]; echo "<br>"; } Вместо всего твоего кода
во-вторых вместо $_GET['option value'] должно быть по идее $_GET['menu'] Ты сделай после include('conn.php'); Код (Text): echo "<pre>";print_r($_GET);die(); - и увидишь что у тебя в массиве $_GET приходит
Cпасибо дружище заменил на menu проверил что в адресной строке отдает обработчику.) А там как раз menu я об этом еще выше писал )) Код корректен, также хотел ущнать а можно было задачу реализовать с помощью конструкции case ?? PHP: <?php include('conn.php'); $genre = mysql_real_escape_string($_GET['menu']); $sql = "SELECT * FROM groups WHERE GENRE = '" . $genre . "'"; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) { echo $row[1]; echo "<br>"; }
Можно, но незачем. Если жанры фиксированные, я бы жесткую проверку сделал PHP: <?php include('conn.php'); $genres_list = array('POP', 'BLUES', 'ROCK', 'CLUB'); if (!in_array($_GET['menu'], $genres_list)) die('Hacker? He-he-he');
с проверкой понятно. Она сработает если массив с определенным жанром отсутсвует. т.е. напрмер стилю club не соответствует не одна группа. Но мне все таки по-прежнему интересно почему мой код не выводит определенные массивы , а выводит сразу все прописанные в if . PHP: <?php include('conn.php'); if ($_GET['menu']="POP") { $sql = 'SELECT * FROM groups WHERE GENRE = "POP"'; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) { echo $row[1]; echo "<br>"; } } if ($_GET['menu']="BLUES") { $sql = 'SELECT * FROM groups WHERE GENRE = "BLUES"'; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) { echo $row[1]; echo "<br>"; } } if ($_GET['menu']="ROCK") { $sql = 'SELECT * FROM groups WHERE GENRE = "ROCK"'; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) { echo $row[1]; echo "<br>"; } } if ($_GET['menu']="СLUB") { $sql = 'SELECT * FROM groups WHERE GENRE = "CLUB"'; $data = mysql_query($sql); while($row = mysql_fetch_row($data)) { echo $row[1]; echo "<br>"; } } ?>
вместо $_GET['menu']="POP" должно быть $_GET['menu']=="POP" Пропустил второй знак =, т.е. вместо сравнения делал присваивание