2012年3月5日月曜日

2012年03月02日 講義023日目

2012年03月02日
講義023日目
------------------------------1H------------------------------
★職業能力基礎
  ●自己分析
    ・成功経験
    ・会社分析
        求人の方法で、その企業のお金の使い方がわかる
        求人の更新日を確認、求人をいつも出している企業はリスクが高い傾向
------------------------------2H------------------------------
★掲示板作成
  ●CRUD
    ・「作成(Create)」「読み出し(Read)」「更新(Update)」「削除(Delete)」
  ●掲示板を作ろう
    ・新規PHPプロジェクトBBSを作成
    ・index.php
    ・submit.php
    ・reply.php
    ・reply_submit.php
  ●commnetテーブル
    ・MySQLでcommentテーブルを作る
        create table comment (
        id int not null auto_increment,
        nickname text,
        content text,
        created_at datetime,
        primary key(id)
        );
    ・カラムにいくつかデータを入力してみる
        mysql> insert into comment (nickname, content, created_at)
            -> values("user aaaa","ouououou","2011/02/10 10:55:02");
    ・commnetテーブルの内容
        +----+-----------+----------+---------------------+
        | id | nickname  | content  | created_at          |
        +----+-----------+----------+---------------------+
        |  1 | user aaaa | hallo!   | 2011-02-06 09:08:02 |
        |  2 | user bbbb | wwwwwww  | 2011-02-09 09:07:06 |
        |  3 | user aaaa | ouououou | 2011-02-10 10:55:02 |
        +----+-----------+----------+---------------------+
    ●replyテーブル
    ・MySQLでreplyテーブルを作る
        create table reply (
        id int not null auto_increment,
        comment_id int,
        nickname text,
        content text,
        created_at datetime,
        primary key(id)
        );
    ・comment_idにデータをいくつか入力
        comentテーブルに入力した内容でidが存在しないものも作ってみる
          comentテーブルに存在してる内容↓
          mysql>  insert into reply (comment_id,nickname, content, created_at) values("2",
          "user aaaa","yyyyyy","2011/02/10 10:58:08");
        comentテーブルに存在していない内容↓
          mysql>  insert into reply (comment_id,nickname, content, created_at) values("9",
          "user zzz","zzzzzzzzz","2011/02/12 12:58:08");
    ・replyテーブルの内容
        mysql> select * from reply;
        +----+------------+-----------+-----------+---------------------+
        | id | comment_id | nickname  | content   | created_at          |
        +----+------------+-----------+-----------+---------------------+
        |  1 |          2 | user aaaa | yyyyyy    | 2011-02-10 10:58:08 |
        |  2 |          9 | user zzz  | zzzzzzzzz | 2011-02-12 12:58:08 |
        |  3 |          1 | user aaaa | bbbbbbb   | 2011-02-13 13:58:08 |
        +----+------------+-----------+-----------+---------------------+
  ●index.phpのソース
      <?php
      //mysqlに接続する
      $db = mysql_connect("localhost", "ユーザ名", "パスワード");
      //データベースを選択する
      $sdb = mysql_select_db("データベース名");
      //クエリを送信する
      $sql = "SELECT * FROM comment order by created_at desc";
      $result =mysql_query($sql);
      ?>

      <html>
      <head>
      <title>SHONAN BBS</title>
      <meta http-equiv="content-type" content="text/html; charaset=utf-8" />
      <style type="text/css">
      body {
      font-size: 13px;
      }
      </style>
      </head>
      <body>
      <h1>SHONAN BBS</h1>
      <hr noshade size="1" />
      <?php
      while($row = mysql_fetch_array($result)) {
          print "<div style=\"border:1px solid #ddd;
                  marfin-bottom:10px:padding:5px;\">";
          print $row["nickname"]."さんの投稿<br>";
          print $row["content"]."<br>";
          print $row["created_at"]."<br>";
          print "<a href=\"reply.php?comment_id=".$row["id"]."\">返信する</a>";
          print "</div>";
      }
      ?>
      <hr noshade size="1" />
      <div style="text-align:center">SHONAN BBS</div>
      </body>
      </html>     
------------------------------3H------------------------------
★掲示板作成
  ●入力フォームを書き加える
      <form action= "submit.php" method="post">
      内容<br>
      <textarea name="content" cols="60" rows="10"></textarea><br>
      ニックネーム<br>
      <input type="text" name="nickname" size="20"><br>
      <input type="submit" name="send" value="投稿する">
      </form>
  ●submit.php作成
      <?php
        $content = $_POST["content"];
        $nickname = $_POST["nickname"];

    ・エラーフラグ
        $error_yn ="n";//エラーがあるかどうか
        $nickname_error_yn = "n";//ニックネームが入ってるか
        $content_error_yn = "n";//内容が入ってるか
        $content_worderror_yn = "n";//

    ・エラーチェック
        if ($nickname == "") {
            $nickname_error_yn = "y";
            $error_yn = "y";
        }
        if ($content == ""){
            $content_error_yn = "y";
            $error_yn = "y";
        }
    ・strpos関数は、最初に見つかった位置を返す
      一番最初に該当する文字があった場合「0番目」となるので、
        falseと!==で比較して、0と区別します
          if (strpos($content, "NGワード") !== false){
              $content_worderror_yn = "y";
              $error_yn = "y";
        }

    ・エラーがなかったらデータベースにデータを挿入
        if ($error_yn == "n") {
            //mysqlに接続する
            $db = mysql_connect("localhost","ユーザ名","パスワード");
            // データベースを選択する
            $sdb =mysql_select_db("データベース名");
            //クエリを送信する
            $sql = "INSERT INTO comment (nickname, content, created_at)
            values ('".
            $nickname."','".
            $content."','".
            date("Y-m-d H:i:s").
            "')";

            $result = mysql_query($sql);
        }
        ?>
    ・ここからHTML
        <html>
        <head>
        <title>SHONAN BBS</title>
        <meta http-equiv="content-type" content="text/html; charaset=utf-8" />
        <style type="text/css">
        body {
        font-size: 13px;
        }
        </style>
        </head>
        <body>
        <h1>SHONAN BBS</h1>
    ・エラーチェックロジック
        <?php
        if ($error_yn == "y") {
                print "エラーがあります。<br>";
            if($nickname_error_yn == "y") {
                print "ニックネームが入力されていません<br>";
            }
            if($content_error_yn == "y") {
                print "内容の入力がされていません<br>";
            }
            if($content_worderror_yn == "y") {
                print "不適切な文字が含まれています<br>";
            }
        } else {
            print "投稿が完了しました";
        }
        ?>
        <a href="index.php">戻る</a>
        </body>
        </html>
  ●date関数
    ・date("Y-m-d H:i:s",)
        date("得たい文字列",
        Y-m-d H:i:sの形でデータベースに渡す
------------------------------4H------------------------------
★掲示板作成
  ●返信用ループをつくる
    //返信用ループここから
    $sql = "SELECT * FROM reply
    WHERE comment_id = '".$row["id"].
    "' ORDER BY created_at DESC";
    $result_reply = mysql_query($sql);
    while($row_reply = mysql_fetch_array($result_reply)) {
        print "<div style=\"border:1px solid #ddd;
        marfin-bottom:10px:padding:5px;
        background-color:#f3f3f3;margin-left:40px;\">";
        print $row_reply["nickname"]."さんの返信<br>";
        print $row_reply["content"]."<br>";
        print $row_reply["created_at"]."<br>";
        print "</div>";
    }
    //返信用ループここまで
   
  ●CSSを外部に持たせる
    ・内部に書いていたstyle部分を外部に移す
        body {
        font-size: 13px;
        }

        .commentBox {
        border:1px solid #ddd;
        marfin-bottom:10px;
        padding:5px;
        }

        .replyBox {
        border:1px solid #ddd;
        marfin-bottom:10px:padding:5px;
        background-color:#f3f3f3;
        margin-left:40px;
        }

        #footer {
        text-align:center
        }
------------------------------5H------------------------------
★掲示板作成
  ●reply.phpの作成
    ・commentテーブルのcomment_id
        <?php
        $row = mysql_fetch_array($result);
        print "<div class=\"commentBox\">";
        print $row["nickname"]."さんの投稿<br>";
        print $row["content"]."<br>";
        print $row["created_at"]."<br>";
        print "</div>";
        ?>
         
    ・フォーム
        index.phpの流用
        <form action= "submit.php" method="post">
        内容<br>
        <textarea name="content" cols="60" rows="10"></textarea><br>
        ニックネーム<br>
        <input type="text" name="nickname" size="20"><br>
        <input type="submit" name="send" value="投稿する">
        </form>
            ・reply.phpからreply_submit.phpへ
        index.phpからの流用
------------------------------6H------------------------------
★掲示板作成
  ●reply_submit.php
    ・submit.phpからほぼ流用
        $comment_id = $_POST["comment_id"];
        を追加
 
    ・エラーチェックのロジック
      submit.phpからほぼ流用
        データベースのエラーがなかったらデータベースにデータを挿入
        if ($error_yn == "n") {
            //mysqlに接続する
            $db = mysql_connect("localhost","ユーザ名","パスワード");
            // データベースを選択する
            $sdb =mysql_select_db("データベース名");
            //クエリを送信する
            $sql = "INSERT INTO reply (comment_id, nickname, content, created_at)
            values ('".
            $comment_id ."','".
            $nickname ."','".
            $content ."','".
            date("Y-m-d H:i:s").
            "')";
-----------------------------memo------------------------------
プログラムの流れを追って理解する余裕がちょっと無い
メモ的に流れを書いておくべきかも

0 件のコメント:

コメントを投稿