#!/bin/sh mydir=`dirname $0` . $mydir/cgilib2-sh if [ -n "$1" ]; then # 第1引数にIDを受けてそのIDの情報を表出力する id=`echo "$1"|sed "s/'/''/g"` rowid=`query "SELECT rowid FROM cards WHERE id='$id';"` fi if [ -z "$rowid" ]; then htmlhead "Not Found" echo "

表示したいidを指定してください。

" exit 0 fi htmlhead "$idの情報" cond="WHERE id='$id'" percent() sed 's/\(..\)/%\1/g' imgsrcdata_icon() { printf "' -define jpeg:size=150x150 - jpeg:- | hexize | percent echo '">' } echo '' query<<-EOF | WITH getall AS ( SELECT a.*, b.rid, b.val, b.bin FROM (SELECT rowid colid, * FROM _columns) a LEFT JOIN (SELECT rowid rid, * FROM cards_s $cond UNION ALL /* cards_* の rowid には rid と別名を付与 */ SELECT rowid rid, * FROM cards_m $cond) b ON a.attr=b.key ORDER by colid ) /* 次の行のSELECTの値がシェルスクリプト read に渡る */ SELECT lower(l.attrmode) am, l.rid, l.attr, l.vtype, l.option, l.attrname, count(l.rid) seq, hex(l.val), hex(l.bin) FROM getall l LEFT JOIN getall r ON l.attr=r.attr AND l.attrmode=r.attrmode AND l.rid>=r.rid GROUP BY l.attr, l.rid ORDER BY l.colid; EOF while IFS="|" read am rid attr vtype opt kname seq hval hbin; do val=$(escape "`echo $hval|unhexize`") # 16進値を元に戻してHTMLエスケープ [ x"$am" = x"m" ] && kname=$kname$seq # 多値テーブルの場合のみ連番付与 [ x"$attr" = x"id" ] && val=$id # idは属性値ではない printf '%s' "" done echo "
${kname}" if [ -n "$hbin" ]; then # binカラムに値が来たらサムネイルを echo "$hbin" | imgsrcdata_icon else echo "$val" fi echo "" # 値提示tdここまで/次は入力フォーム出力td name="$attr.$seq.$am" # input名は 属性.連番.由来テーブル で決める op="${opt:+ }$opt" # 入力フォームへのオプション文字列 case $vtype in # vtypeに応じたタグを出力 "text") echo "" ;; "image") echo "" ;; "select") echo "" ;; "textarea") echo "$val" ;; esac echo "
"