DB操作 newsfeed制作1
newsfeed制作
企業サイトのトップページによくある更新情報のリンク一覧を作る。今回はトップページ(index.php)の記述について学ぶ。
DB作成
- xamppパネルからphpMyAdminを開く。
- DBを作成。DB名はnewsfeedとする。照合順序はutf8-general-ci。
- tableを作成。table名はnewsとする。
- カラム定義
主キー
- 名前:news_id
- データ型:int
- インデックス:Primary
- A_I(Auto Increment):checked
ヘッドライン(記事タイトル)
- 名前:news_headline
- データ型:varchar
- 長さ/値:128
- 照合順序:utf-8-general-ci
記事本文
- 名前:news_article
- データ型:text
- 照合順序:utf-8-general-ci
投稿日時
- 名前:news_date
- データ型:datetime
仕様
2ページ構成。index.phpにニュースの見出しを一覧を表示させ、クリックすると本文が表示される仕様。
index.phpの記述1
まずDBとの接続確立~値取得が可能な環境構築までを記述する。
変数初期化、変数宣言
$dbh="";
$db_connect='mysql:host=localhost;dbname=newsfeed;charset=utf8';
$db_user='root';
$db_pass='root';
$dbhは後でdbハンドラを格納する。$db_connectはDBに接続する際に必要なhost名、DB名、charsetを定義。$db_use,$db_passはそれぞれDBへのログインID,password。
try文
try{
DBをつかみに行く際には、DBとの接続確立をtryする、という格好になる。そのため、成功時と失敗時の処理が記述される。
try成功時の処理
$dbh=new PDO($db_connect,$db_user,$db_pass);
DBに接続し$dbhにDBハンドラを格納している。なお、utf8にハイフンは不要なので注意。PDOとはクラスの一種で、データベース抽象化を担う。
try失敗時
}catch(Exception $e){
tryが失敗した場合の命令。エラーメッセージを捕まえ、後述の処理を実行させる。if文のelse部に似ている。
try失敗時の処理
exit('ランタイムエラーが発生しました');
tryが失敗したときの挙動として、処理を停止させている。('')内に文字列を記述することで、exitに際しコメントを表示させられる。
index.phpの記述2
DBから実際の値を取得し、表示させる処理。今回はforeachを使う。
コード記述
<div id="news"> <table> <?php foreach($stmt as $row){ print'<tr><th><a href="news.php?news_id='; print h($row['news_id']); print'">'; print h($row['news_headline']); print'</a></th><td><span class="gry">'; print h($row['news_date']); print"</span></td></tr>\n"; } ?> </table> </div><!--#news-->
表示部分。ヘッドライン、時刻を表示させる。idは取得するが表示させず、urlに反映させリンクページを確定させている。このままだと全件表示してしまうので、後で修正する。