Amigoデータベース、スクリプト集

『With you あなたもHPを持とう』AmigoデータベースのQ&Aがあります
全般・基本スクリプト 管理認証・環境設定 ユーザ登録・認証(編集) データ登録・認証(編集) データ一件分のデザイン
(db-html.cgi)
検索、ショートカット
検索結果(一覧) データ詳細(data-part) フォームメール db-fm.cgi メール文章設定法 db-mail.cgi トップ画面など表紙 注意事項、その他

検索結果(一覧)
  各データに任意のアイコンを表示
その場合アイコン(マーク画像)を項目として扱い
<IMG>タグごと登録してしまう事で可能です。

登録画面に以下のように記述し
<INPUT type="checkbox" name="Icon1" value='<IMG src="image/icon1.gif">'>アイコン1
<INPUT type="checkbox" name="Icon2" value='<IMG src="image/icon2.gif">'>アイコン2

環境設定で以下の項目を設定します。

■使用可能タグ属性
IMG==src
■タグ使用項目[デ]
Icon1==IMG,Icon2==IMG
■チェックボックス項目[デ]
Icon1==<IMG src="image/icon1.gif">,Icon2==<IMG rc="image/icon2.gif">

これでデータ登録時にチェックボックスをチェックすれば
チェックされたアイコンを検索結果に表示する事が出来ます。


  検索キーワードを表示するには
表示するだけであれば$FORM{*****}という記述を検索結果テンプレートに記述すれば表示出来ます。
※*****は検索条件入力欄のname(S_1_Key_Name等)


  画像から各HPにリンクsうるには
検索結果で表示される画像をクリックすると
http://○○○.comへリンク
店名をクリックすると
http://△△△.comへリンクする

この画像とは登録時にアップロードした画像でしょうか?
またリンク先のURL(2種類?)もデータ登録時に入力されたものでしょうか?

例としては以下のようになるかと思います。

<A href="$VD[$REC{Data}{URLの項目名A}]"><IMG src="$UpDir/$VD[$REC{Data}{画像の項目名}]"></A>
<A href="$VD[$REC{Data}{URLの項目名B}]">$VD[$REC{Data}{店名の項目名}]</A>




  ユーザー名を表示してユーザーの詳細ページに飛ばすには
<A href="$BaseDir/$MainCGI?cmd=dp&Tfile=User&num=$VD[$REC{Data}{UserNum}]">$VU[$REC{User}{UserNum}]</A>
※*****はユーザー名のデータ種類

num=のところは$VU[$REC{User}{UserNum}]でもいけるんですが
環境設定のユーザーファイルからの検索がOFFだと無理になるので上記のようにしました。
ユーザー名の方はOFFだと表示自体が出来ません。


  検索結果からのリンク方法
db-html.cgiに、
<TD><A href="$VD[$REC{Data}{登録したURL}]" target="_blank"><リンクの画像></A></TD>

また、そのリンク画像をクリックした回数を記録するため
<A href="$BaseDir/$MainCGI?cmd=j&DataNum=$VD[$REC{Data}{DataNum}]&UserNum=$FORM{UserNum}&Pass=$FORM{Pass}&AdminPass=$FORM{AdminPass}">
を使用
============================
検索結果画面で画像を表示したい場合は
画像へのパスのデータ種類(例えばIMAGEという名称とします)
を作り画像へのパスをデータに記録できるようにします。
後は検索結果のテンプレートを編集し
(データ詳細) <IMG src="%{DATA_IMAGE}">
(検索結果一覧) <IMG src="$DATA[$HitNums[$i]][$Save{IMAGE}]"> のようにすれば登録したパスの画像が表示されるようになります。

<A href="$DATA[$HitNums[$i]][$Save{データ種類}]"><IMG src="画像へのパス">ジャンプ!!</A>




  同じユーザーごとにグループ化
データの検索結果一覧で、同じユーザーごとにデータをまとめて表示したいのです。
例えば、

《data.cgi》
 ユーザー1<>データ1<>あああ<>
 ユーザー1<>データ2<>いいい<>
 ユーザー1<>データ3<>ううう<>
 ユーザー2<>データ4<>えええ<>
 ユーザー2<>データ5<>おおお<>
 ユーザー3<>データ6<>かかか<>
 ユーザー1<>データ7<>ききき<>

《検索結果一覧》
■ユーザー1
  データ1 あああ
  データ2 いいい
  データ3 ううう
  データ7 ききき

■ユーザー2
  データ4 えええ
  データ5 おおお

■ユーザー3
  データ6 かかか

上記のような検索結果にまとめるには?
厳密に上記のようにするには、現在追加検討中の複数項目でのソートが必要になるかと思いますが、単純に各ユーザー毎にグループ化するだけであれば
Num(数値順)でUserNumを対象項目に指定して下さい。
(グループ内でさらにソートするに複数項目でのソートが必要)

<INPUT type="hidden" name="Sort" value="Num_UserNum">


  データ詳細へのリンクとカウント数を上げるリンク
◎設置手順9のなかで、[データ詳細へのリンク]と[カウント数を上げるリンク]の設定方法が記載されていますが、この二つの機能を兼ねたリンクの設定は?

カウント数を上げるリンクを貼り、環境設定にてカウント後のジャンプ先を詳細ページにするチェックボックスをチェックして下さ


  『With you あなたもHPを持とう』より
参考
 
テーブル色を交互に違う色にする設定をしている場合
$TrColorという記述で色を呼び出します。
(例) <TR bgcolor="$TrColor">

マーク画像を表示する為には
NEWマークは$NewMarkGif
UPマークは$UpMarkGif
マーク1は$Mark1Gif (データファイルベース検索時のみ)
マーク2は$Mark2Gif (データファイルベース検索時のみ) とします。

データ詳細へのリンクを表示する為には
<A href="$BaseDir/$MainCGI?cmd=dp&
Tfile=$FORM{Tfile}&UserNum=$FORM{UserNum}&
Pass=$FORM{Pass}&AdminPass=$FORM{AdminPass}&
num=*****">とします。
*****部分は
ユーザーファイルベースの場合 $VU[$REC{User}{UserNum}]
データファイルベースの場合 $VD[$REC{Data}{DataNum}] と記述します。

フォームメールへのリンクを表示するには
<A href="$BaseDir/$MainCGI?cmd=
fm&To=*****">とします。
*****部分は
ユーザーファイルベースの場合 $VU[$REC{User}{UserNum}]
データファイルベースの場合 $VD[$REC{Data}{UserNum}] と記述します。
 
カウント数を上げるリンクを表示する為には
<A href="$BaseDir/$MainCGI?cmd=
j&DataNum=$VD[$REC{Data}{DataNum}]&UserNum=$FORM{UserNum}&Pass=$FORM{Pass}&AdminPass=$FORM{AdminPass}">とします。

データ編集へのリンクを表示する為には
<A href="$BaseDir/$MainCGI?cmd=
de&DataNum=$VD[$REC{Data}{DataNum}]">とします。

投票用のリンクを表示するには
<A href="$BaseDir/$MainCGI?cmd=
v&DataNum=$VD[$REC{Data}{DataNum}]">とします。
※Cookieにパスが保存されていると自動的に投票となり
無ければパス入力画面へ飛びます。


  検索結果とデータ詳細の数値に3桁ごとのカンマ「,」を入れたい
db-view.cgi(Ver8.60)の
359行目 &{$FORM{DataHtml}}; の前行と
278行目 }if($FORM{dp} ne ''){ $html=$FORM{dp}; } の前行に
foreach('*****','*****','*****'){ 1 while $VD[$REC{$_}]=~s/(.*\d)(\d\d\d)/$1,$2/ }
と追加すれば3桁区切りになると思います。
※ユーザー側のデータの場合$VUになります。
*****部分はデータ種類(''で囲んで複数は,で区切る)


  検索結果から新たにCGIを呼び出すには?
db-html.cgiの検索結果一覧設定でデータ1件分のデザインを設定しますが、ここに直接<FORM action="*****.cgi">その他CGI呼び出しに必要な記述</FORM>等と記述して下さい。

※必要があればメールアドレスやその他登録データも呼び出すCGI側に渡す事が可能です。
例:<INPUT type="hidden" name="mail" value="$VU[$REC{User}{Mail}]">


  検索条件をさらに絞込み検索(ショートカット対応) new!
通常の検索では絞込み検索は出来ません。ショートカット検索のみに対応するのであれば

<FORM action="$BaseDir/$MainCGI" method="post">
<INPUT type="hidden" name="cmd" value="s">
<INPUT type="hidden" name="sc" value="$FORM{sc}">
〜追加の検索条件〜
</FORM>

という形でショートカット条件+追加条件になるかと思います。


  検索結果に上から順番に通し番号をつける new!
db-view.cgiの418行目
&{$FORM{DataHtml}}; の前行に $n=$i+1; という記述を追加し
db-html.cgiで任意の場所に$nと記述する。


データ詳細(data-part)

  ◎設置手順10 データ詳細ページの設定
lib/template/data-part/default.htmlを開き
※データ詳細テンプレートを複数使用している場合は
ファイル名はdefault.htmlとは限りません。
(◎データ詳細テンプレート複数化)参照

データ詳細画面で表示したいデータを自由に設定します。
設定法は手順9の一覧ページと同様となります。


  ◎データ詳細テンプレート複数化
データ詳細ページのテンプレートを複数使用する場合は以下のようにします。

各データ毎に別々のテンプレートを使用したい場合は以下の手順を実行します。

管理室のデータ種類追加からデータファイル側([デ])にDpTypeというデータ種類を追加します。

template/data-partディレクトリ内にいくつでもデータ詳細ページテンプレートを用意します。

データ登録フォームにDpTypeを選択するセレクトメニュー等を追加します。
※value(登録内容)にはtemplate/data-partディレクトリ内のファイル名を入力します。

例:<SELECT name="DpType">
<OPTION value="dp1.html">Aタイプ</OPTION>
<OPTION value="dp2.html">Bタイプ</OPTION></SELECT>

DpTypeが未入力のデータは自動的にdefault.htmlで表示されます。

1つのデータで複数の詳細ページを表示したい場合は以下のようにします。

template/data-partディレクトリ内にいくつでもデータ詳細ページテンプレートを用意します。

後は詳細ページへのリンクに&dp=テンプレートファイル名という記述を追加すればそのテンプレートファイルを使用した詳細ページが表示されます。

※なおdp=テンプレートファイルの方が優先順位が高い為これが指定されるとDpTypeは無視されます。


  画像のアップ
<IMG src="http://www.nichironet.net/db/file/$VD[$REC{Data}{DFile}]">

  詳細ページのデザインの複数化 new!
下記2つのテンプレートを用意

lib/template/data-part/data/default.html(通常詳細画面)
lib/template/data-part/data/print.html(印刷用詳細画面)

default.html内に以下のリンクを記述

<A href="$BaseDir/$MainCGI?cmd=dp&num=$VD[$REC{Data}{DataNum}]&dp=print.html">印刷ページ</A>

※検索/閲覧をユーザーのみに制限している場合は
&UserNum=$FORM{UserNum}&Pass=$FORM{Pass}&AdminPass=$FORM{AdinPass}
もリンクURLに加えて下さい。



- Link Collection -