はじめに
一応、準備が整いましたので、ここからは、Webデータベースの作成に取りかかります。
phpについては、初期設定以外何も触れていませんが、実際に、phpスクリプトを記述していきながら、関連する部分について解説を加えていきたいと思います。
MySQLでの作業
データベースは、MySQLについて 四で作成したweb_dbデータベースのbib_dbテーブルを使用します。
ここでは、Web経由でアクセスしてくるユーザの登録を行います。
まず、かねてからご案内の通り、MySQLサーバを立ち上げ、root権限でMySQLにアクセスし、mysqlデータベースを選択しておきます(↓下図)。
c:\mysql\bin>net start mysql[Enter Key]
MySql サービスを開始します.
MySql サービスは正常に開始されました。
c:\mysql\bin>mysql -u root -p mysql[Enter Key]
Enter password: **********[Enter Key]
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 3.23.53-max-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
|
ここでは、web_dbデータベースのbib_tbテーブルに対して、select権限しか持たないようなユーザ(mysql)を作成します。
localhost経由とWeb経由で、二つのアカウントを作成しておきます。
コマンドは以下の通りです。
grant select on web_db.bib_tb to mysql@localhost identified by "password";
grant select on web_db.bib_tb to mysql@"%" identified by "password" ;
パスワードはpasswordとしました。
mysql> grant select on web_db.bib_tb to mysql@localhost identified by "password";[Enter Key]
Query OK, 0 rows affected (0.00 sec)
mysql> grant select on web_db.bib_tb to mysql@"%" identified by "password";[Enter Key]
Query OK, 0 rows affected (0.00 sec)
mysql>
|
作成できたら、userテーブルとtables_privテーブルの中身を確認しておきましょう(↓下図)。
mysql> select * from user;[Enter Key]
+-----------+-------+------------------+-------------+---
| Host | User | Password | Select_priv |
+-----------+-------+------------------+-------------+---
| localhost | root | 0353b9321dd7b053 | Y |
| % | root | 0353b9321dd7b053 | Y |
| % | mysql | 5d2e19393cc5ef67 | N |
| localhost | mysql | 5d2e19393cc5ef67 | N |
+-----------+-------+------------------+-------------+---
4 rows in set (0.00 sec)
mysql> select * from tables_priv;[Enter Key]
+-----------+--------+-------+------------+----------------+
| Host | Db | User | Table_name | Grantor |
+-----------+--------+-------+------------+----------------+
| localhost | web_db | mysql | bib_tb | root@localhost |
| % | web_db | mysql | bib_tb | root@localhost |
+-----------+--------+-------+------------+----------------+
----------------+------------+-------------+
Timestamp | Table_priv | Column_priv |
----------------+------------+-------------+
20021031233542 | Select | |
20021031233600 | Select | |
----------------+------------+-------------+
2 row in set (0.00 sec)
mysql>
|
以上で、MySQLでの作業は完了です。
Apacheでの作業
とくにありません。
サーバを立ち上げるだけです。
簡易検索フォームの作成(search_1.html)
ここでは、検索フォームを作成します。
検索対象となるbib_tbテーブルのフィールドは全部で九つありますが、そのうち、title(タイトル)、author(著者名)、publisher(出版者)、subject(主題)の四つのフィールドのいずれかに、検索キー(複数指定不可)を含むようなレコードを検索し、py(出版年)の新しい順に表示するスクリプトを想定しています。
最も簡易な検索フォーム(search_1.html)のソースは以下の通りです(↓下図)。
#XXは単なる行番号です。
#01 <HTML>
#02 <HEAD>
#03 <TITLE>検索画面</TITLE>
#04 </HEAD>
#05 <BODY>
#06 <FORM NAME="search" METHOD="post" ACTION="result.php">
#07 <INPUT TYPE="txt" NAME="str_key"><BR>
#08 <INPUT TYPE="submit" VALUE="search">
#09 </FORM>
#10 </BODY>
#11 </HTML>
|
このファイルの中心部分は6行目〜9行目までです。
まず、6行目では、フォーム全体にsearchという名前を付け、submitボタンがクリックされたときに、postメソッドで、result.phpにフォーム部品の値が渡されるようにしています。
<FORM NAME="search" METHOD="post" ACTION="result.php">
フォーム部品は二つあります。
まず、7行目では、検索キーを入力するためのテクスト・フォームに、str_keyという名前が付けられています。
検索キーはstr_keyに格納されることになります。
<INPUT TYPE="txt" NAME="str_key">
8行目では、サブミット・ボタンが用意されています。
<INPUT TYPE="submit" VALUE="search">
検索フォームの作成(search_2.html)
ここでは、search_1.htmlでも十分用は足りますが、若干の使い勝手を考慮して、フォームを書き換えておきたいと思います。
ちょっとだけ進んだ検索フォーム(search_2.html)のソースは以下の通りです(↓下図)。
#01 <HTML>
#02 <HEAD>
#03 <TITLE>検索画面</TITLE>
#04 <SCRIPT LANGUAGE="JavaScript">
#05 function FormSubmit() {
#06 var js_str_key = document.search.str_key.value;
#07 if (js_str_key == "") {
#08 alert("please enter search key.");
#09 } else {
#10 document.search.method = "post";
#11 document.search.action = "result.php";
#12 }
#13 }
#14 function FormClear(){
#15 document.search.str_key.value="";
#16 }
#17 </SCRIPT>
#18 </HEAD>
#19 <BODY>
#20 <FORM NAME="search" onSubmit="FormSubmit()">
#21 <INPUT TYPE="txt" NAME="str_key"><BR>
#22 <INPUT TYPE="submit" VALUE="search">
#23 <INPUT TYPE="button" VALUE="clear" onClick="FormClear()">
#24 </FORM>
#25 </BODY>
#26 </HTML>
|
ソースは26行です。
search_2.htmlでの大きな改良点は、@clearボタンを配置して、入力フォームの内容をクリアできるようにしたことと、A検索キーが未入力であった場合、入力を促すようなエラー・ダイアログを表示するようにした点です。
いずれもJavaScriptを使っています。
20行目〜24行目までが、フォームの領域です。
20行目では、フォーム全体にsearchという名前をつけ、submitボタンがクリックされた場合、JavaScrptのFormSubmit関数を呼び出すことが指定されています。
<FORM NAME="search" onSubmit="FormSubmit()">
submitボタンで呼び出されるFormSubmit関数の内容は、5行目〜13行目に記述されています。
ここでは、if文を使って、条件分岐を行っています。
まず、str_keyフォームの値を、js_str_keyという変数に読み込み、js_str_keyに値が入力されていなければ、エラー・ダイアログ(please enter search key.)を表示します。
function FormSubmit() {
var js_str_key = document.search.str_key.value;
if (js_str_key == "") {
alert("please enter search key.");
}
一方、js_str_keyに何某かの値が入力されていれば、フォームのメソッドをpostに指定し、result.phpを呼び出しています。
else {
document.search.method = "post";
document.search.action = "result.php";
}
}
21行目と22行目はsearch_1.htmlと全く同じです。
22行目は単なるボタンですが、クリックすると、JavaScriptのFormClear関数が呼び出されるようになっています。
<INPUT TYPE="button" VALUE="clear" onClick="FormClear()">
呼び出される側のFormClear関数は、14行目〜16行目に記述されています。
そのうち、15行目が実際の関数の中身です。
FormClear()は、str_keyの値をクリアするという関数ですので、誤入力などの際にクリックして下さい。
function FormClear(){
document.search.str_key.value="";
}
作成できたら、search_2.htmlをApacheのドキュメント・ルートに保存しておいて下さい。
ドキュメント・ルートは、ここでは、c:\program files\apache group\apache\htdocsです。
|