狠狠撸

狠狠撸Share a Scribd company logo
PHP で M y SQL を使う ウェブアプリケーション勉強会 担当:兼山
前回までにやったこと Apache/PHP のインストールとプログラミング MySQL のインストールと SQL 文の紹介
今日やること MySQL と PHP を組み合わせて使う例題として掲示板を作ってみようと思います。
PHPで掲示板を作る まだやってないこと HTML からフォームの値を受け取る PHP で MySQL にデータを挿入する* PHP で MySQL からデータを取得する* PHP で HTML を出力する。
必要なこと モデルを決めること( MySQL ) 外観を決めること( PHP ) どうやって実現するか( MySQL/PHP )
データベース設計(モデリング?) スレッドモデル スレッドがあってそこにコメントが連なる。 身近な(?)例: 2 ちゃんねる , mixi (例示)
?
?
データベース設計 モデルをテーブルに写し取る Thread table Comment table
Thread tableに必要なもの (ID) タイトル 立てた人 説明 立てた日
Comment tableに必要なもの (ID) (どのスレッドに対する発言なのか) 書いた人の名前 内容 書いた日付
データベース準備 Create database bbs;
SQL例 CREATE TABLE `thread` ( `id` int(10) unsigned NOT NULL auto_increment, `title` varchar(100) NOT NULL, `author` varchar(100) NOT NULL, `description` text, `date` timestamp NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY  (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 CREATE TABLE `comment` ( `id` int(10) unsigned NOT NULL auto_increment, `thread_id` int(10) unsigned NOT NULL, `author` varchar(100) NOT NULL, `content` text NOT NULL, `date` timestamp NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY  (`id`), FOREIGN KEY (thread_id) REFERENCES thread(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8
SQLの説明 `id` int(10) unsigned NOT NULL “ ユニークであること”を実現する手っ取り早い方法 auto_increment : ID に自動で番号を当ててくれる `date` timestamp NOT NULL default CURRENT_TIMESTAMP, DB に書き込んだ時間を教えてくれる PRIMARY KEY  (`id`) Id のユニークさを保障してくれる
SQLの説明 FOREIGN KEY (thread_id) REFERENCES thread(id) ON DELETE CASCADE 無いスレッドには書き込めない。(外部制約) スレッドが消えたらコメントも消してくれる
データベースができたら PHP で MySQL にデータを挿入する* PHP で MySQL からデータを取得する* ↓ mysql_connect() を使う?
MySQL/PHP // データベースとの接続を確立 $link = mysql_connect("localhost", "root", “XXXX") or die("mysql_connect failed."); mysql_query("SET CHARACTER SET utf8;"); mysql_selectdb("bbs",$link);
MySQL/PHP $result = mysql_query('SELECT id,title,description FROM thread'); if (!$result) { die(' クエリーが失敗しました。 '.mysql_error()); } // 返ってきた結果を一行ずつ $row に取り出す。 while ($row = mysql_fetch_assoc($result)) { echo  $row['id'];   }
くソースリーディング みんなでしょうもないコードを読もう!!
bbs.php とりあえずサンプル作っときました bbs.php  スレッド一覧 show.php  スレッドの表示 http://pcod.no-ip.org/bbs.zip
サンプルに機能を追加しようぜ! このサンプルのやばいところ データの正当性のチェック( validation )をしてねえよ HTML タグが使えねえよ スレッド一覧にスレッドごとのレスのカウントが表示されねえ 全文検索できねえ つまんねえ
もっともっと そもそもこの設計はありなの? 脆弱性の問題 MySQL とのコネクションは毎回作っていいの?
まとめ MySQL でのテーブル設計 言語からデータを出し入れする HTML とプログラムの間の通信 これらはそれぞれいろいろなやり方があるので調べてみてください。

More Related Content

笔丑辫で惭y厂辩濒を使う