2014-02-17 7 views
0

Я пишу код, который возвращает результаты события. В этой таблице есть несколько полей, заполненных данными из MySQL, включая ссылку для загрузки для сертификата.Таблица данных MySQL в PHP

Но теперь мне нужно добавить поле поиска. Это то, что я сделал до сих пор:

<?php  
include "open.php"; 

$sql = "SELECT * FROM results"; 

if (isset($_POST['search'])){ 

    $search_term = mysql_real_escape_string($_POST['search_box']); 

    $sql .= "WHERE Name = '{$search_term}' "; 
    $sql .= "OR Place = '{$search_term}'"; 
} 

$query = mysql_query($sql) or die(mysql_error());   
?> 

<form name="search_form" method="POST" action="teste3.php">   
    Search: <input type="text" name="search_box" value="" /> 
    <input type="submit" name="search" value="Search"> 
</form> 

<table width="70%" cellpadding="5" cellspace="5">   
    <tr>    
     <td> 
      <strong>Place</strong> 
     </td> 
     <td> 
      <strong>Name</strong> 
     </td> 
     <td> 
      <strong>Category</strong> 
     </td> 
     <td> 
      <strong>Certificate</strong> 
     </td> 
    </tr> 

    <?php while ($row = mysql_fetch_array($query)){ ?> 
    <tr>       
     <td><?php echo $row['Place']; ?></td> 
     <td><?php echo $row['Name']; ?></td> 
     <td><?php echo $row['Category']; ?></td> 
     <td> 
      <a href="http://(...)/<?php echo $row['Place']; ?>.pdf" 
      style="color: #000000" target="blank">Download Certificate</a> 
     </td> 
    </tr> 
    <?php } ?>     
</table> 

Но по какой-то причине, когда я делаю тестовый поиск, браузер повторяет:

У Вас есть ошибка в вашем SQL синтаксиса; в руководстве, соответствует версии сервера MySQL для корректного синтаксиса использовать NEAR «=„Улисс“или место =„Улисс“» в строке 1.

+1

вы пропустили пробел между '' resultados' и WHERE', когда вы их конкатенацию. – andrewsi

+0

Вот и все. Благодарю. –

ответ

3

Вы должны обеспечить некоторое пространство как

$sql .= " WHERE Nome = '{$search_term}' "; 
$sql .= "OR Lugar = '{$search_term}'"; 

, как вы сделали ваш запрос будет в

SELECT * FROM resultadosWHERE Nome = 'some val' OR Lugar = 'some val' 
+0

Спасибо. Когда я ищу из чисел, он работает, но я думаю, что мне нужно что-то другое для поиска имен. Уже пробовал '% {$ search_term}%', но не думаю, что его достаточно. Вы знаете, почему он не работает? –

+0

, если вы ищете строку, она должна работать так, как где col = 'val', и если вы укажете, где col LIKE '% val%' найдет соответствующий шаблон :-) –

+0

Я знал, что забыл что-то! Благодаря! : D –

Смежные вопросы