Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Постраничная навигация в поиске

Сообщения:  [1-10]   [11-12] 

 
 автор: wsnet   (12.01.2013 в 21:32)   письмо автору
 
   для: Sfinks   (12.01.2013 в 09:11)
 

ORDER BY не забыть, использовать mysql_fetch_assoc, предотвращать SQL-инъекции

  Ответить  
 
 автор: Sfinks   (12.01.2013 в 09:11)   письмо автору
 
   для: Sprinter_One   (11.01.2013 в 23:37)
 

Тогда сохраните эту тему в закладки и через пол годика вспомните мои слова =)

Решение такое: добавляете в запрос четвертым полем информацию о том, из какой таблицы товар и дальше в php разбирайте эту кашу.

Запрос такого вида:
SELECT * FROM( 
  SELECT id, title, description, 'table_1' as table_name FROM table_1 WHERE text LIKE '%$search%' 
    union all 
  SELECT id, title, description, 'table_2' FROM table_2 WHERE text LIKE '%$search%' 
    union all 
  SELECT id, title, description, 'table_3' FROM table_3 WHERE text LIKE '%$search%' 
    union all 
  SELECT id, title, description, 'table_4' FROM table_4 WHERE text LIKE '%$search%' 
)t 
LIMIT {x},{y}

  Ответить  
 
 автор: Sprinter_One   (11.01.2013 в 23:37)   письмо автору
 
   для: Valick   (11.01.2013 в 17:43)
 

не, такой вариант не подходит...

  Ответить  
 
 автор: Valick   (11.01.2013 в 17:43)   письмо автору
 
   для: Sprinter_One   (11.01.2013 в 16:48)
 

более 20 таблиц переделывать и в каждой из них уже более 15 записей
это мизер, переделывайте пока не поздно

  Ответить  
 
 автор: Sprinter_One   (11.01.2013 в 16:48)   письмо автору
 
   для: Sfinks   (11.01.2013 в 14:53)
 

переделал бы, но это не самый лучший вариант....структура идёт типа такого: монитор - модель телефона (тут же описание)...более 20 таблиц переделывать и в каждой из них уже более 15 записей, не вариант....может какой-нибудь альтернативный поиск подойдет? где не нужно будет так сильно затрагивать бд.

  Ответить  
 
 автор: Sfinks   (11.01.2013 в 14:53)   письмо автору
 
   для: Sprinter_One   (11.01.2013 в 14:15)
 

Переделывайте структуру БД. Это будет самым верным решением.
Не должно быть каждый тип товара в отдельной таблице. Должна быть одна таблица "товары" и в ней, кроме прочего, еще поле "тип товара". Соответственно, и один php-обработчик для всех типов товара. Тогда и проблем не будет. Иначе хуже будет. Сейчас путем усложнения запроса и разбора егорезультата можно выкрутиться. Но чем дальше, тем хуже будет.

  Ответить  
 
 автор: Sprinter_One   (11.01.2013 в 14:15)   письмо автору
3.3 Кб
 
   для: Sprinter_One   (11.01.2013 в 13:24)
 

опять не выходит....я уже совсем запарился и голова не работает....
куда тогда убрать этот код?

$myrow = mysql_fetch_array ($result);
do {    
printf ("<table align = 'center' class='products'>
        <tr>
        <td><p class='products_name'><a href  = 'view_products.php?id=%s'>%s</a></p></td>
        </tr>        
        <tr>
        <td>%s</td>
        </tr>
        </table><br><br>", $myrow["id"], $myrow["title"], $myrow["description"]);
}
while ($myrow = mysql_fetch_array ($result));

именно на эту часть ругается. а отдельно к каждой таблице она нужна.

к сообщению прикрепляю целый файл, посмотрите пожалуйста, может найдёте ошибку.

  Ответить  
 
 автор: Sprinter_One   (11.01.2013 в 13:24)   письмо автору
 
   для: Sfinks   (11.01.2013 в 13:19)
 

спасибо, попробую так....я думал из кода будет понятно что несколько таблиц в БД....в коде 2 приведены (автоматические ворота и акустомагнитные противокражные рамки)...

  Ответить  
 
 автор: Sfinks   (11.01.2013 в 13:19)   письмо автору
 
   для: Sprinter_One   (11.01.2013 в 13:04)
 

Вы же ничего об этом не говорите сразу....

Нужно значит искать сразу по всем таблицам. Запрос такого вида примерно:
SELECT * FROM(
  SELECT id, title, description FROM table_1 WHERE text LIKE '%$search%'
    union all
  SELECT id, title, description FROM table_2 WHERE text LIKE '%$search%'
    union all
  SELECT id, title, description FROM table_3 WHERE text LIKE '%$search%'
    union all
  SELECT id, title, description FROM table_4 WHERE text LIKE '%$search%'
)t
LIMIT {x},{y}


P.S. Но это говорит о не правильной организации структуры БД.

  Ответить  
 
 автор: Sprinter_One   (11.01.2013 в 13:04)   письмо автору
 
   для: Sfinks   (11.01.2013 в 13:00)
 

я тоже так думал, но проблема в том что в БД есть куча таких таблиц как avt_vorota (Например, domofony). По отдельности всё работает. А когда пытаюсь объеденить, ничего не выходит.

  Ответить  

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования