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

2011/03/07

smartyで掲示板

php講習 3/7 14週目

・掃除はなんと雪でお休みでした。
・今日までSmartyの予定でしたが、お休みが多い。
・今日は4時間です。さらに、今週は水曜日がお休み

<1時間目>
九九の表をsmartyで、今日はメールで送付しなくていい。
九九の表の解説、2次元配列に値を入れる仕組みについて。
smartyで、{foreach}を2重に記述する。(くわっちの例とは違うけど)
{{foreach $num as $key1=>$row}}
    
    {{foreach $row as $key2=>$col}}
        

テーブルタグ<tr><td>の位置に注意
ソースはメールで送付されました。
・BBSの続き
返信の出し方について、解説。
コメントの出力が出ている人は、返信の出し方について、九九の表を参考に。
テーブルを2つ使うときは、if文を使って条件判断をして出力する。

<2時間目>
・BBSの続き、デバック
(1)投稿のニックネームのリンクの表示がおかしい。テーブルタグは正しいが、表示のみ余分な文字列が付く。
<a href="www.yahoo.co.jp">smarty</a> さんの投稿<br />
→仕様? データにhttp://が付いていないとFirefoxが補完機能を働かせて?「http://localost/bbs_smarty/」を付ける
(2)返信のニックネームの表示に余分な文字が付く
→修正
(3)emailが表示されない。
→emailの保存/表示処理がない

・くわっちの一言:テンプレートで出力を確認する際は、一度に全てのカラムを表示させるのでは
なく、1つだけ表示して、うまくいったら他のカラムも表示する、という手順にしましょう。また、
IF文など、複雑な部分も一旦とっぱらって、後からにしましょう。

<3時間目>
・BBSの続き、デバック

<4時間目>
・BBSの解説
メールで資料が配布されているので、参照する。
パラメータを1つで渡す方法と、2つで渡す方法があります。
/imgフォルダの指定は、index.tplのhtmlタグで指定していますが、
index.phpからの相対パスで、index.tplからの相対パスではありません。
・comment.id = reply.comment_idの判断をどこでやるか。
phpで多次元配列を作り、テンプレートに渡す。
ロジックを書くのは、プログラマ。
デザイナには負担はかけないほうがいい。
・配布したソースでは、セッションの使い方など、今まで説明した機能はなるべく使っています。
smartyの書き方の参考にして下さい。

ごごは、すっかり雨もあがった。

今日は、くわっちの最後の日でした。

*サクラエディタでのphpの設定について

2011/01/20

php掲示板、削除フラグを見るように変更

php講習 1/20

・掃除は先週から引き続き東浜でした。

<1時間目>
・準備
 eclipse,zampp,mySQLクライアントの起動
・課題、FizzBuzzを作成、出来たらメールで送る。
・問題2、削除機能の説明
 機能追加作業

<2時間目>
・問題2、削除機能追加作業
 画面レイアウト

<3時間目>
問題2、削除機能追加作業

<4時間目>
問題2、削除機能の説明
 ○確認方法
 削除したとき、画面から表示がなくなっていること
 DBのcommentテーブルからレコードがなくなっていること
 DBのreplyテーブルからレコードがなくなっていること

<5時間目>
問題2、削除の続き
 削除したデータを見たかったとき、どのような処理をすればよいでしょうか。
・物理削除
・論理削除
論理削除に必要なものを整理

<DB>
・カラム追加、削除フラグ
ALTER TABLE comment ADD delete_flg tinyint(1) default 0 ;
ALTER TABLE reply ADD delete_flg tinyint(1) default 0 ;

*mySQLはboolean型がない。このため、1桁の数字で0/1を使用する。

・データ件数の確認
select * from comment where delete_flg =0 ;
→件数確認
・フラグを立ててみる。
update comment set delete_flg = 1 ;
・データ件数の確認
select * from comment where delete_flg =0 ;
→件数確認、0件

<6時間目>
<php>
・SQL文、参照を変更
index.php(,submit.php,reply.php,delete.php,delete_submit.php)を変更
$sql = "SELECT * FROM comment where delete_flg = 0 order by created_at desc";

2011/01/19

php掲示板、メールアドレスと削除機能追加

php講習 1/19

・掃除は引き続き東浜でした。

<1時間目>
・課題、FizzBuzzを作成、出来たらメールで送る。

<2時間目>
・課題、FizzBuzzを作成、出来たらメールで送る。
 1ケ月前よりも出来ている人が増えたそうです。
 答え合わせ、解説。
・掲示板機能追加
☆メールアドレスを入力する
部分の追加()
☆削除
仕組みを考える。

<3時間目>
・機能追加の進め方について説明
問題1、問題2の機能を追加する。
改善は、それが出来てから。

<4時間目>
・機能追加
 問題1の機能を追加する。
 SQL文の組み立てでエラーだと、sql文の実行でエラーにならない。
 問題1が出来た人は問題2の機能を追加する。
・問題1
今まで作ってきた掲示板にメールアドレスを入力できるようにする。
・手順
1.各フォームにメールアドレスを入力する欄を追加する。(comment,reply)
    index.php、reply.phpでフォームを修正(urlのあと)

     MAIL<br />
     <input type="text" name="mail size="20"><br />
     select * from comment order by id desc limit 1;
     select * from reply order by id desc limit 1;
2.リクエストからメールアドレスを受け取る処理の追加

    submit.php,reply_submit.php
    $mail      = $_POST["mail"];
3.DBのテーブルにカラムの追加(commentテーブル、replyテーブル)
>  alter table comment(reply)
>  ALTER TABLE comment ADD mail TEXT AFTER url ;
desc comment ;ALTER TABLE reply ADD mail TEXT AFTER url ;
desc reply ;

4.DBに登録する部分の追加
    submit.php,reply_submit.phpで insert文の修正

      $sql = "INSERT INTO comment (nickname, content, url, mail, created_at)
      values ('".$nickname."','".$content."','".$url."','".$mail."','".date('Y-m-d H:i:s')."')" ;
5.表示の追加
    イニシャルのうしろ(右)に追加
    urlの出力で<br />を削除
    <a href="mailto:"<?php    echo $row1["mail"]   ?>">"<?php    echo $row1["mail"]   ?><
・問題1の答え合わせ、解説。

<5時間目>
・機能追加、引き続き問題1の作業
 終わった人は、問題2
・問題2
1.コメントの削除用のページの作成
    delete.php           (reply.phpからコピー)
    delete_submit.php  (reply_submit.phpからコピー)
2.index.phpからdelete.phpへのリンクを張る
      index.php
3.コメントの削除を行う
    $sql = "delete from comment where id=". $comment_id ;

先生より、ブログ用ソースの記述方法を教わったので書き直します。
ソースが枠から出ているものもありますが、cssを修正しないといけないので、継続して調べます。

2011/01/18

php掲示板、phpとhtmタグを分ける記述方法

php講習 1/18

・今日は、午前中ハローワークに行っていました。
・午前中は、「FizzBuzz」問題だったそうです。
「FizzBuzz」問題はこちらを参照して下さい。
・あと、index.phpをhtmlとphpに分ける。
これからphpのプログラムを書くにあたり、php開発ではwebデザイナと作業分担することになることがあります。
htmlはデザイナの人に書いてもらうので、 phpの作業とhtmlの作業を分けるという感覚を身に着けて下さい。

<3時間目>
・index.phpをhtmlのタグとphpに分ける。

<4時間目>
・index.phpをhtmlとphpに分ける。
 引き続きソースの修正
 答え合わせ、ソースは長くなるので見送り。
 「イージーミスを見つける最短の道はキレイなソースを書くこと!インデントはしっかりつけてね~
」だそうです。
 うまく動かないときは、「’」シングルクォート、「”」ダブルクォート、スペース、タグ、「[]」「{}」の対応など見直し。

・掲示板の拡張、意見をブレーンストーミング
(1)追加したい機能
(2)直したい機能

<5時間目>
・掲示板の拡張、意見をブレーンストーミング
(1)追加したい機能
3チームに分け、それぞれ発表、色々ありました
 後ほどメールで送ります。
 内容は、整理して今後掲示板に追加して行きます。

(2)直したい機能
・DBアクセスの際のログインコマンドなどの記述の冗長性に対応

2011/01/17

php掲示板、phpとhtmタグを分ける記述方法

php講習 1/17

・先週金曜日から花粉症が始まり体がだるい。
・掃除は先週から引き続き東浜でした。

<1時間目>
・準備
 eclipse,zampp,mySQLクライアントの起動
・掲示板の続き
 掲示板のプログラム、先週までの最終形はメールで送ります。
・phpとhtmlを分ける書き方
新しいプログラムtest3.phpを用意して動きを見ます。
<2時間目>
・phpとhtmlを分ける書き方続き

<3時間目>
・課題の答え合わせ
・submit.phpをhtmlとphpに分ける。
・reply_submit.phpをhtmlとphpに分ける。

<4時間目>
・submit.phpをhtmlとphpに分ける。
 答え合わせ
          <p>
          <?php if ($error_yn == 'y') { ?>
               エラーがあります。<br />
          <?php     if($nickname_error_yn == 'y') { ?>
                    ニックネームが入力されていません
          <?php     } ?>
          <?php     if($content_error_yn == 'y') {      ?>
                    内容が入力されていません
          <?php     }
               } else { ?>
               投稿が完了しました <br />
          <?php } ?>
          </p>
・reply_submit.phpをhtmlとphpに分ける。
          <p>
          <?php      if ($error_yn == "y") { ?>
                         エラーがあります。<br />
          <?php          if ($nickname_error_yn == "y") { ?>
                              ニックネームが入力されていません。<br />
          <?php          }       ?>
          <?php          if ($content_error_yn == "y") { ?>
                              内容が入力されていません。<br />
          <?php          }       ?>
          <?php          if ($comment_id_error_yn == "y") {  ?>
                              返信元IDがありません。<br />
          <?php          }       ?>
          <?php          } else { ?>
                         投稿が完了しました。<br />
          <?php     }           ?>
          <p />

<5時間目>
・reply.phpをhtmlとphpに分ける。
               <?php     if ($row["url"] != "" || $row["url"] != NULL ) { ?>
                         <a href="<?php echo $row["url"]  ?> "> <?php echo $row["nickname"] ?> </a>  さんの投稿<br />
               <?php     } else { ?>
                    <?php     echo $row["nickname"]; ?> さんの投稿<br />
               <?php     } ?>

・echoを使う
test3.phpにてphpinfo()関数を追加。
結果を確認する。
そのなかで、short_open_tagが「off」
「on」のとき、echoを省略することができる。
          <?php echo $msg  ?>
          <?= $msg ?> 

・htmlとphpを分ける理由
これから、MVCモデルを説明するとき、その第一歩としてコードを分ける。
(htmlのタグをphpの外に出すと考えるとわかりやすいかもしれないとのこと)

・明日は、index.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のソースはメールで送ります。