データベースで掲示板

ここでは、1行掲示板をデータベースを使ってパワーアップします

 ここでは、このサイトで作った1行掲示板を、データベースを使ってパワーアップしてみます。次のような機能を追加します。

この2つの機能は、データベースの機能を有効に使うことで、比較的簡単に実装できます。なお、次のような順番で、簡単なスクリプトを作成して、PHPのイメージと、開発環境の使い方をマスターします。
 なお、ここではデータベースの環境を、XSASを使ったローカルサーバーの環境、かつこのデータベースに消えては困るデーターを登録していないことを前提とします。このような状態ならば、安心して学習に利用できます。
 手順として、3段階に分けます。

データベースを作る

 まずは、データベースを作ります。この作業は、一度だけでよいので、PHPではなく、データベースのユーティリティで操作しましょう。(もちろんPHPからでも可能です)
【必要なデータを書き出す】
データベースを作るのに必要なのは、どのようなデータを登録、検索するのかあらかじめ決めることです。ここでは、1行掲示板なので、次のようにしました。

データベース名【php_bbs】テーブル名【bbs】
番号 名前 本文
no name text
数字
自動カウント
全角で
8文字まで
全角で
100文字まで

さて、これを作るためのSQL文が必要です。必要なのは、データベースの作成と、テーブルの作成の2つの命令です。さて、どうすればデータベースを操作できるのでしょうか?
本来、データベースは、SQLをコマンドラインで入力していくものですが、今回はPhpMyAdminと言うツールを使います。これは、MySQLと言うデータベースをブラウザから操作するツールです。まずは、書いてある通りに操作してください。作業スピードにこだわらず、ゆっくり画面全体を見ながら、行うと、なんとなく全体の使い方も解ると思います。

1、XSASを起動していることを確認します。
2、XSASの上部にある、ADVANCEDをクリックします。
3、中段にある箇条書きの上にある、PHP MY ADMINをクリックします
4、ブラウザが開いて、ユーザー名とパスワードを入力の入力を求められますので、ユーザー名を、【root】、パスワードは空欄のまま、OKボタンをクリックすると管理画面に入ります。 (なお、ユーザー名を入力する画面が文字化けしているかもしれませんが、気にしないでください。
5、管理画面に入ると、「新しいデータベースを作成します」と言うメニューがあるので、テキストボックスに、データベース名【php_bbs】を入力して「作成」ボタンを押します。その後、このような画面があれば、OKです。エラーの場合は、わかりやすくエラーが出ます。ここで覚えておいて欲しいのは、データベースを操作すると、そのときのSQL文が表示されることです。これは、PHPからSQLを使ってデータベースを操作するときの参考になります。
6、データベースが作成されると、左のフレームにphp_bbsが表示されていますので、クリックします。
7、すると右側に、テーブルを作成す画面が出てきますので、名前を【bbs】とします。フィールド数は、3です。(番号、名前、本文)
8、つぎに、データーの項目とデーターの形式を入力する画面になりますので下記のように入力してください。

9、空欄のところはあくまでも空欄で。一番上のnoの右のラジオボタンも変更していますので、注意してください。なお、長さのところで、入力数値が、最初に決めた文字数の倍になっています。これは、もともと半角での文字数なので、全角ですと倍になります。
10、入力できたら、一番下の【保存する】をクリックしてください。(注:実行するというボタンもあるので、間違えないでください)
11、これでエラーが出なければ、無事にデータベースができました。

1行掲示板をデータベース使用に変更する

いよいよ、先ほどの1行掲示板を改造して、データベースを利用します。基本的なスタントしては、前回、配列として取り扱い、テキストファイルとして保存したデータをデータベースに移し変えるという手順になります。
新しく必要な知識は、データベースへの接続と、SQL文の発行(SQL文をデータベースに実行させることを発行すると呼ぶ)です。

データベースへの接続
mysql_connect( "ホスト名", "ユーザー名","パスワード");
このようにすすると、PHPからデータベースへの接続を行います。今回のXASの環境では、
mysql_connect( "localhost", "root","");
です。さらに、先程作成したデータベース(php_bbs)を選びます。
mysql_select_db( "php_bbs");
なんとなく英語で解ると思います。
 この二つは、セットで考えていただいて結構です。また、これらのスクリプトは、関数としてTrue(真)、もしくはFalse(偽)を返しますので、if文の条件として扱うと、接続が成功しているか、失敗したで処理を変更することが出来ます。

SQL文を利用する
$res = mysql_query(”SQL文”);
結果は、変数(ここでは$res)にポインタのような形で取り込まれます、このままでは使いにくいので使いやすい形に変更する関数を使います。
$row = mysql_fetch_array($res);
これは、$resで示しているデータの1行を$rowに配列として取り込むという意味です。この配列を使うには、$row「”name"]などのように、項目名をつけることで、データを利用できます。

なんとなく、ファイルを使った前回の手順と似ていると思いませんか?
それでは、前回のスクリプトをコピーして、必要事項を差し替えていきましょう。基本的には、差し替えるだけなのですが、それだけでは、データベースの効果が発揮できません。そこで、前回の、 から、順番を変えて、 に変更します。なぜこのようなことになるかといえば、データを並べ替える必要が無いからです。順番の指定はデータを読み込むときにできますし、データ数の制限もデータベースの仕事です。
それでは、ここまでのスクリプトです
【one_bbs_db.php】
 さて、SQL文の説明はスクリプト上に全て書いてあります。ここでは、SQLを$sqlと言う変数に入れてから発行しています。また、SQL文を作成するときは、最初に登場したMyPHPAdminを利用すると良いでしょう。画面上で操作した内容は、全てSQLで表示されますし、PHPスクリプトとして、$sql=と言う形で自動生成してくれるので確実です。

検索、削除機能を追加します

 せっかくデータベースで作成したのですから、データベースの得意技である、検索、削除機能を追加しましょう。

この仕様を実現するために、次のような方法を使います。

ここでのポイントは、データベースで設定したnoは、他のデータとの重複がないので、削除指定に最適であることです。
次に、重要なのは、書き込み&削除、通常表示&検索表示は、同じ処理系列で行えることです。それではスクリプトを作ります。

【one_bbs_db_2.php】

いかがですか?

 SQLのところは、解りにくいかと思いますが、解説はコメントしてあるので意味は理解できると思います。
今回のスクリプトは終わりですが、このスクリプトを改造して使う場合のヒントを書いておきます。

<PHPとデータベース>-Top-<まとめと応用>