モジュールを作ろう!(4)テーブルの作成

本記事は、Cubson というモジュール生成ツールを使った XOOPS のモジュール作成方法を解説するものです。

対象は、XOOPS のモジュールを作ったことはないし、PHP もプログラミング自体もほとんど経験が無い、という人です。

今回は Cubson とは関係ありません。モジュールで使う MySQL のテーブルを作る作業です。

XSAS や XAIO でテスト環境を作っている場合,phpMyAdmin が使えるようになっているはずです。これを使うと,SQL に悩まされることなく,ブラウザのフォームで項目を設定してテーブルを作成できますので,不慣れな方は利用されると良いかと思います。

テーブル名

テーブル名は,{prefix}_{modulename}_{tablename} というように付けてください。そうしないとちゃんと動きません

prefix
XOOPSをインストールするときに設定した DB Prefix です。phpMyAdmin でテーブル一覧を表示すると,テーブル名の頭に同じ名前が並んでいるので分かると思います。XOOPS Cube Legacy をデフォルト値でインストールすると,6文字くらいのでたらめなアルファベットと数字の羅列になっているはずです。XOOPS2.0.X から移行した場合は,XOOPS_となっていることが多いと思います。
modulename
モジュール名。前回使ったのと同じ名前にしてください。
tablename
テーブル名。
as8da9_bookmark_bm

それも面倒だ,早く動くところを見たい,という方は,しょうがないので以下の SQL を使ってください。通常のモジュールと同様に,/{module_dir}/sql/mysql.sql という名前でファイルを作り,中身に以下を記述して,XOOPS のモジュールアップデートを行ってください。

CREATE TABLE `{prefix}_bookmark_bm` (
  `bm_id` int(11) unsigned NOT NULL auto_increment,
  `bm_title` varchar(255) NOT NULL default '',
  `url` varchar(255) NOT NULL default '',
  `uid` mediumint(8) unsigned NOT NULL default '0',
  `memo` text NOT NULL,
  `reg_unixtime` int(11) unsigned NOT NULL default '0',
  PRIMARY KEY  (`bm_id`)
) TYPE=InnoDB AUTO_INCREMENT=1 ;

bookmark モジュールじゃないものを作りたいという人は,残念ですが頑張ってください。

項目名

Cubson では,フィールド名にある程度縛りがあります。いくつかは必須で,いくつかは「従っていると楽」というものです。僕も全部正確に知っているわけではないですが,とりあえずは次の二つを。

プライマリィキー
フィールド名を{tablename}_id にして,autoincrement を付けます。例:bm_id
名称
タイトルとか名称とか件名を表す項目。プライマリィキーの次に置きます。例:bm_name