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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Вывести данные по совпадению из массива
 
 автор: Владимир22   (14.02.2012 в 15:22)   письмо автору
 
 

$tag=array('поп', 'рок', 'джаз');
$res=mysql_query("SELECT title FROM music where tag IN ('.$tag.') ORDER by ` title` asc  limit 5");
while ($str=mysql_fetch_array($res)) {
echo $str['title'];
}
Что-то не работает. Как правильно, помогите подправить, пожалуйста!

  Ответить  
 
 автор: Lotanaen   (14.02.2012 в 15:30)   письмо автору
 
   для: Владимир22   (14.02.2012 в 15:22)
 


$res=mysql_query("SELECT title FROM music where tag IN ('.implode("','",$tag).') ORDER by ` title` asc  limit 5");

  Ответить  
 
 автор: Владимир22   (16.02.2012 в 03:18)   письмо автору
 
   для: Lotanaen   (14.02.2012 в 15:30)
 

Спасибо. Так выводит, где может быть tag ТОЧНО: или 'поп' или 'рок' или 'джаз'.
А если в базе есть описания, где tag, например, "поп,кантри,опера", или "рок, классика, джаз, эстрада" и т.п. (разные комбинации).
И вот как вывести, типа
$tag=array('поп', 'рок', 'джаз'); 
 ...where tag LIKE ('.$tag.') 

- т.е. всё, где в tag может встречаться любое из слов масива - поп, рок, джаз.
???

  Ответить  
 
 автор: Valick   (16.02.2012 в 07:39)   письмо автору
 
   для: Владимир22   (16.02.2012 в 03:18)
 

у вас неправильно организована база
значений через запятую в поле быть не должно

  Ответить  
 
 автор: Lotanaen   (16.02.2012 в 10:41)   письмо автору
 
   для: Владимир22   (16.02.2012 в 03:18)
 

ну если структуру базы уже не переделаешь, то можно и через LIKE примерно так:

$res=mysql_query("SELECT title FROM music where tag LIKE '%".implode("%' or tag LIKE '%",$tag)."%' ORDER by ` title` asc  limit 5");

можно и через регулярку сделать REGEXP

  Ответить  
 
 автор: Владимир22   (16.02.2012 в 16:48)   письмо автору
 
   для: Lotanaen   (16.02.2012 в 10:41)
 

Lotanaen , спа-си-бо огромное! Всё наконец-то получилось!

  Ответить  
Rambler's Top100
вверх

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