3月21日 ここ数ヶ月,改定新版「基礎PHP」を中心にPHPの勉強をしているこうしろうだが,本のサンプルばかりを打ち込んでいてもつまらないので,ちょっとしたアプリケーションを作ってみることにした。題材は単語帳,英単語と日本語訳,そして説明をブラウザからデータベースに登録し,検索できるようにしようと言ったのは私だ。
まずは,データベースとテーブルを作成するSQL文をtango.sqlというテキストファイルに作成する。
---------------------------------------------------------- drop database if exists tango; create database tango; use tango; drop table if exists tango_table; create table tango_table( tid int(10) unsigned auto_increment primary key, tenglish varchar(20) not null, tjapanese varchar(40) not null, tintro text ) TYPE=MyISAM; grant select,insert,update,delete,create, drop on tango.* to tuser@localhost identified by 'tango'; ----------------------------------------------------------かいつまんで説明すると,tangoデータベースが存在していたら,削除してからデータベースを作成,そしてtango_tableテーブルが存在していたら,同様に削除してからテーブルを作る。 テーブルの項目は,主キーがオートインクリメント属性のint型,英単語(tenglish)と日本語訳(tjapanese)がvarchar型(可変長文字列型)で,説明は長い文章を格納できるようにtext型にした。grant文でtuserを作成し,権限を与えている。パスワードはtangoだ。
このSQL文をMySQLモニタで,source c:/mysql/sq/tango.sqlと入力して実行する。こう書くとすんなり終わってしまうが,こうしろうは予約語のスペルを間違えたりしながら,なんとかテーブルを作成した。
次に,入力フォームを作成する。新規に英単語を入力し,データベースに登録するためのフォームだ。「text型のフィールドだけは,textareaにせんなんぞ。うん,textarea知らん?スクロールバーの付く,大きいテキストボックスみたいなやつのこと。アンケートとかで自由にお書き込みくださいの欄に使ってあるだろう。ネットで調べてみ」と適当なアドバイスをした。
---------------------------------------------------------- <html> <head><title>単語帳―追加―</title></head> <body> <h1>単語帳―追加―</h1> <h3>各項目入力してください。</h3> <form action="tango_add.php" method="post"> <table border="1" cellspacing="0"> <tr> <td>英単語</td> <td><input type="text" name="english"></td> </tr> <tr> <td>日本語</td> <td><input type="text" name="japanese"></td> </tr> <tr> <td>説明</td> <td><textarea name="introduce" rows="6" cols="40"></textarea> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" name="submit" value="追加"> <input type="reset" value="リセット"> </td> </tr> </table> </body> </html> ----------------------------------------------------------しばらくすると,このようなフォームが出来上がっていた。
英単語,日本語,説明を入力し,追加ボタンを押すと実行されるスクリプトtango_add.phpが以下である。
---------------------------------------------------------- <html> <head><title>単語の追加</title></head> <body> <?php $english = $_POST['english']; $japanese = $_POST['japanese']; $introduce = $_POST['introduce']; if($english == "" or $japanese == ""){ exit ("英単語or日本語が入力されていません。"); } $host = "localhost"; if (!$conn = mysql_connect($host, "tuser", "tango")) { die("データベース接続エラー.<br />"); } mysql_select_db("tango", $conn); $sql = "insert into tango_table(tenglish, tjapanese, tintro) values('$english', '$japanese', '$introduce')"; mysql_query($sql, $conn) or die("登録できませんでした。"); print("登録しました。"); ?> </body> </html> ----------------------------------------------------------入力フォームから,$_POST配列で渡ってくるデータを変数に格納してから,mysql_connect関数でデータベースに接続,mysql_select_db関数でtangoデータベースを選択している。
単語を追加するinsert文を$sql変数に作成し,mysql_query関数で実行する。ごくごく基本的なレコードの登録処理である。
「登録しました。」と表示されれば処理は成功だが,このままではいくつか問題がある。ひとつは入力データに漏れがあって,入力フォームに戻ったときに入力した内容が消えてしまっていることだ。
「セッションを使って,セッション変数に入力値を保存するようにしないとね」と課題を残し,この日はおしまい。