|
|
|
|
|
для: cheops
(08.08.2006 в 11:32)
| | Поставил, но оно теперь вообще ничего не находит ;)
Спасибо за помощь, в любом случае. | |
|
|
|
|
|
|
|
для: cheops
(08.08.2006 в 11:32)
| | Спасибо, но когда меняю, выдает:
Parse error: parse error | |
|
|
|
|
|
|
|
для: Egoist
(08.08.2006 в 06:53)
| | Строку
замените на
<?php
$sql .= "AND";//
?>
|
| |
|
|
|
|
|
|
|
для: Egoist
(08.08.2006 в 06:53)
| | >Все работает, но вопрос вот в чем, к примеру в базе данных
>есть названия: "Wapu MAN G 90,
>Wapu MAN F 90, Wapu MAN F 2000, Ean code 4046326175011", ну
>и так далее. Когда ввожу поиск одного из них (например Wapu
>MAN G 90), выводятся все 400 позиций с этими названиями.
>
>Что нужно изменить в этом скрипте, чтобы поиск был более
>точен.
Чтобы было точнее - надо искать составляющие запроса через AND, а не через OR
>if ($i != 0)//
>
>$sql .= "OR";//
>
>$sql .= " $v LIKE '%$v1%' ";//
Чтобы в искомом было "Wapu" И "MAN" И "G" И "90", а не "Wapu" ИЛИ "что-нибудь ещё". | |
|
|
|
|
|
|
| Есть скрипт поиска по MySQL, сейч покажу код, может кому надо будет.
Все работает, но вопрос вот в чем, к примеру в базе данных есть названия: "Wapu MAN G 90,
Wapu MAN F 90, Wapu MAN F 2000, Ean code 4046326175011", ну и так далее. Когда ввожу поиск одного из них (например Wapu MAN G 90), выводятся все 400 позиций с этими названиями.
Что нужно изменить в этом скрипте, чтобы поиск был более точен.
Помогите, пожалуйста.
Заранее спасибо.
P.S. Если у кого-то завалялся скрипт поиска по базе, скиньте, пожалуйста.
С уважением,
<?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 "<br><b>WG $r[field0]</b> <br>Geri $r[field1], Описание $r[field2], Ean code $r[field3], Netto/NET P90 $r[field4], <br>";
}
}
else//
{
echo "Поиск не дал результатов.";
}
}
else
{
echo "Произошла ошибка при поиске, пожалуйста обратитесь к администратору Веб-сайта за разьяснением.";//
}
}
?>
|
| |
|
|
|
|