#author("2021-08-23T08:23:12+09:00","","")
*easydb.inc.php [#pfd61064]
(SQL等を使わず)PukiWiki?内だけで簡易的なデータベースを実現するプラグインの説明です。ページ一番下からダウンロードできます。
用途としては単純だが件数の多いメモ書きや、ゲームデータの蓄積等を想定しています。
大抵の場合でTrackerの方が有用だろうと思いますが、ピンポイントでこちらが便利なケースがあるかもしれないので公開しています。
あくまで簡易的なものであり、また習作的なものであることをご了承ください。不具合等見つけられた場合はコメントいただけると幸いです。
ライセンスはGPLとします。このページのサンプルについてはフォームからの登録、編集、検索を自由に試して頂いて構いません。
-----
#contents();
-----
#easydbregist(table1,data1,個別ページ)
*登録フォームのサンプル [#z56b2c39]
#easydblist(table1,data1,個別ページ)
#easydblist(table1,data1,個別ページ)
番号:
名前:
性別: 男 女
年齢:
点数:
趣味: 読書 映画 スポーツ 音楽 ゲーム その他
*リストと検索フォームのサンプル [#m45e60ef]
#easydblist(table1,data1,個別ページ)
#easydblist(table1,data1,個別ページ)
番号: 以上 以下
名前:
性別: 男 女
年齢: 以上 以下
点数: 以上 以下
趣味: 読書 映画 スポーツ 音楽 ゲーム その他
ソート 指定なし番号性別年齢点数趣味 昇順 降順
**個別ページのサンプル [#z8eabe87]
個別ページ/table1/data1/1
***説明 [#wcc16c33]
#easydbregist
書式#easydbregist(テーブル構造名,テーブル名[,個別ページ名])
上の例では
:easydb/table/table1
の内容をテーブル構造として参照し、登録用のフォームを生成しています。
データは
:easydb/data/table1/data1
に書き込まれるようにしています。
また、個別ページ名オプションを指定した場合は登録時に
個別ページ名/主キーの値
という個別ページを自動で作成し、テーブル構造名に対応したテンプレートページの内容の
$$キー名$$
を
&easydbshow(table1,data1,主キーの値,キー名);
で置き換えたものを書き込むようにしています。主キーはテーブル構造の最初に記述されるキーとなります。
#easydblist
書式#easydblist(テーブル構造名,テーブル名[,個別ページ名])
上の例では
:easydb/table/table1
の内容をテーブル構造として参照し、それを使って
:easydb/data/table1/data1
の内容を出力します。
表示される表の一番右の列のリンクから編集画面へ移ることができます。ここで削除もできます。
個別ページ名オプションをつけた場合(その場合、#easydbregistで指定したものと同じものにしてください)、表示される表の右から二番目に個別ページへのリンクができます。
検索機能は、数値の範囲指定、文字列(完全一致、ただしカンマで区切ることで複数指定可能)、リストのチェックで絞込みをすることと、数値かリストのキーのいずれか一つでソートすることができます。
&easydbshow,#easydbshow
書式&easydbshow(テーブル構造名,テーブル名,主キー名の値,キー名[,modify]);
は、modifyオプションが省略された場合、当該の値を返します。modifyオプションをつけた場合、編集用のリンクを返します。
書式#easydbshow(テーブル構造名,テーブル名,主キーの値)
はテーブル構造名に対応したテンプレートページの内容を、
$$キー名$$
を実際の値に
$$$modify$$$
を編集用のリンクに置き換えてから表示します。
上の例では
:easydb/template/table1
がテンプレートページとなります。
***補足 [#te883e5e]
•テーブル構造、データ、テンプレートを配置するページ(上の例では:easydb/tableなどを指します)や、自動でデータページと個別ページを凍結するかどうかはeasydb.inc.php内の定数を変更すると変えることができます。
•同じテーブル構造を使って複数のテーブルデータを作成できます。
テーブル構造やテンプレートはサンプルの要領で自分で定義できます。詳しくは以下を参照。
*テーブル構造のサンプル [#vd9ba15f]
:easydb/table/table1
*データのサンプル [#wf222d7a]
:easydb/data/table1/data1
*個別ページ用テンプレートのサンプル [#k3c91475]
:easydb/template/table1
*TODO [#wb252041]
•登録フォームからリストの選択肢を追加できるようにするといいかも。
•検索は正規表現に対応してもいいかも。
*ソース [#f6a08076]
&ref(easydb.inc.php);
&ref(easydbregist.inc.php);
&ref(easydbshow.inc.php);
&ref(easydblist.inc.php);
//