更新情報
竹迫さん、phaさん、ひろゆきさん、いとまささんを追加しました!ありがとうございます!!
日本のGeeksは本当に優しい。
泣けてくるぜよ><
geek DataBase - ギークデータベース
$_GETの値をキーに、データベースからデータを読み取る
以下、個別ページのPHPソース
※解説は 『MySQL入門以前』 を参考に書いています。
1 <?php
2 extract($_GET);
3 mysql_connect('localhost','ユーザ名','パスワード');
4 mysql_select_db('データベース名');
5 mysql_query("set names utf-8");
6
7 $sql="select * from geekDB where id = " . $id;
8 $result = mysql_query($sql);
9
10 // id=数字以外はエラーメッセージを表示
11 if(!is_numeric($id)){
12 echo "該当データがありません";
13 }
14 else{
15 // ここまで
16
17 while ($item = mysql_fetch_array($result)) {
18 echo "<h2>";
19 echo $item["name"];
20 echo "</h2>";
21 ・・・(中略)・・・
22 }
23 }
24 ?>
2行目はGETメソッドで送られてきたデータの受け取りを許す、という意味。
3〜5行目はお決まりの手順。
データベース接続&文字コード指定。
7,8行目もPHPを使ってMySQLを操るとほぼ同じなんだけど、
今回は where id = " . $id というのがくっついてる。
何が違うか。
ある条件に適合するデータだけを表示したい場合は、select文の末尾で条件を指定するそうな。
つまり、$id のデータだけを表示させたいと。
11〜14行目は、実は最初にUPしたときは入れてなかった。
公開後にTwitterやメール等で何人かにご指摘いただき、慌てて追加><
これがないとどうなるかというと・・・
たとえば、アドレスバーのURLに”id=A ”や”id=あ”といった数字じゃない文字を入力すると、
真っ白な画面になってしまう。
なぜって、そんなデータはないから。
idのデータ型はINT。
数字しか使えない。
これを回避するために、idが数字以外だったらエラーメッセージを出すことに。
試行錯誤の末、ようやく変数が数字かどうかを調べる関数を発見!
is_numeric 変数が数値か調べる
is_numeric(変数名)
戻り値:数値の場合はTRUE,数値ではない場合はFALSE
参考:『PHP辞典 第2版 (DESKTOP REFERENCE)』
if〜else構文を使って「もし $id が数字じゃなかったら {中カッコ} 内の処理を実行せよ。
それ以外(つまり$idが数字)だったら else 以下を実行せよ」と命令したい。
真/偽を反転させるには”!”を使う、と以前ナイスギークに教わった。
参考:6日目 クッキー受け取ってください!
だから、is_numeric の頭に”!”を付ければOK!(←これは感情を込めたエクスクラメーションマーク)
17行目も前と同じ。
18行目以下はひたすら echo が続くだけなので省略。
22,23行目で {中カッコ} を閉じて終了♪
やーやー。
めでたしめでたし。
このページを作れば、あとはDBにどんどんデータを追加していくだけでいいのだよ!素晴らしい!!
ビバDB!データベースばんざい\(^o^)/ ドラゴンボールばんざい\(^o^)/