2011/01/14

php掲示板、デバック

php講習 1/14

・今日も掃除は東浜でした。

<1時間目>
・本日の予定
 デバックの方法について(ポイント)説明
 掲示板の再構成

・準備
eclipse,zampp,mySQLクライアントの起動

・デバックの方法
bbsプロジェクトにtest.phpを作成

・デバックの手段
プログラムの中でどこを通ったか(処理したか)確認したいとき、
プログラムの途中で足跡を入れる。
echo "L 12" ;    # 12行目
変数の内容を確認したいとき、出力を入れる。
print '変数$a = ' .$a . "<br />" ;

・htmlでformを作成
<html>
     <head>
          <title>デバック方法</title>
     </head>
     <body>
          <h1>デバックについて</h1>
          <form action="./test.php" method="post">
               <input type="text" name="a" />
               <input type="submit" name="send" />
          </form>
     </body>
</html>

・phpで受け取る
# 変数
$a = $_POST["a"] ;

・実際に画面で動かしてみると、入力値によって、出力が変わる。
では実際にどの処理を通っているのか、足跡を入れてみる。
  echo "L 12" ;    # 12行目

・phpで変数の種類チェックを追加
if (is_numeric($a)) {                 # 変数の種類が数値かチェック
     echo "L 17 <br />" ;            # デバック出力
     print "入力値は数値です<br />";
     if ($a==1) {
...

<2時間目>
・phpで変数が数字以外のチェックを追加
     if ($a=="a") {
          echo "L 38 <br />" ;            # デバック出力
          print "aです" ;
  ...

・出力を、「ボタンが押されたとき」にする。
 if ($_POST["send"]) {                   # ボタンが押されたとき

<3時間目>
・確認が終わったらデバックで出力した命令を削除する。

・次は、DBを使った場合のデバックのしかた(test2.php)
 準備として、mySQLクライアントを上げておく

・SQL文でデータを読んだときの出力確認方法
(ソースの表示を見るなら<pre>はなくてもいい)
while ($row1 = mysql_fetch_array($result)) {
     print $row1 ;                                      # デバック出力
     print "<pre>" ;
     print_r( $row1) ;                                   # デバック出力
     print "</pre>" ;

     var_dump($row1);
     print "<pre>" ;
     var_export($row1) ;
     print "</pre>" ;
}

・ネスト(reply)も見るときに追加
     #   クエリ、投稿の返信
     $sql = "SELECT * FROM reply WHERE comment_id = '".$row1["id"]."' ORDER BY created_at DESC";
     $result1 = mysql_query($sql);
     #   返信内容の表示
     while ($row2 = mysql_fetch_array($result1)) {
          print "L 42<br />" ;
          var_dump($row2);
     }

<4時間目>
・出力結果の味方解説
・昨日の作業で終了していない人は、今日の解説を参考に仕上げて下さい。
・出来た人は、課題
 phpのソースとhtmlのソースが混在しています。
 なるべくphpとhtmlを分けて書いてみましょう。
 (現在のファイルを書き直す)
・ヒント
<h1>表示のテスト</h1>
<table>
<?php while($row1 = mysql_fetch_array($result)) { ?>
<tr>
     <td><?php echo $row1["nickname"] ?>
     <td><?php echo $row1["content"] ?>
     <td><?php echo $row1["created_at"] ?>
</tr>
<?php } ?>
</table>
・掲示板が出来ていない人は、個別に状況を確認します。

<5時間目>
・掲示板が出来ていない人は、引き続き個別に状況を確認します。
・今週で掲示板は終了です。
・phpのソースはメールで送ります。

0 件のコメント:

コメントを投稿