CSV表出力ガイド
表組用記法として #start_table~#end_table が用意されていますが、データ量が多くなってくると入力や編集はちょっと大変になります。Gumikiでは、CSVファイルからの表の出力機能をサポートしています。まずはCSVファイルを準備する
出力したいCSVファイルは必ず、先頭行にヘッダが必要となります。できればヘッダは半角英数字にしておいてください。そして、レルム管理のファイルアップロード機能を用いてCSVファイルをアップロードします。アップロード後のファイルの更新については、消してから再登録でも構いませんが、アップロードフォルダに直接アクセスできるような環境(IISやHttpdでサーバを実行している場合など)は、アップロードフォルダの該当ファイルを探し、直接更新した方が楽です。FTPからの直接上書きでもOKです。(なお、readonlyモードになっている場合は書き込み許可設定に変更する必要があります)
グループ作業の場合などは、他の方からアクセスができるように、アップロードフォルダを共有にしておくのもアリだと思います。
CSV表のGumikiでの表示
表示したいページで以下のような記述を行います。 #start_table
#th 項目名(カンマ区切りで必要な分だけ)
#printcsv ファイル名/出力したいカラムのヘッダ名(カンマ区切りで必要な分だけ)
#end_table
よく見れば分かりますが、#start_table~#th~#end_tableまでは通常のテーブル作成の記法を使っています。データ部に相当する部分に #printcsv を埋め込むわけです。入力の実例も一応書いておきますが、#th 項目名(カンマ区切りで必要な分だけ)
#printcsv ファイル名/出力したいカラムのヘッダ名(カンマ区切りで必要な分だけ)
#end_table
#start_table
#th nw/リリース,nw/項番,nw/機能概要,nw/担当,nw/状況,nw/補足
#printcsv 8TASK.csv/CATEGORY,NUM,DATA,WORKER,FLAG,MEMO
#end_table
このようになります。ヘッダ項目の順序や数を合わせる必要があることに注意してください。なお、50行を越えると自動的にページ分割バーが表示されます。#th nw/リリース,nw/項番,nw/機能概要,nw/担当,nw/状況,nw/補足
#printcsv 8TASK.csv/CATEGORY,NUM,DATA,WORKER,FLAG,MEMO
#end_table
CSV検索出力1
CSVの指定列出力機能についてはいま述べました。Gumikiでは、この出力をするにあたって、ごく簡易的なSQL構文を記述することが可能です。但し、セキュリティ面の問題もあり、現在はWHERE句部分しか開放はしていません。#printcsvの構文だけ紹介しますが、実際に使う場合は先ほどと同様、#start_table~#td~#end_tableの中に括るような形で埋め込みます。
(記法)
#printcsv ファイル名/出力したいカラムのヘッダデータ/WHERE句
(記述例: PRICE が 3000以上であるデータだけ出力する)
#printcsv test.csv/DATA_ID,NAME,PRICE/PRICE >= 3000
#printcsv ファイル名/出力したいカラムのヘッダデータ/WHERE句
(記述例: PRICE が 3000以上であるデータだけ出力する)
#printcsv test.csv/DATA_ID,NAME,PRICE/PRICE >= 3000
なお、文法はSQLに則っていますので、文字カラムについてはクオーテーションで括ってあげる必要があります(例: NAME = 'なんたら')
CSV検索出力2
先ほどの検索機能は決め打ちです。しかし検索ができるとなると、ユーザの選択や入力によって条件が設定できると良いと思うことでしょう。これも簡易的にサポートしています。(記法)
#printcsv ファイル名/出力したいカラムのヘッダデータ//condition
#printcsv ファイル名/出力したいカラムのヘッダデータ//condition
WHERE句を書かずに、変わりに"/condition"と記述します。こうすることでWHERE条件句を現在のGumikiページのパラメータ(condition)から指定することができるようになります。
現在のページから同じページへ、適切なconditionパラメータを付けて呼び出すリンクを必要なだけ準備してください。
◆記述例
<warp>PRICE>3000のものだけ検索:<myself2>&condition=PRICE>"3000"</warp>
<warp>MONTH=8でPRICE<2000のものだけ検索:<myself2>&condition=MONTH="8" AND PRICE<"2000"</warp>
<warp>PRICE>3000のものだけ検索:<myself2>&condition=PRICE>"3000"</warp>
<warp>MONTH=8でPRICE<2000のものだけ検索:<myself2>&condition=MONTH="8" AND PRICE<"2000"</warp>
<warp>タグは任意のhttp:へのリンクを貼る記法です。
<myself2>というタグを書くと、いまのページのURLが渡されます。上記のようにして、そこにcondition引数を付与する形にしてリンクを生成するわけです。現在はこの方法しか提供していませんが、ちょこっと頑張れば検索フォームで任意の文字を渡してあげることも可能です。
これで、ちょっとしたデータベース検索系ページが実装できるようになるでしょう。
なお、GETパラメータに条件式を記述するということで、閲覧者が、こちらの意図しない条件式を手動で埋め込むことがありえます。これは仕様上ブロックする予定はありませんので、ご注意ください。
但し、悪意あるユーザが条件式を悪用してシステムデータを破壊したりされないようにするための簡易的な対策が施されています(=SQL-Injection対策)。この関係でcondition引数には、INSERTとかDELETEとかUPDATEなどと言った文字列は使えません。これらの文字が引数に含まれているとエラーを返すようになっています。
これを用いて稼動しているページ例を一つあげておきます。
http://gumina.sakura.ne.jp/gumiki/creation/gumiki.cgi?mode=view&realmId=1&pageId=34
→TopPage