Здравствуйте, помогите вывести похожие записи с помощью тегов(меток)
вид таблицы для записей
---------------------------------------------
| id | cat_id |....| post_title | post_text |
---------------------------------------------
| 1 | 2 |....| Заголовок | текст |
вид таблицы для тегов
-------------------------
| id | tags | article_id |
-------------------------
| 1 | Булочка | 2 |
Теги к постам вывожу с помощью функции
public static function tagline($article_id, $links = true, $selected = '')
{
$req = mysql_query("SELECT `tags` FROM `cms_articles_tags` WHERE `article_id`='$article_id' ORDER BY `tags` DESC");
$html = '';
$tags = mysql_num_rows($req);
if ($tags){
$t = 1;
while ($tag = mysql_fetch_assoc($req)){
if ($links){
if ($selected==$tag['tags']){
$html .= '<a href="/search/tag/'.urlencode($tag['tags']).'" style="font-weight:bold;text-decoration:underline">'.$tag['tags'].'</a>rtttt';
} else {
$html .= '<a href="/search/tag/'.urlencode($tag['tags']).'">'.$tag['tags'].'</a>';
}
} else {
$html .= $tag['tags'];
}
if ($t < $tags) { $html .= ', '; $t++; }
}
} else {
$html = '';
}
return $html;
}
я так пробую.
$id = $article_id['id'];
$tag_arr = explode(', ', articles::tagline('id'));
// Получаем id таких же тегов
foreach ($tag_arr as $tag){
$req =mysql_query("SELECT id FROM cms_articles_tags WHERE tags = '$tag' AND article_id<>'$id' LIMIT 5");
if (mysql_num_rows($req)) {
while ($tagitem = mysql_fetch_assoc($req)) {
$id_target[] = $tagitem['id'];
}
}
}
далее
$morearticles = '';
foreach ($id_target as $n) {
$rs = mysql_query("SELECT * FROM cms_articles_post WHERE id = '$n'");
if(mysql_num_rows($rs)){
while ($post = mysql_fetch_assoc($rs)){
$morearticles .= '<a href="/">'.$post['post_title'].'</a>';}
}
}
echo $morearticles;
Хороший, может лучше одним запросом все выбрать?
например так, SELECT * FROM `someTable` WHERE `id` = 12 OR `id` = 23 OR ...
Screamer, В смысле все?? мне же с похожими тегами нужно выводить