Выделить уникальный текст из массива - PullRequest
0 голосов
/ 10 сентября 2011

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

Это для базы данных фильмов. Предположим, у меня есть 2 фильма в базе данных.

1-й фильм в категории: драма, мелодрама, война 2-й фильм в категории: драма, триллер

Что мне нужно, так это вернуть массив, который будет отображать меня: Драма, Романтика, Война, Триллер. Мой текущий запрос к MySQL следующий:

$ query = 'SELECT жанры из imdb, где актеры любят "%%'. $ Name. '%"';

В цикле while я использую foreach, например:

foreach(explode(', ', $TMPL['genres']) as $v)
                    $TMPL['genre'] .= '<option value="'.urlencode($v).'">'.($v).'</option>';

Это возвращает мне все значения, включая дублированное, например: Драма, Романтика, WarDrama, Триллер

Есть какие-нибудь подсказки, как с этим разобраться?

Ответы [ 4 ]

2 голосов
/ 10 сентября 2011
$query = 'SELECT DISTINCT genres FROM imdb WHERE actors LIKE "%%'.$name.'%"';

сделает это

1 голос
/ 10 сентября 2011

просто используйте функцию array_unique для вашего массива с повторяющимися значениями!

$ unique_values ​​= array_unique ($ TMPL ['genre']);

1 голос
/ 10 сентября 2011

Итак, у вас есть столбец с разделенным списком жанров?

Проходите по каждой строке в вашем запросе и разбивайте жанры, добавляйте каждый жанр в основной массив и затем используйте array_unique ()

Если я вас правильно понимаю, вы не сможете (легко) это сделать с MySQL, поскольку не нормализовали свою базу данных должным образом.

1 голос
/ 10 сентября 2011

использование DISTINCT

$query = 'SELECT DISTINCT genres FROM imdb WHERE actors LIKE "%%'.$name.'%"';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...