Поиск по сайту по 3 разделам.

anonym

Новичок
Доброе время суток, уважаемые господа разработчики, прошу не судить строго, мои познания в php + mysql не высоки, поэтому прибегаю за советом к вашему опыту. Перейдем к делу:
Прошу помощи в исправление скрипта. Задача поиск по 3 таблицам. В данный момент скрипт осуществляет поиск только по одной таблице.

Задача осожняется тем, что в разных таблицах название id разное (где-то id_goods, где-то id) и еще тем, что на страницу с товаром ведет ссылка view_tovar, а на страницу c резиной - view_shini.

Суть:
Таблица1 - Раздел. Содержимое таблицы (1. Шины 2. Товары. 3. Масла 4.и тд.)
Таблица2 - Шины. Содержимое таблицы (1. Название шины 2. Название шины. 3. Название шины.)
Таблица3 - Товары. Содержимое таблицы (1. Название товара. 2. Название товара. 3.Название товара).

Помогите код написать выборки.

Там где выборка столбца ссылко начинается, может написать условие с подстановкой переменной вместо выборки из бд? Что скажете?

PHP:
if (id_razdel = shini) {$ssilka = view_shini}, if (id_razdel = tovar) {$ssilka = view_tovar}
вместо '.$row1['link'].'
Так братцы, есть такое решение:
PHP:
$q = "SELECT `title`, `text` FROM `goods` WHERE `title` LIKE '%$query%' OR `text` LIKE '%$query%' 
			UNION
			SELECT `title`, `text` FROM `wheel` WHERE `title` LIKE '%$query%' OR `text` LIKE '%$query%' ";
Но оно не подходит по причине того, что в разных таблицах хранится разнные данные о товаре, например таблица мотовездеход содержит уникальные данные по сравнение с таблицей шины. Да и ктому же в результатх выдачи в ссылку не получается вставить id. Может если код подправить.. Уже 3 сутки скоро пойдут, как я застопорился. ПОМОГИТЕ!
 

DIG

Новичок
Партнер клуба
Досконально я в вашем коде не разбирался, но в общем могу только следующее посоветовать.

1. Для начал попробуйте отвязаться от php и html и сделать этот поиск на чистом SQL.
2. "название id разное (где-то id_goods, где-то id)" - а что вам мешает во всех таблицах назвать идентификатор одинаково, например id ?
3. Вы вообще слышали о операторе JOIN, о связи один-ко-многим, многие-ко-многим?
4. Если описаний товара будет много и большого объема, то существует FULLTEXT. Но помоему рано об этом думать.
5. Если получилось все рализовать просто в командной строке MySQL (phpMyAdmin) то можно переходить к написанию php с использованием уже отработанных запросов.
 

anonym

Новичок
1. Для начал попробуйте отвязаться от php и html и сделать этот поиск на чистом SQL.
Было бы хорошо, если бы вы показали как это возможно.
2. мешает то, что сайт проиндексирован поисковиком, в ссылке присутствует в одном случае id в другом id_goods
3. Слышал об операторе JOIN, но как я не крутил его с этими таблицами, все результаты оказались безуспешными, может быть у вас получится. (Пробовал LEFT JOIN, INNER JOIN, Outer join, right join)
4. Это не главная задача, если только на перспективу делать FULLTEXT.
5. Здесь нужна помощь знающих... У меня не хватило знания и я пришел сюда.

Друзья, товарищи, господа, дамы, хорошие добрые и отзывчивые люди, не сочтите за труд, ответить 1 млн. 350тыс. второй раз, как сделать так, чтобы оно(скрипт) заработало )
 

DIG

Новичок
Партнер клуба
Перечитал сейчас ваш вопрос на свежую голову, Вы можете словами обьяснить что и где вы ищите? Каким образом вообще индексация поисковиком может быть связанна с названием поля в вашей базе данных? Мои советы выше неправильные, я вообще не понимаю в чем ваша проблема.
 

anonym

Новичок
Перечитал сейчас ваш вопрос на свежую голову, Вы можете словами обьяснить что и где вы ищите? Каким образом вообще индексация поисковиком может быть связанна с названием поля в вашей базе данных? Мои советы выше неправильные, я вообще не понимаю в чем ваша проблема.
Нужно чтобы по сайту осуществлялся поиск. Данный скрипт позволяет осуществлять поиск по одной таблице. А мне нужно искать по 3 таблицам.

anonym, читайте правила форума:
учту на будущее.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
$q = "SELECT `title`, `text` FROM `goods` WHERE `title` LIKE '%$query%' OR `text` LIKE '%$query%'
UNION
SELECT `title`, `text` FROM `wheel` WHERE `title` LIKE '%$query%' OR `text` LIKE '%$query%' ";
Ты екплайн запроса делал? Так, просто интересно.
 

Redjik

Джедай-мастер
что такое екплайн =) Просвети
explain

Думаю через Union и Alias можно добиться результата, я бы в этом направлении подумал(если нужно срочно до гкодить), а так - лучше кончено структуру базы пересмотреть.

Советую еще в гугле набрать - нормальные формы.
 
Сверху