Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с построением запроса к БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
riv
Отправлено: 01 Августа, 2012 - 17:54:30
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2011  
Откуда: Краснодар


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. $like = explode(" ", $title);
  2. $result=MYSQL_QUERY("
  3. SELECT
  4. 'id', 'datetime', 'title'
  5. FROM
  6. 'table'
  7. WHERE
  8. title LIKE '%".$like[0]."%'
  9. AND
  10. UNIX_TIMESTAMP(datetime)<'$korrekt_time'
  11. ")
  12. or die("Error <br>". mysql_error()."<br>".__FILE__." ".__LINE__." <br>");


Переменная $title может содержать от 3 до 10 слов
как мне сделать что бы поиск был не по первому слову как у меня сейчас сделано а по всем словам?
 
 Top
Bio man
Отправлено: 01 Августа, 2012 - 18:08:58
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




PHP:
скопировать код в буфер обмена
  1. $str = "title LIKE '%".array_shift($like)."%' ";
  2. foreach($like as $item){
  3.   $str .= "OR title LIKE '%$item%' ";
  4. }
  5. $result=MYSQL_QUERY("
  6. SELECT
  7. 'id', 'datetime', 'title'
  8. FROM
  9. 'table'
  10. WHERE
  11. $str
  12. AND
  13. UNIX_TIMESTAMP(datetime)<'$korrekt_time'
  14. ")
  15.  
 
 Top
caballero
Отправлено: 01 Августа, 2012 - 18:09:23
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




ну так и прилепи несколько лайков
(Добавление)
Bio man
Давай им возможность хоть нмного мозгами шевелить.
Уже и так процент тупарей в програмироании бьет все рекорды


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
riv
Отправлено: 01 Августа, 2012 - 18:14:09
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2011  
Откуда: Краснодар


Помог: 0 раз(а)




эту строку я оставляю?
caballero если делать через
PHP:
скопировать код в буфер обмена
  1. title LIKE '%".$like[0]."%' or title LIKE '%".$like[1]."%' or title LIKE '%".$like[2]."%'
то не выводит как надо если слов меньше чем 3
 
 Top
Bio man
Отправлено: 01 Августа, 2012 - 18:16:10
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




riv пишет:
эту строку я оставляю?
ага
вот так должно получиться
PHP:
скопировать код в буфер обмена
  1. $like = explode(" ", $title);
  2. $str = "title LIKE '%".array_shift($like)."%' ";
  3. foreach($like as $item){
  4.   $str .= "OR title LIKE '%$item%' ";
  5. }
  6. $result=MYSQL_QUERY("
  7. SELECT
  8. 'id', 'datetime', 'title'
  9. FROM
  10. 'table'
  11. WHERE
  12. $str
  13. AND
  14. UNIX_TIMESTAMP(datetime)<'$korrekt_time'
  15. ")
  16. or die("Error <br>". mysql_error()."<br>".__FILE__." ".__LINE__." <br>");
 
 Top
riv
Отправлено: 01 Августа, 2012 - 18:19:07
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2011  
Откуда: Краснодар


Помог: 0 раз(а)




Bio man Спасибо работает Улыбка
 
 Top
riv
Отправлено: 03 Августа, 2012 - 10:47:41
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2011  
Откуда: Краснодар


Помог: 0 раз(а)




Вот полный запрос
PHP:
скопировать код в буфер обмена
  1.     $n = "5";
  2.     $like = explode(" ", $title);
  3.     $like = preg_grep( '#[А-яёA-z]{'.$n.',}#', $like );
  4.     $str = "title LIKE '%".array_shift($like)."%' ";
  5.     foreach($like as $item){
  6.       $str .= "OR title LIKE '%$item%' ";
  7.     }
  8.     $result=MYSQL_QUERY("
  9.    SELECT
  10.    *
  11.    FROM
  12.    'table'
  13.    WHERE
  14.    $str
  15.    AND
  16.    UNIX_TIMESTAMP(datetime)<current_date ORDER BY RAND() LIMIT 0, 5
  17.    ")
  18.     or die("Error <br>". mysql_error()."<br>".__FILE__." ".__LINE__." <br>");
Что то вылез косячек один.
Не пойму почему мне выводит тут посты которые должны появиться завтра помогите
Как сделать чтобы выводил все посты кроме тех которые должны появится в будущем

(Отредактировано автором: 03 Августа, 2012 - 10:52:28)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB