Делаю вывод похожих записей блога.
$rev = @mysql_query("select `id`, `name` from `blog` where id!= '" . $arr[id]. "' and tags like '%" . $arr[tags]. "%' limit 5;");
while ($arrev = mysql_fetch_array($rev)){
echo '<a href= "'.$arrev['id'].'"> '.$arrev['name'].'</a><br/>';
}
Выводятся записи если есть совпадение по tags, но в моем случае выводятся похожие записи только для той статьи,у которой один тег, если у статьи несколько тегов то похожие записи не выводятся.
Теги к каждой статье храняться в ячейке tags и пишутся через запятую.
У меня естьтолько одно решение: выводить ячейку с тегами в массив, брать из массива рандомный тег и делатьпо нему запрос,ток еще не делал так что получится
В $arr[tags] что приходит? Несколько тегов тоже?
Есть такое решение, если кто делалто прошу написать еще варианты.
$abouta = explode(",", $arr['tags']);
$counta = count($abouta);
for($i=0;$i<$counta;$i++){
$rev = @mysql_query("select `id`, `name` from `blog` where id!= '" . $arr[id]. "' and tags like '%" . $abouta[$i]. "%' limit 5;");
while ($arrev = mysql_fetch_array($rev)){
echo '<a href= "'.$arrev['id'].'"> '.$arrev['name'].'</a><br/>';
}}
# Simba (24.04.2015 / 13:24)
В $arr[tags] что приходит? Несколько тегов тоже?
Да, сюда пишутся теги к статье, их может не быть, может бытьодин тег либо несколько через запятую.Так вот если я смотрю статью у которой один тег то похожие записи выводяться, если у статьи несколько тегов то похожие не выводяться.
$abouta = explode(",", $arr['tags']);
$sql = array();
foreach($abouta as $tag)
{
if(!empty($tag))
{
$sql[] = "tags LIKE '%" . $tag . "%'";
}
}
$rev = @mysql_query("SELECT `id`, `name` FROM `blog` WHERE id!= '" . $arr['id'] . "' AND (".implode(' OR ', $sql).") LIMIT 5;");
while ($arrev = mysql_fetch_array($rev))
{
echo '<a href= "' . $arrev['id'] . '"> ' . $arrev['name'] . '</a><br/>';
}
Так попробуй. Думаю идея понятна
# Simba (24.04.2015 / 13:34)
[php]
$abouta = explode(",", $arr['tags']);
$sql = array();
foreach($abouta as $tag)
{
if(!empty($tag))
{
$sql[] = "tags LIKE '%" . $tag . "%'";
}
}
$rev = @mysql_query
Ну в принципе суть та же, а в каком случае нагрузка меньше будет?
# Macabre (24.04.2015 / 13:39)
Ну в принципе суть та же, а в каком случае нагрузка меньше будет?
Суть не та же) У тебя на каждый тег, выполняется запрос, а тут один запрос выполняется
В какм случае нагрузка будет меньше я думаю понятно.
Simba, на твой пост (
24.04.2015 / 13:40) отвечу, хотел сказать что итог один, а так да - спасибо за решение, идеально подошло.
посмотри как сделано в библиотеке, самая более менее нормальная реализация, ни каких гемороев с выгодом и поиском