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 件のコメント:
コメントを投稿