Задавайте вопросы, мы ответим
Вы не зашли.
Пытаюсь сделать поиск по базе, но он не срабатывает, пишет что данные не найдены. Сам запрос точно рабочий проверял на другой базе. Думаю проблема в FULLTEXT таблицы printer. Может кто чего посоветует.
БАЗА ДАННЫХ
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Фев 07 2008 г., 12:44
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
--
-- БД: `dbr`
--
-- --------------------------------------------------------
--
-- Структура таблицы `data`
--
CREATE TABLE `data` (
`id` int(11) NOT NULL auto_increment,
`printer` text NOT NULL,
`kartridg` text NOT NULL,
`resurs` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `printer` (`printer`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
--
-- Дамп данных таблицы `data`
--
INSERT INTO `data` VALUES (1, 'LJ 1010/1012/1015/1020\r\n/1022', 'q2612a', '2000 копий');
СКРИПТ ПОИСКА
<?
$result = mysql_query("SELECT * FROM data WHERE MATCH(printer) AGAINST('$search')",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
do
{
printf ("<table class='lesson' cellspacing='0'>
<tr>
<td class='lesson2'><p class='coolmenu_pr'>%s</p></td>
<td class='lesson3'><p class='coolmenu_pr'>%s</p></td>
</tr>
</table>",$myrow["kartridg"], $myrow["printer"]);
}
while ($myrow = mysql_fetch_array($result));
}
else
{
echo "<p>Информация по Вашему запросу не найдена.</p>";
exit();
}
?>
Неактивен
попробуйте добавить в скрипт после подключения к базе
mysql_query("SET NAMES cp1251");
Неактивен
Все равно не хочет искать.
Неактивен
Возможно в Вашем случае полнотекстовый индекс не подходит. Полнотекстовый поиск ищет по словам - у Вас комбинация символов 'LJ 1010/1012/1015/1020', причем LJ из двух букв, FULLTEXT скорее всего его игнорирует. Удовлетворит ли Вас по производительности прямой поиск в базе?
SELECT * FROM data WHERE printer like '%$query%'
Неактивен
Дело в том если я беру готовую базу и вставляю туда эти данные то он прекрасно все находит. Тут что то именно с FULLTEXT но не пойму что.
Неактивен
Базу делаю в phpMyAdmin может в этом проблема?
Неактивен
Попробовал Ваш запрос на поиск работает идеально. Большое спасибо за помощь. Я с этим поиском все выходные провозился.
Неактивен
рано обрадывалься он просто выводит весь столбец "printer" может я запрос неправильно сделал. $result = mysql_query("SELECT printer,kartridg FROM data WHERE printer like '%$query%'",$db);
Неактивен
Прошу прощения, у Вас запрос в переменной $search, а я написал $query
Переменная $query не определена, поэтому сравниваете Вы с %%, % здесь любая последовательность символов
$result = mysql_query("SELECT printer,kartridg FROM data WHERE printer like '%$search%'",$db);
Неактивен
СПАСИБО теперь точно работает идеально. :-)
Неактивен