• 締切済み

PHPでスレッド式掲示板を作りたいです

こんにちは。現在Androidアプリで掲示板を作ろうと思いPHPとDBを活用してスレッド式掲示板を作成しています。 テーブルはこのような感じで構成しています。 スレッド一覧テーブル sureid(int ai) surename(text) name(text) time(text) rescount(int) コメントテーブル sureid(int) surename(text) name(text) msg(text) id(text) time(text) 作っていく途中で躓いてしまったので御教授願います。 1つ目 スレッド一覧画面で選択したsureidをGETしスレッドの中の画面でGETしたsureidの投稿を表示させたい。 2つ目 スレッド一覧画面で各スレッド一覧の横にスレッドのレス数を表示させたい。 <?php $USER= ''; $PW= ''; $dnsinfo= ""; $user= array(); $pdo = new PDO($dnsinfo,$USER,$PW); $sql = "SELECT * FROM thread"; $stmt = $pdo->prepare($sql); $stmt->execute(null); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ $user[] = array ('surename'=> $row["surename"] ,'name' => $row["name"] ,'rescount' => $row["rescount"]; } $res = array_reverse($user); echo json_encode($res); ?> スレッド一覧のプログラムはこのようになっています。

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

あぁ、こっちにも質問があったのねww >Androidアプリで掲示板を作ろうと思い というのが >PHPとDBを活用してスレッド式掲示板を作成しています。 になる意味がわかりません。詳細に説明してください。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10144917370の回答を再掲します。 >Androidアプリで掲示板を作ろうと思い phpの掲示板は「Androidアプリ」とは呼ばないと思いますけど・・・。いったい何を作りたいんでしょうか?もしAndriodアプリの「DBサーバとの連係をphpで作る」という意味なら、まずはAndriodアプリ側の仕様を提示してもらわないといけません(どういうアクセスに対して何を返すのかが不明です)。 >$res = array_reverse($user); 何故array_reverseするのでしょうか?最初からスレッドを新しい順(スレッドNo降順)で読んでいれば必要がない処理です。また「読みながら表示」すればいいものを、わざわざ全部読んでから処理する意図がわかりません。 >echo json_encode($res); デバッグ用の表示か何かですか?もしこれを「Andriodアプリ側で処理する」というのであればしスレッドNoを指定して内容を取得する部分のアプリ側の仕様を提示してください。 仕様が不明なので、以下は普通のwebアプリを前提に回答します >スレッド一覧画面で選択したsureidをGETしスレッドの >中の画面でGETしたsureidの投稿を表示させたい。 $stmt = $pdo->query('SELECT * FROM thread order by sureid desc'); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ printf('%d<a href="?id=%d">%s</a>%d<br>' . PHP_EOL, $row['sureid'], $row['sureid'], $row['name'], $row['rescount']); } #プレースホルダがないのに、prepare/executeする必要は #ありません。query一発でいいです。 で、スクリプトの一覧表示より前で $id = filter_input(INPUT_GET, 'id'); if (isset($id)) { // idが指定されていたら、その内容を表示 $stmt = $pdo->prepare('select * from thread where sureid = ?'); $stmt->execute(array($id)); $thread = $stmt->fetch(); if ($thread !== false) { printf('%d : %s <br>' . PHP_EOL, $id, $thread['name']) $stmt = $pdo->prepare('select * from comment where sureid=? order by time asc'); $stmt->execute(array($id)); while ($row = $stmt->fetch()) { // commentテーブルの各カラムの意味がよくわからない・・・ //まぁ、$row['msg']とか表示すればいいのかな printf(); } print '<hr>' . PHP_EOL; } else { die('ID ABORT'); } } else { // ここに一覧表示を書く } >スレッド一覧画面で各スレッド一覧の横にスレッドの >レス数を表示させたい。 rescountにレス数を入れているんじゃないんですか(そうでないとしたら、何のためのカラムrescountなのかわかりません)。

関連するQ&A