本サイトでは、データベースを利用した簡単なWEBアプリケーションを開発します。

  • 最初にデータベースを作ります。WEBでは、数多くの種類のデータベース管理システムがありますが、本サイトでは、小規模なシステムに向いているSQLite(エスキューライト)を利用します。SQLiteは、XAMPPに含まれていますので、インストール作業は不要です。
  • 開発するWEBアプリケーションは、ある団体の会員管理システムです。会員管理システムでは、会員名簿と会員が持っている資格を管理しています。
  • SQLitemanegerを利用して、データベースの定義及び初期データの設定を行います。

データベース管理システム
WEBアプリケーションで利用されるデータベースは、「同時に多くのクライアントから変更要求がある」「変更中にハードやソフトの障害がある」など、厳しい条件でも間違いのない処理が不可欠です。このような要求に対応するためのシステムがデータベース管理システムです。
詳しくは、データベース管理システム をご覧ください。

データベースの構造

SQLiteで取り扱うデータベースは。、テーブル構造になっています。

今回の会員データベースの構造は以下の通りです。

各テーブルは、列(カラム)にデータ項目を設定し、行ごとに1件のデータ(レコード)を表現しています。各セルにデータがあります。

EXCEL で作る名簿と同じです。EXCELでは、1行目に表題を設定しますが、データベースでは不要です。

このテーブルで分かること・・・名簿番号1001の鈴木 一さんの連絡先電話番号は6631-1234 持っている資格は、気象予報士・衛生管理士・管理栄養士です。

カラムの制約

各カラムのデータに制約を与えることができます。

  • 空白・・・認めない(認める)
  • 初期値をセットずる・・・レコードが新規作成されたら特定の値をセットします。
  • 重複・・・許可する(許可しない)

プライマリーキー

名簿番号は会員個人に割り当てられた、固有の唯一の番号(重複は不可)で、これをもとに会員個人に関するすべての情報が管理されています。テーブルに一つだけ設定できます。このようなカラムは、プライマリーキーを呼ばれます。

データの形

各カラムにデータの形(整数や文字列・浮動小数点など)が指定できます。SQLiteは格納されるデータで形を自動設定しますので、あまり気にしない(ただし、同じカラムには同一型のデータを入れる)ほうがいいようです。

レコードの追加・読み出し・削除・修正

SQLと呼ばれる言語を使用します。

例 名簿テーブル(meibo)からフリガナ(furigana)に”ア”があるレコードを抜き出す。

SELECT * FROM meibo WHERE furigana="ア";

* 条件に合ったレコードをすべて抜き出すことを指示 このような命令をSQLクエリと呼ばれます。

meibo・・・名簿テーブル名(英数字)  furigana・・・フリガナのカラム名(英数字)

SQLは、WEBアプリケーションで利用される多くのデータベース管理システムで利用されています。

本サイトでは、SQLの詳しい解説はしません。具体的なサンプルの中で必要な説明を行います。

SQLの詳しい解説は、SQLの基本文法 をご覧ください。

SQLiteのデータベースを作る。

SQLiteのデータベースは、テーブルとその中にあるカラム(制約も含めて)を設定する必要があります。多くのSQLiteの解説書では、コマンドラインを使用した例が紹介されています。初心者の方には取りつきにくい方法ですので、本サイトでは、SQLiteManagerを利用して、初心者の方でも簡単に作成できる方法を紹介します。

参考 コマンドラインの利用

xamppをインストールした環境でも、コマンドラインは使用できます。

コマンドラインで実行するためには、SQLiteをインストールする必要があります。

コマンドラインを利用した詳しいテーブル操作は、SQLite入門 をご覧ください。

非表示にする

SQLite Managerでデータベースを作成する

インストール

SQLite Managerは、ダウンロードして解凍すれば利用できます。(インストールの作業は不要です)

ダウンロードサイトを開く

source forge のサイトを開く SQLiteManager sourceforge

sqlitemanager をクリック

1.2.4をクリック

SQliteManager-1.2.4zipをクリック

ダウンロードが始まります。デスクトップに保存してください。保存ダイアログが表示されない場合には、画面の direct link をクリックしてください。

解凍と保存場所の設定・フォルダ名の変更

デスクトップにあるをダブルクリック

 → 開いたフォルダにあるフォルダSQLiteManager-1.2.4をコピー → フォルダHomepage内に貼り付け → フォルダ名をSQLiteManagerに変更

バグの修正

PHP5.4以上の環境では2種類のエラーとなります。

エラーメッセージ1

Strict Standards: Non-static method sqlite::getDbVersion() should not be called statically, assuming $this from incompatible context in

修正方法1

SQLitemanagerにあるフォルダincludeを開く → ファイルsqlite.class.phpをサクラエディタで開く

55行目を以下のように修正する。

function getAttachDb(){ → public static function getAttachDb(){

エラーメッセージ2

Strict Standards: Non-static method SQLiteDbConnect::getAttachDb() should not be called statically, assuming $this from incompatible context in

修正方法2

SQLitemanagerにあるフォルダincludeを開く → ファイルSQLiteDbConnect.class.phpをサクラエディタで開く

298行目を以下のように修正する。

function getDbVersion($fullPath){ → public static function getDbVersion($fullPath){

日本語コードの変更

本サイトでは、UTF-8コードを基本にしていますので、SQLitemanagerの設定もUTF-8に変更します。

サクラエディタで、フォルダSQLiteManagerにある、langフォルダを開きます。その中にあるjapanese.inc.phpを読み込んでください。

10行目から11行目で、既定値がEUCになっています。

$charset = 'euc-jp';
$langSuffix = 'ja-euc';

ここで、UTF-8を指定します。

$charset = 'utf-8';
$langSuffix = 'ja-utf-8';

変更後、ファイルそのものの文字コードをUTF-8で保存してください。

SQLiteManagerを起動する

xamppを起動 → apacheをstart → ブラウザを起動 URI http://localhost/Homepage/SQLiteManager を入力してEnter

画面が英語になっている場合には、Language(言語)をJapaneseに変更してください。

データベースを作成する

フォルダHomepageに、フォルダsqlite3を新規作成してください。データベースはこの中に作成します。

作成するデータベース

データベース名・・・会員データ

データベースファイル名・・・kaiin.db (英数字で 拡張子は何でもいいのですが、データベースをわかるように.dbとしました。

データベースのバージョン・・・2と3がありますが、最新の3に指定

「新しいデータベースを追加」の画面で以下の通り入力して保存

パスには、絶対パスで指定 ここの例は E:\\Documents\Homepage\sqlite3\kaiin.db

データベース「会員データ」が作成できました。

データベースにテーブルを設定する

テーブル名・・・meibo(英数字で) フィールドの個数 4(no,name,kana,tel)

入力後、「実行」をクリック

テーブルにカラムを指定する

  • フィールド・・・カラム名(英数字で)
  • 型・・・フィールドのデータ型を指定します。no(名簿番号)は、データベースのプライマリキーです。プライマリキーは、integer(整数)で指定します。その他のカラムはvarchar(可変長文字列)に指定します。
  • 長さ・・・フィールドのバイト長です。プライマリキーにのみ指定します。
  • ヌル・・・カラムに空白を認めないので、not null を指定します。
  • デフォルト・・・空白に指定
  • プライマリ・・・カラムnoのみを指定
フィールド 長さ ヌル デフォルト プライマリ
no 整数 4桁 not null 空白 オン
name 可変長文字列 not null 空白 オフ
kana 可変長文字列 not null 空白 オフ
tel 可変長文字列 not null 空白 オフ

新しいテーブルプロパティで以下の通り指定します。

入力後、「保存」をクリック

これでテーブルの設定が終わりました。

型の指定
フィールドに設定されるデータ型を前もって決めておく方式が広く使われていますが、SQLiteでは、フィールドのデータ型は、設定されるデータにより型を決める方式のなっています。ですから、データベース内では同一のカラムに、文字と数値が混在させることができます。しかし、混在させるとその処理が面倒になりますので、統一するようにしてください。(型の違うデータを入れてもエラーになりませんのでご注意ください)

初期データベースの作成

作成する初期データベース

1件目のレコードを作成

テーブルmeiboをクリック → メニュー「挿入」 → 新規レコードを挿入

noにヌルのチェックがあれば、外してください。

各フィールドのデータを入力後、「別の新規レコードを挿入」にチェックを入れて[保存]

が、実行されたSQLクエリです。

これを繰り返して、藤田 邦子さんまで入力します。

最終レコードの保存時には、[前のページに戻る」にチェックを入れてください。

入力済みレコードの確認

テーブルmeiboをクリック → メニュー「表示」

データベースの登録された最初の20件のレコードが表示されます。

21件以上入力した場合には、SQLクエリの横の[修正]をクリックして、limitを追加した後[実行]してください。(この例では、最初の100件を表示します)