Два поля поиска (одно из раскрывающегося списка) - PHP & MYSQL Code - PullRequest
0 голосов
/ 23 июля 2011

Мне действительно нужна помощь в этом, так как я вырываю волосы !!!У меня есть два поля, одно из которых является полем ввода, а другое - выпадающим списком, в котором выполняется поиск в базе данных и отображаются результаты, однако я не могу понять это ... вот то, что у меня есть до сих пор ...

Это фактическая форма поиска:

<form id="myform" name="myform" action="<?php echo $_SERVER['PHP_SELF']?>"             method="get"><br />
<div class="T1"><br /><p></div> &nbsp;&nbsp;<input name="term" type="text" value="<?    php echo $_GET['searched']; ?>" size="10" maxlength="4" placeholder="e.g.     BS1"/> 
<select>
  <option value="">I feel like...</option>
  <option value="">Anything</option>
  <option value="Indian">Indian</option>
  <option value="Chinese">Chinese</option>
  <option value="Thai">Thai</option>
</select>
<input type="submit" name="submit" value="Go"/>
</form>

И это код PHP:

<?php

if (isset($_GET['submit'])){
mysql_connect ("host", "user","password")  or die (mysql_error());
mysql_select_db ("database");
$term = $_GET['term'];  
$term = $_GET['option value'];  

}

else

$sql = mysql_query("select pagetitle from Restaurant where extra like '%$term%' and     showing like '1'"); 
$sql = mysql_query("select cuisine from Restaurant where cuisine like 'option value'     and showing like '1'"); 

echo Restaurants in $term and Cuisine $option value:";


}

while ($row = @mysql_fetch_array($sql)){
    echo ''.$row['pagetitle'];
    echo '<br/>';

}

}

?>

В базе данных есть таблица с двумя ресторанами, одна из которых называется Ресторан, одна из которых называется 'Extra », который содержит почтовый индекс, а другой называется« Kitchen », который содержит кухню.Я бы хотел вернуть список ресторанов, которые соответствуют как «Extra», так и «Kitchen». Любая помощь будет высоко оценена.

Ответы [ 2 ]

0 голосов
/ 23 июля 2011

Я не уверен, для чего «показ», но я предполагаю, что это запись, которая может быть отображена. Первое, что нужно сделать, это обновить ваш запрос:

$sql = mysql_query("select pagetitle, cuisine from Restaurant where (extra like '%$term%') and     (showing like '1') and (cuisine like 'option value')");

Вам также необходимо проверить, не указал ли пользователь опцию или не выбрал «что-нибудь», в этом случае запрос должен быть немного изменен:

$sql = mysql_query("select pagetitle, cuisine from Restaurant where (extra like '%$term%') and     (showing like '1') and (cuisine like 'option value' or 'option value' = '')"); 
0 голосов
/ 23 июля 2011
  • Повтор $ _SERVER ['PHP_SELF'] или $ _GET ['искомый'] в любом месте вашего скрипта (даже в действии формы) откроет ваш сайт для атак XSS.Не делайте этого, пока вы не очистите их в первую очередь.

  • Для всех новых проектов рекомендуется использовать подготовленные операторы для запросов MySQL.Вы можете сделать это с MySQL или PDO.Ваш код просто запрашивает SQL-инъекцию, судя по тому, что вы пытаетесь сделать.

  • В вашем коде отсутствует скобка, и у вас есть несколько дополнительных в конце.Также после эха вы пропускаете кавычку.Я не уверен, что там происходит.Попытайтесь исправить это.

  • Что с @ перед mysql_fetch_array ()?На самом деле очень мало случаев, когда @ нужно использовать в PHP.Обычно это показатель того, что где-то в вашем коде есть какая-то ошибка, которая должна быть исправлена, а не подавлена.

  • Вам нужен атрибут имени, если вы хотите его использоватьв PHP.

  • В вашем SQL-запросе не следует использовать LIKE, когда вы должны использовать equals.Кроме того, вы не должны заключать в кавычки целые числа.

  • Почему вы выводите пустую строку вроде echo ''.$somevar;?Просто введите переменную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...