ギークなお姉さんは好きですか

恋焦がれる理想の男性・ギークに近づくため、プログラミングがわかるお姉さんを目指すブログ

GETメソッドでデータを受け取る

更新情報

竹迫さん、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^)/