私はCMSを開発中です。ポストカテゴリとタグについては、WordPressデータベースを見て、そのスタイルを採用し、いくつかの変更を加えました。表用語で投稿テーブルのカテゴリとタグを表示します(1対多の関係)
table 1: posts (post_id,post_title)
table 2: terms (term_id,term_title,term_type)
table 3: term_relationships (tr_id,tr_post_id,tr_term_ir)
:
私は3つのテーブルを持っているTERM_TYPEのいずれかcat
である(それはタグであることを意味する)またはtag
(それがカテゴリであることを意味します)。
私は管理用の投稿のリストを表示したいが、投稿ごとにcats
とtags
(管理パネルのWordPress投稿ページなど)を表示する正しい方法を理解できない。
これは、これまでの私の試みです:
$posts_query=$db->query("SELECT `post_id`,`post_title` FROM `posts` ORDER BY `post_id` DESC");
while($post=mysqli_fetch_assoc($posts_query)){
echo '<td>'.$post['post_title'].'</td>';
$cats_query=$db->query("SELECT tr_term_id FROM term_relationships WHERE tr_post_id='{$post['post_id']}'") or die(mysqli_error($db->con));
$term_ids='';
while($cat=mysqli_fetch_assoc($cats_query)){
$term_ids .=$cat['tr_term_id'].',';
}
$term_ids= trim($term_ids,',');
$cats=$db->query("SELECT `term_id`,`term_title` FROM `terms` WHERE `term_id` IN($term_ids) AND `term_type`='cat'");
echo '<td>';
while($cat= mysqli_fetch_assoc($cats)){
echo $cat['term_title'].', ';
}
echo '</td>';
}
それは仕事をしていませんが、それはとても重いとハードに理解を取得します。私はこれが正しい方法だとは思わない(タグを追加してクエリを追加する必要があります)。
これを行うより良い方法はありますか?
それは地獄です:)非常に良い、ありがとう、あなたがGROUP(GROUP p.'post_id')の後にBYを追加するのを忘れたただ1つ私はそれを追加し、それは働いた。投稿タグと猫を別々に表示するにはどうすればいいですか?私はtd(タグ:term_type =タグ、cats:term_type = cat)のそれぞれのものを欲しい。 – theboy
私のコメントを編集してください。 – theboy
これを試してください:GROUP_CONCAT(t.term_type = 'タグ'、その後t.'term_title'終了)SEPARATOR '、')タグ、GROUP_CONCAT((t.term_type = 'cat'、t.'term_title'最後に)SEPARATOR '、')猫として –