|
|
|
| Помогите с нормальным рабочим скриптом для поиска на сайте по базе. Столько перелопатил - то старьё, то глюки, уж замучился. Спасибо. | |
|
|
|
|
|
|
|
для: netas
(30.11.2009 в 02:19)
| | Поиск на MySQL обычно затачивается под конкретные таблицы, не существует универсального скрипта, анализирующего все таблицы базы данных. | |
|
|
|
|
|
|
|
для: cheops
(30.11.2009 в 12:27)
| | Хорошо, есть таблица code, в ней поля, где нужно искать: area (область) и town (город). То есть при запросе, например "Новомосковск", выдавался бы весь список Новомосковсков из разных областей. Ну как-то так. С чего начать написание такого скрипта? Спасибо. | |
|
|
|
|
|
|
|
для: netas
(30.11.2009 в 15:10)
| |
<?php $query = addslashes($query);
$res = mysql_query("SELECT `area`,`town`,`...`,`...` WHERE `area` LIKE '%{$query}%' or `town` LIKE '%{$query}%'");
|
| |
|
|
|
|
|
|
|
для: ~AquaZ~
(30.11.2009 в 18:46)
| | Уважаемый AquaZ, вот составил такой запрос:
<?php
$query = addslashes($query);
$result = mysql_query("SELECT 'area','town' WHERE 'area' LIKE '%{$query}%' or 'town' LIKE '%{$query}%'");
do {printf ("<table width='100%%' border='0' cellpadding='0' cellspacing='2'>
<tr>
<td><p>%s</p></td>
<td><p>%s</p></td>
<td><p>%s</p></td>
</tr>
</table>", $myrow ['town'], $myrow['area'], $myrow ['code']);}
while ($myrow = mysql_fetch_array ($result));
?>
|
но выдаёт ошибку:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/kompascl/public_html/businfo.com.ua/test/search_test.php on line 49
Что-то не так в строке
while ($myrow = mysql_fetch_array ($result));
|
Что именно? | |
|
|
|
|
|
|
|
для: netas
(30.11.2009 в 20:14)
| | Подредактировал файл, стало так:
<?php $query = addslashes($query);
$result = mysql_query("SELECT 'area','town' WHERE 'area' LIKE '%{$query}%' or 'town' LIKE '%{$query}%'");
if (!$result)
{ echo "Запрос не прошёл";
exit(mysql_error());
}
if (mysql_num_rows($result)>0)
{
$myrow = mysql_fetch_array($result);
do {printf ("<table width='100%%' border='0' cellpadding='0' cellspacing='2'>
<tr>
<td><p>%s</p></td>
<td><p>%s</p></td>
<td><p>%s</p></td>
</tr>
</table>", $myrow ['town'], $myrow['area'], $myrow ['code']);}
while ($myrow = mysql_fetch_array ($result));
}
?>
|
Теперь ошибка:
Запрос не прошёлYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE area LIKE %% or town LIKE %%' at line 1
В чём проблема? Спасибо. | |
|
|
|
|
|
|
|
для: netas
(30.11.2009 в 22:31)
| | В запросе не указано с какой таблицы Вы выборку производите, т.е где FROM ...? | |
|
|
|
|
 13.9 Кб |
|
|
для: Rustamich
(02.12.2009 в 07:43)
| | Поправил:
<?php
include("../blocks/bd.php");
if (isset($_GET['id'])) {$id = $_GET['id'];}
if (isset($_POST['submit_s'])) {$submit_s = $_POST['submit_s'];}
if (isset($_POST['search'])) {$search = $_POST['search'];}
if (isset($_GET['submit_s'])) {$submit_s = $_GET['submit_s'];}
if (isset($_GET['search'])) {$search = $_GET['search'];}
if (isset($submit_s))
{
if (empty($search) or strlen($search) < 4)
{
exit ("<p>Запрос не введён, либо он меньше 4-х символов</p>");
}
$search = trim($search);
$search = stripslashes($search);
$search = htmlspecialchars($search);
$search = preg_replace('~([^\d].)\1\1~is','', $search);
}
else
{
exit ("<p>Вы обратились к файлу без необходимых параметров</p>");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><? echo "Информация по запросу - $search";?></title>
</head>
<body>
<?php $query = addslashes($query);
$result = mysql_query("SELECT 'area','town' FROM code WHERE 'area' LIKE '%{$query}%' or 'town' LIKE '%{$query}%'");
if (!$result)
{ echo "Запрос не прошёл";
exit(mysql_error());
}
if (mysql_num_rows($result)>0)
{
$myrow = mysql_fetch_array($result);
do {printf ("<table width='100%%' border='0' cellpadding='0' cellspacing='2'>
<tr>
<td><p>%s</p></td>
<td><p>%s</p></td>
<td><p>%s</p></td>
</tr>
</table>", $myrow ['town'], $myrow['area'], $myrow ['code']);}
while ($myrow = mysql_fetch_array ($result));
}
?>
</body>
</html>
|
Теперь выводится вот что (см. файл) | |
|
|
|
|
|
|
|
для: netas
(03.12.2009 в 00:23)
| | теперь посмотрите что Вам в запросе SELECT написал ~AquaZ~
и что написали Вы. | |
|
|
|
|
|
|
|
для: Trianon
(03.12.2009 в 01:54)
| | Неправильные кавычки? Сделал такие как у Aquaz, но теперь по любому запросу, например, Киев, выводит весь список городов по алфавиту. Форма вот здесь: http://businfo.com.ua/test/search_form_test.php | |
|
|
|
|
|
|
|
для: netas
(05.12.2009 в 00:34)
| | Я не нашел, где у Вас в скрипте присваивается переменная $query.
Запрос оказывается с открытым условием. | |
|
|
|
|
|
|
|
для: Trianon
(05.12.2009 в 00:38)
| | А где и как её присвоить? Я пока, как говорится, только учусь. | |
|
|
|
|
|
|
|
для: netas
(05.12.2009 в 00:45)
| | по какому учебнику, если не секрет? | |
|
|
|
|
|
|
|
для: Trianon
(05.12.2009 в 00:51)
| | Как тут уже упомянули по видеокурсу:) А всё же по теме... | |
|
|
|
|
|
|
|
для: netas
(05.12.2009 в 00:56)
| | Учите язык. Вернее оба используемых языка.
Видеокурс можете выкинуть.
Тут кстати уже упомянули... | |
|
|
|
|
|
|
|
для: Trianon
(05.12.2009 в 01:08)
| |
$query = "SELECT * FROM `bilets` WHERE 'what' LIKE '%{$search}%' or 'result' LIKE '%{$search}%';";
|
Оно у меня ищет только с начала строки. Тоесть если what = "how do you.." и $search = "how" тогда ищет , а если $search = "do you" - не ищет. А дайте запрос чтоб искало плиз! | |
|
|
|
|
|
|
|
для: toproot
(10.12.2009 в 17:34)
| | а если $search = "do" - тоже не ищет? Верится с трудом. | |
|
|
|
|
|
|
|
для: Trianon
(10.12.2009 в 18:44)
| | Не понял, так what и result ето не поля ? Я ввожу в поиске what - выбивает все значения, то же и с result.
как это понять ? я так понимаю мой запрос ИЗВЛЕКАЕТ ВСЕ ИЗ `bilets` ПРИ УСЛОВИИ ЧТО ЗНАЧЕНИЕ ПОЛЯ what ПОХОЖЕ НА $search ИЛИ ЗНАЧЕНИЕ ПОЛЯ result ПОХОЖЕ НА $search. Разве не так ?
почему работает только эсли $search = what или $search = result ? | |
|
|
|
|
|
|
|
для: toproot
(10.12.2009 в 21:16)
| | А ... ну да, конечно.
'what' и 'result' это не поля, а значения.
поля будут `такие`
И вообще-то об этом я Вам еще неделю назад сказал. | |
|
|
|
|
|
|
|
для: Trianon
(10.12.2009 в 21:19)
| | поменял кавычки, отлично, то что нужно, благодарю. | |
|
|
|
|
|
|
|
для: netas
(03.12.2009 в 00:23)
| | По стилю программирования видно, что аффтар видеокурса - гражданин Е. Попов. Я по его курсам учился - он ни слова не сказал о безопасности; таких сайтов нахакано...
[цитата]
Я написал сайт по курсам и на следующий день в корневой директории не оказалось ни одного файла...
[конец цитаты] | |
|
|
|