Похожие записи

275
.
Macabre
Wap Master
Делаю вывод похожих записей блога.
$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 и пишутся через запятую.
.
Wap Master
У меня естьтолько одно решение: выводить ячейку с тегами в массив, брать из массива рандомный тег и делатьпо нему запрос,ток еще не делал так что получится
.
Кадило крутится, лавэха мутится
В $arr[tags] что приходит? Несколько тегов тоже?
.
Wap Master
Есть такое решение, если кто делалто прошу написать еще варианты.
$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/>';
}}
.
Wap Master
# 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/>';
}


Так попробуй. Думаю идея понятна
.
Macabre
Wap Master
# 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
Ну в принципе суть та же, а в каком случае нагрузка меньше будет?
.
Simba
Кадило крутится, лавэха мутится
# Macabre (24.04.2015 / 13:39)
Ну в принципе суть та же, а в каком случае нагрузка меньше будет?
Суть не та же) У тебя на каждый тег, выполняется запрос, а тут один запрос выполняется
В какм случае нагрузка будет меньше я думаю понятно.
.
Wap Master
Simba, на твой пост (24.04.2015 / 13:40) отвечу, хотел сказать что итог один, а так да - спасибо за решение, идеально подошло.
.
(\/)____o_O____(\/)
посмотри как сделано в библиотеке, самая более менее нормальная реализация, ни каких гемороев с выгодом и поиском
Всего: 16