[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск: MySQL и PHP. Помогите подправить скрипт.
Egoist
Есть скрипт поиска по MySQL, сейч покажу код, может кому надо будет.<br><br>Все работает, но вопрос вот в чем, к примеру в базе данных есть названия: "Wapu MAN G 90, <br>Wapu MAN F 90, Wapu MAN F 2000, Ean code 4046326175011", ну и так далее. Когда ввожу поиск одного из них (например Wapu MAN G 90), выводятся все 400 позиций с этими названиями. <br><br>Что нужно изменить в этом скрипте, чтобы поиск был более точен.<br><br>Помогите, пожалуйста.<br><br>Заранее спасибо.<br><br>P.S. Если у кого-то завалялся скрипт поиска по базе, скиньте, пожалуйста.<br><br>С уважением,<br><br>
<?php 
 
// Данные для подключения к БД MySql($db,$user,$pass,$server это имя БД, пользователь БД, пароль БД и сервер БД соответсвенно) 
 
$db = "price"; 
 
$user = "root"; 
 
$pass = ""; 
 
$server = "localhost"; 
 
$db_data = array(//Очень важный массив:$db_data[table]-это имя таблицы для поиска, $db_data[search]-массив имен полей в которых искать информацию, будьте осторожны!Не добавляйте все поля подряд, а то получится очень громоздкий запрос. 
 
"table" => "geri", 
 
"search" => array("field0", "field1", "field2", "field3", "field4")); 
 
/* 
 
В качестве тестирования я использовал следующую таблицу: 
 
CREATE TABLE 'geri' ( 
 
'id' int(11) NOT NULL auto_increment, 
 
'name' varchar(255) NOT NULL default '', 
 
'last' varchar(255) NOT NULL default '', 
 
'adress' varchar(255) NOT NULL default '', 
 
PRIMARY KEY ('id') 
 
); 
 
*/ 
 
// Пробуем подключиться 
 
if (!mysql_connect($server, $user, $pass)) die('Проверьте настройки для подключения к серверу MySql'); 
 
//  
 
if (!mysql_select_db($db)) die('Проверьте существование указанной базы данных'); 
 
echo "<form method='post'>";// 
 
echo "<input type='text' size=48 name='search' value='" . (isset($_POST['search'])?$_POST['search']:'') . "'>";// 
 
echo "<input type='hidden' name='submit' value='1'><input type='submit' value='Найти!'>";// 
 
//  
 
if (!empty($_POST['submit'])) {// 
 
$search = $_POST['search'];// 
 
$search=addslashes($search);//. 
 
$words = explode(" ", $search);// 
 
$sql = "SELECT * FROM $db_data[table] WHERE ";// 
 
$i = 0;// 
 
 
 
foreach($db_data['search'] as $v) {// 
 
foreach($words as $v1) {// 
 
if ($i != 0)// 
 
$sql .= "OR";//  
 
$sql .= " $v LIKE '%$v1%' ";// 
 
$i++;//увеличиваем счетчик 
 
 
} 
 
 
} 
 
if($result=mysql_query($sql))// 
 
{ 
 
if(mysql_num_rows($result)){// 
 
while($r=mysql_fetch_array($result)){// 
 
echo "
<b>WG $r[field0]</b> 
Geri $r[field1], Описание $r[field2], Ean code $r[field3], Netto/NET P90 $r[field4], 
"; 
 
} 
 
} 
 
else// 
 
{ 
 
echo "Поиск не дал результатов."; 
 
} 
 
} 
 
else 
 
{ 
 
echo "Произошла ошибка при поиске, пожалуйста обратитесь к администратору Веб-сайта за разьяснением.";// 
 
} 
 
} 
 
?>




Спустя 1 час, 42 минуты, 51 секунда (8.08.2006 - 08:27) Leningrad00 написал(а):
А что вы хотели, он ищет по like.
Первое, что приходит в голову, сделать несколько проходов: один на строгое соответствие, потом по like. Выводить вначале результаты первого прохода, потом второго, заранее исключив из них совпадения.

Спустя 6 часов, 55 минут, 47 секунд (8.08.2006 - 15:22) Egoist написал(а):
QUOTE(Leningrad00)
А что вы хотели, он ищет по like.
Первое, что приходит в голову, сделать несколько проходов: один на строгое соответствие, потом по like. Выводить вначале результаты первого прохода, потом второго, заранее исключив из них совпадения.

А как это сделать?

Спустя 44 минуты, 22 секунды (8.08.2006 - 16:07) max_ru написал(а):
$sql .= " $v LIKE '%$v1%' ";
замени на
$sql .= "$v = '$v1'";
Но я тебе этого не говорил ;)

Спустя 44 минуты, 36 секунд (8.08.2006 - 16:51) Egoist написал(а):
QUOTE(max_ru)
$sql .= " $v LIKE '%$v1%' ";
замени на
$sql .= "$v = '$v1'";
Но я тебе этого не говорил ;)

Посоветуйте, пожалуйста, где можно еще посмотреть примеры скриптов поиска по MYSQL, мужет у вас есть?

Спустя 1 час, 6 минут, 39 секунд (8.08.2006 - 17:58) vasa_c написал(а):


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.