MYSQL Поиск - Форма PHP - PullRequest
       2

MYSQL Поиск - Форма PHP

0 голосов
/ 02 августа 2011
<div class="searchbox">
    <form action="Search.php" method="get">
       <fieldset>
          <input id="$search" placeholder="Search for a Product" type="text" />
          <input id="submit" type="hidden" />
       </fieldset>
    </form>
</div>
<div id="content">
<ul>        
<?php

$host = "xxx"; 
$user = "xxx"; 
$pass = "xxx"; 
$db = "xxx"; 

mysql_connect($host, $user, $pass); 
mysql_select_db($db); 
unset($host,$user,$pass,$db); 


//$query = "SELECT produkt FROM checklist WHERE id IS "1";  
$query = "SELECT produkt FROM checklist WHERE id LIKE '%$search%'";  
$result = mysql_query($query); 
  while ($row = mysql_fetch_array($result)) 
{ 

echo "<li><span class='name'><b>$row[produkt]</b><br /></span><span class='comment'><i>Tierische Stoffe: </i>$row[tierisch]</span><i> Alkohol: </i>$row[alkohol]</span></span></li>";
  }  
?>

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

Так вот как?

<div class="searchbox">
    <form action="Search.php" method="get">
       <fieldset>
          <input id="search" placeholder="Search for a Product" type="text" />
          <input id="submit" type="hidden" />
       </fieldset>
    </form>
</div>
<div id="content">
<ul>        
<?php

$host = "xxx"; 
$user = "xxx"; 
$pass = "xxx"; 
$db = "xxx"; 

mysql_connect($host, $user, $pass); 
mysql_select_db($db); 
unset($host,$user,$pass,$db); 

$search = $_POST['search'];

$query = "SELECT produkt FROM checklist WHERE id LIKE '%".$_POST['search']."%'";
//$query = "SELECT produkt FROM checklist WHERE id LIKE '%$search%'";  
$result = mysql_query($query); 

Ответы [ 3 ]

2 голосов
/ 02 августа 2011
<input id="$search" placeholder

Вам нужен $ здесь?Он должен выглядеть следующим образом:

<input id="search" placeholder

Чтобы получить доступ к переменным GET из вашего поискового запроса, используйте массив $ _GET, например:

$query = "SELECT produkt FROM checklist WHERE id LIKE '%{$_GET['search']}%'";  

Но чтобы быть в безопасности и избегатьMySQL инъекции, вы можете сделать это следующим образом:

$search = mysql_real_escape_string($_GET['search']);
$query = "SELECT produkt FROM checklist WHERE id LIKE '%{$search}%'";  

Редактировать: забыли атрибут имени n ввода:

<input name="search" id="search" placeholder="Search for a Product" type="text" />

затем в вашем php

$search = mysql_real_escape_string($_GET['search']);
$query = "SELECT produkt FROM checklist WHERE id LIKE '%{$search}%'";

$result = mysql_query($query); 
while ($row = mysql_fetch_array($result)){  
    echo "<li><span class='name'><b>{$row['produkt']}</b></span></li>";
} 
1 голос
/ 02 августа 2011

Это:

 <input id="$search" placeholder="Search for a Product" type="text" />

Должно быть (без идентификатора $):

<input id="search" placeholder="Search for a Product" type="text" />

И ваш запрос должен быть:

$query = "SELECT produkt FROM checklist WHERE id LIKE '%".$_POST['search']."%'";  

Переменные из формпередать в скрипт (в данном случае это та же страница), поэтому вам нужно получить их с помощью $ _POST.

0 голосов
/ 02 августа 2011

Вы не установили значение $search. Вам нужно обновить форму, чтобы включить элемент с name="search" и добавить строку PHP, как показано ниже, перед запросом:

$search = $_GET['search'];

Вы также захотите экранировать ввод, чтобы избежать внедрения SQL.

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