ラベル debug の投稿を表示しています。 すべての投稿を表示
ラベル debug の投稿を表示しています。 すべての投稿を表示

2011/02/07

php住所録、sqlのデバック

php講習 2/7 10週目

・掃除は東浜でした。

<1時間目>
・九九の表を作成。FizzBuzzを追加(2/4と同じ)
 出来たらメールで送付。

<2時間目>
・SQL文のデバック方法について
 今回のphpのデバックでは、SQL文が原因でうまく動かない場合がある。
 select文は結果がデータ(配列等)で得られるので誤りに気がつきやすい。
 しかし、insert文、delete文、update文は、実行結果の確認のため、
 テーブルの内容を確認する必要がある。
 これは、(1)SQL文を出力しておき、(2)コマンドラインから実行してみることで確認できる。
  print $sql ;

また、mysqlの関数を呼び出しているので、実行結果をIF文で確認する。
  $result = mysql_query($sql) ; 
  if ($result) {
   print "SQL実行OK" ;
  } else {
   print "SQL実行NG!" ;
  }

・引き続き住所録の作成


<3ー6時間目>
・引き続き住所録の作成
・詳細一覧画面(index.php)が作成途中の人
 複合検索がむずかしい人は、名前検索、県の検索、アドレス検索いづれかでも良い
 一覧表は作るように
・一覧画面から編集画面への処理は、時間がかかるので今から作るのは
 時間的にむずかしい。新規登録画面を優先して下さい。
・新規登録と編集画面で、確認画面から前の画面に戻る処理は難しいので出来る人は実施、
出来ていない人は、やらなくてもいい。そこで止まると全体の作業が進まないため。
・全部出来ない人は、一覧画面(index.php)と新規登録(insert.php)の進捗にしてもいい。
 
・本日終了時点での進捗状況をメールで連絡する。

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のソースはメールで送ります。