2012年4月5日木曜日

2012年04月05日 講義042日目

2012年04月05日
講義042日目
------------------------------1H------------------------------
★管理画面作成
●コメント編集画面
・comment_list
編集画面のデータ混乱を防ぐためにセッションのクリア
・comment_edit
bbs/tmp/に編集される画像を一時的に保存するためのロジック
・comment_input
最初にこのページに来たのか、戻るボタンで来たのかを分岐
{if $smarty.session.tmpnickname != ""}
    <input type="text" name="nickname" size"20"
           value="{$smarty.session.tmpnickname}">
{else}
    <input type="text" name="nickname" size="20"
           value="{$comment.nickname}">
{/if}

<textarea>内に無用なインデントを入れるとテキストエリア内でインデントが作られる場合がある(smartyのせい?)
・comment_edit_comfirm

------------------------------2H------------------------------
★管理画面作成
●コメント編集画面
関数の中で関数を呼ぶ処理
・myUtil::getFileExt()
ファイルの拡張子を見てる
・getFileExtId()
getimagesize()で拡張子を返す
・エラー制御演算子
関数に@をつけるとエラーを表示しなくなる
ワーニング、ノーティスを出したくないところにつける
エラーをだしてくれないのであまり使用しない方がいい
------------------------------3H------------------------------
★管理画面作成
●コメント編集画面
・confirm/resultでのページ更新を防ぐロジックの実装
input.php
$_SESSION["comment_edit_input_id"] = rand();
input.tpl
  <input type="hidden" name="comment_edit_input_id"
         value="{$smarty.session.comment_edit_input_id}">
comment_edit_confirm.php
//input.phpから来たかどうかを判断する処理
if($_SESSION["comment_edit_input_id"] != $_POST["comment_edit_input_id"]){
    header("Location:http://localhost/bbs/admin/index.php");
}else{
    $_SESSION["comment_edit_input_id"] = rand();
}

//result.phpでconfirm.phpから来たかどうか判断するための処理
$_SESSION["comment_edit_confirm_id"] =rand();
comment_edit_confirm.tpl

・確認
confirmでページ更新
resultでページ更新
confirmに直接URLを打つ
resultに直接URLを打つ
------------------------------4H------------------------------
★管理画面作成
●内部結合と外部結合
comment_delete.php修正
・内部結合
SELECT * FROM comment,reply WHERE comment. id = reply.comment_id;
SELECT * FROM comment INNER JOIN reply
         WHERE comment,id = reply.comment_id;
二つ以上のテーブルで条件と一致するもののみ取得
$sql = "DELETE comment,reply
        FROM comment,reply
        WHERE comment.id =reply.comment_id
        AND comment.id ='".$id."'";
・外部結合
(LEFT JOINで左側基準)
SELECT * FROM comment LEFT JOIN reply
         ON comment.id = reply.comment_id;
(RIGHT JOINで右側基準)
SELECT * FROM reply RIGHT JOIN comment
         ON comment,id = reply.comment_id;
片方のテーブルを基準にして、
そのテーブルの全データを条件に一致するもう片方のテーブルを取得
$sql = "DELETE comment,reply
        FROM comment LEFT JOIN reply
        ON comment.id = reply.comment_id
        WHERE comment.id ='" . $id. "'";
mysql_query($sql);
・完全外部結合
UNIONを使う
------------------------------5H------------------------------
------------------------------6H------------------------------
★管理画面作成
●メンバー編集画面の作成
comment_edit_input
comment_edit_confirm
comment_edit_result
を参考にして
member_edit_input
member_edit_confirm
member_edit_result
の作成
★symfonyを使ったサイト作成の発表会見学
-----------------------------memo------------------------------
セッションの使い方は奥が深そう

0 件のコメント:

コメントを投稿