- ベストアンサー
記事のコメント数表示について
- phpにて掲示板を作成しており、書く記事のタイトル一覧が表示され、各記事のコメント数を表示させたいと思っています。
- 掲示板の記事に対するコメント数を表示する方法がわかりません。
- 参考サイトのように返信数として表示する方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> コメントがある場合でないと記事が一覧が表示されないようになってしまいました。 $query = <<<__QUERY__ SELECT `id`,`name`,`title`,UNIX_TIMESTAMP(`reg_date`) AS `reg_date`, IF(`count` IS NULL, 0, `count`) AS `count` FROM `bbs`, LEFT JOIN (SELECT `bbs_id`, COUNT(`bbs_id`) AS `count` FROM `bbs_comment` GROUP BY `bbs_id`) AS `c` ON `c`.`bbs_id` = `bbs`.`id` ORDER BY `reg_date` DESC; __QUERY__; > You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BY bbs_id' at line 1 GROUP BY の前のスペースが抜けている。 せっかく sprintf を使っているならもっとうまく活用してください。
その他の回答 (4)
- yuu_x
- ベストアンサー率52% (106/202)
FROM `bbs`, ⇒ FROM `bbs` (人のこと言えんな) > としており、コメントの数(//****$count*****//)がSと表示されます。 ちなみにそいつは SELECT の最初の S PHP では文字列を配列の様に扱える。"count" を数値にキャストした場合 0 つまり最初の文字が取り出される。
- yuu_x
- ベストアンサー率52% (106/202)
WHILE ⇒ WHERE (何で while て書いたんだろ。きっと下で使ってるからだ) その他所々ミスタイプがあるので修正してください。 自ら努力より、まずは良い資料と、良い師に巡り合うことだ。努力はその後でいい。 ここの掲示板を見ている限りでは特にそう思える。 >> にしたところエラーがでるため、mysql_queryを入れないようにしています。 エラーは何と出ていますか。
お礼
できました。有難う御座います。 ただ、記事に対して、コメントがある場合でないと記事が一覧が表示されないようになってしまいました。 フォロー有難う御座います。 ただできる限りは自分で努力してみたいと思います。 >>エラーは何と出ていますか。 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BY bbs_id' at line 1 とでました。
- honoka-cha
- ベストアンサー率54% (40/73)
SELECT文が2箇所にありますが、mysql_query()が1箇所しかありません。 そこら辺からなんとかしましょうよ。 質問はもちろん大切です。自分で勉強を続けることも大切です。 自らする努力が大きいほど手助けも自然とたくさん集まると思いますよ。
補足
ご回答有難う御座います。 $c_query = sprintf("SELECT COUNT(`bbs_id`) AS `count` FROM `bbs_comment` WHERE `bbs_id` = " .$bbs["id"]. "GROUP BY bbs_id"); $c_result = mysql_query($c_query, $link) or die(mysql_error()); にしたところエラーがでるため、mysql_queryを入れないようにしています。 まだ、phpは初心者のため自分で調べながら、考えてやっています。 それでもわからないからお分かりの方に教えて欲しいと思い、投稿しました。 あなたは何がしたいのかわかりませんが、そもそもここの掲示板の意味わかります? 教えてほしいから教えてgooなわけじゃないですか。 そんなことを言いたいがためにコメントしてきたのですか?
- yuu_x
- ベストアンサー率52% (106/202)
function h($str) { return htmlentities($str, ENT_QUOTES, 'sjis'); } $query = <<<__QUERY__ SELECT `id`,`name`,`title`,UNIX_TIMESTAMP(`reg_date`) AS `reg_date`,`count` FROM `bbs`, (SELECT `bbs_id`, COUNT(`bbs_id`) AS `count` FROM `bbs_comment` GROUP BY `bbs_id`) AS `c` WHILE `c`.`bbs_id` = `bbs`.`id` ORDER BY `reg_date` DESC; __QUERY__; $bbs_result = mysql_query($query, $link) or trigger_error(mysql_error(), E_USER_ERROR); ?> <? while ($bbs = mysql_fetch_assoc($bbs_result)) : ?> <tr> <td class="title"><a href="topics.php?topicNo=<?=urlencode($bbs['id'])?>"><?=h($bbs['title']?></a></td> <td><?=h($bbs['count'])?></td> <td><?=h($bbs['name'])?></td> <td><?=date("Y/m/d H:i", $bbs['reg_date']))?></td> </tr> <? endwhile; ?>
補足
ご回答有難う御座います。 SELECT `id`,`name`,`title`,UNIX_TIMESTAMP(`reg_date`) AS `reg_date`,`count` FROM `bbs`, (SELECT `bbs_id`, COUNT(`bbs_id`) AS `count` FROM `bbs_comment` GROUP BY `bbs_id`) AS `c` WHILE `c`.`bbs_id` = `bbs`.`id` ORDER BY `reg_date` DESC; のところでエラーが出てしまいます。 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHILE `c`.`bbs_id` = `bbs`.`id` ORDER BY `reg_date` DESC' at line 2 おわかりになりますでしょうか?
補足
度重なるご回答有難う御座います。 上記の内容でできました。 本当に有難う御座います。 また、何かありましたらご教授いただければと思います。 本当に有難う御座いました。