2013-03-13 4 views
0

С помощью чтения & траление в Интернете Ive удалось создать HTML-форму & PHP-скрипт, который будет выполнять текстовый поиск на MySQL db, который у меня есть. Я могу получить его для поиска из текста, введенного в 1 поле в форме. Мне было интересно, как это расширить, чтобы я мог предоставить пользователям 2 поля &, они могут вводить данные в 1 или оба из них, чтобы уточнить их результаты, т.е. искать все записи с именем «Джон» или все записи с именем «Джон» & в город Дублин. Ive пробовал много манипуляций с запросом MySQL, но havent был успешным, чтобы заставить его работать удовлетворительно. Как я могу написать код ниже, чтобы заставить это работать?PHP Multi Form Field Search

Мой HTML форма код:

<form method="POST" action="search.php" name="formid"> 
    Name: <input type="text" name="query" /><br> 
    City: <input type="text" name="city" /><br> 
    <input type="submit" name="submit" value="Start Search" /> 
</form> 

& код РНР:

<?php 

include 'db_details.php'; 

$connection = mysql_connect($server, $user, $password); 

mysql_select_db($db, $connection); 

$query=mysql_real_escape_string($_POST['query']); 

$query = htmlspecialchars($query); 

$result=mysql_query("SELECT * FROM colour WHERE (firstname LIKE '%".$query."%') ", $connection) or die ("Cannot run query"); 

echo "<h2>Search Results</h2>"; 

while ($row = mysql_fetch_assoc($result)) 
{ 
    foreach ($row as $attribute) 
    echo "{$attribute} "; 
    echo "<br>"; 
} 

mysql_close(); 
?> 
+1

Что ваши таблицы похожи (схемы)? Что ты уже испробовал ? – Daedalus

+0

добавьте больше полей, проверьте, заполнены ли они, создайте строку 'WHERE', чтобы добавить в quary на основе заполненных полей – UnholyRanger

ответ

0

Просто поместите значение поля города в переменной $city:

$city = mysql_real_escape_string($_POST['city']); 

$city = htmlspecialchars($city); 

Затем запросите его следующим образом:

$result = mysql_query("SELECT * FROM colour WHERE (firstname LIKE '%".$query."%' OR city LIKE '%".$city."%') ", $connection) or die ("Cannot run query"); 

Он будет запрашивать все результаты от colour где Firstname походит $query или город, как $city

Примечание: не будет никакого приоритета в этом подходе, цвета строки, которые соответствуют обоим условиям не будет иметь с более высоким приоритетом то строки с только 1 матч

для более продвинутых метода поиска я бы посоветовал посмотреть в Full-text search как хорошо