• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブルの情報が一部しか表示されません。(php))

テーブルの情報が一部しか表示されず、id=1の提出状況しか表示されない問題について

このQ&Aのポイント
  • テーブルの情報が一部しか表示されず、id=1の提出状況しか表示されない問題が発生しています。
  • テストデータはid=5までの5件を入力していますが、全てのID分の提出状況を表示させたいです。
  • $recordSet2 = mysql_query('SELECT * FROM report');をwhileにいれてみたり試行錯誤していますが、上手くいきません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

テーブル構造がどうなっているかは分かりませんが、まず二つのSQLを投げていることがおかしいですね。 exerciseとreportをjoinして一つのSQLにまとめてみてはいかがでしょうか? もしそれが出来ないとしたらテーブル設計を見直す必要があります。 これは質問とは関係がありませんがereg関数使用は避けた方が良いです。 eregは非推奨であり、セキュリティ脆弱性があるので必ずpreg_matchを 使用して下さい。 [関数とバイナリセーフ] http://itpro.nikkeibp.co.jp/article/COLUMN/20070402/267126/

-Aira-
質問者

お礼

回答ありがとうございます。 exerciseとreportをjoinして、提出済みのみを一覧で表示させるということはできたので、 それを使う方向で考えようと思います。 知りませんでした。リンク先ありがとうございます。preg_match()で代用しますね。

その他の回答 (1)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

まず、×すら echo されていないって事は ↓の時点で蹴られてるということ。 > if ($table['lessonname'] == $report['lessonname'] && $table['name'] == $report['exercisename']) { んで、#1の方も言っているように、ここは本来SQLでやらせたほうが良さげ。 あと、これ ↓、何度繰り返そうとも、reportテーブルから取ってきたものの1行目しか処理してません。 > $recordSet2 = mysql_query('SELECT * FROM report'); > $report = mysql_fetch_assoc($recordSet2); なので、これの次の行の if で蹴られているんじゃないかなと思ったりしました。

-Aira-
質問者

お礼

回答ありがとうございます。 指摘をいただいたところを見直して変えてみたりして、 提出済みのみを一覧で表示させることはできました。 これを使う方向で考えようと思います。