#!/bin/csh -f

echo "Content-type: text/html"
echo ""

# スクリプト全体で使用する初期設定
set ADS_LIST="/home/xxx/public_html/ads_list"
set ADS_DATA="/tmp/ads_data."$$
set TMP_file = "/tmp/ads_list"
set CGIPARSE="/usr/local/bin/cgiparse"
set AWK = "/usr/local/bin/gawk"
set NKF = "/usr/local/bin/nkf"
set WC = "/usr/bin/wc"
set SED = "/usr/local/bin/jsed"
set CAT = "/bin/cat"
set SORT = "/usr/bin/sort"
set LS = "/bin/ls -l"
set RM = "/bin/rm"
set FILE_size=`$LS $ADS_LIST | $AWK '{print $5}'`
setenv CONTENT_LENGTH 1000 

# 受信データをファイルに出力
$CGIPARSE -read > $ADS_DATA
set Send_mode=`$CAT $ADS_DATA | $CGIPARSE -value send`

# sendボタンのデータによるswitch文
switch ($Send_mode)

	## 検索の処理
	case Search :

$CAT << toHTML | $NKF -j
<TITLE>showall</TITLE>
<FORM action="htmlads.cgi" method="POST">
<H2><CENTER><IMG SRC="personal.gif" ALIGN=top>検索結果の全リスト表示</H2>
<HR>
<FONT SIZE="-1"><A HREF="showall.shtml">全てを表示する</A> | <A HREF="adsfind.html">検索・削除・変更</A> | <A HREF="adsnew.html">新規入力</A> | <A HREF ="htmlads.html">トップページ</A></FONT>
<HR>
<TABLE BORDER=1 WIDTH="100%">
<TR><TD>選択</TD><TD>索引</TD><TD>姓</TD><TD>名</TD><TD>住所</TD><TD>電話</TD><TD>性別</TD></TR>
toHTML

		### 受信データをファイルから変数へ
		set Search_mode=`$CAT $ADS_DATA | $CGIPARSE -value Search_mode`
		set Search_key=`$CAT $ADS_DATA | $CGIPARSE -value Search_key | $NKF -e`
		switch ($Search_mode)

		### 索引で検索
		case key_alpha :
			$AWK '$1 ~ /'"$Search_key"'/ {printf "<TR><TD><INPUT TYPE=\"radio\" NAME=\"DATA_no\" VALUE=\"%s\"></TD><TD><CENTER>%s</CENTER></TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD><CENTER>%s</CENTER></TD></TR>",NR,$1,$2,$3,$4,$5,$6}' $ADS_LIST | $SORT | $NKF -j
			breaksw

			#### 姓で検索
			case key_1name :
				$AWK '$2 ~ /'"$Search_key"'/ {printf "<TR><TD><INPUT TYPE=\"radio\" NAME=\"DATA_no\" VALUE=\"%s\"></TD><TD><CENTER>%s</CENTER></TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD><CENTER>%s</CENTER></TD></TR>",NR,$1,$2,$3,$4,$5,$6}' $ADS_LIST | $SORT | $NKF -j
			breaksw

			#### 名で検索
			case key_2name :
				$AWK '$3 ~ /'"$Search_key"'/ {printf "<TR><TD><INPUT TYPE=\"radio\" NAME=\"DATA_no\" VALUE=\"%s\"></TD><TD><CENTER>%s</CENTER></TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD><CENTER>%s</CENTER></TD></TR>",NR,$1,$2,$3,$4,$5,$6}' $ADS_LIST | $SORT | $NKF -j
			breaksw

			#### 住所で検索
			case key_ads :
			$AWK '$4 ~ /'"$Search_key"'/ {printf "<TR><TD><INPUT TYPE=\"radio\" NAME=\"DATA_no\" VALUE=\"%s\"></TD><TD><CENTER>%s</CENTER></TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD><CENTER>%s</CENTER></TD></TR>",NR,$1,$2,$3,$4,$5,$6}' $ADS_LIST | $SORT | $NKF -j
			breaksw

			#### 電話で検索
			case key_tel :
				$AWK '$5 ~ /'"$Search_key"'/ {printf "<TR><TD><INPUT TYPE=\"radio\" NAME=\"DATA_no\" VALUE=\"%s\"></TD><TD><CENTER>%s</CENTER></TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD><CENTER>%s</CENTER></TD></TR>",NR,$1,$2,$3,$4,$5,$6}' $ADS_LIST | $SORT | $NKF -j
			breaksw

			#### 性別で検索-1
			case key_sex1 :
				$AWK '$6 ~ /男/ {printf "<TR><TD><INPUT TYPE=\"radio\" NAME=\"DATA_no\" VALUE=\"%s\"></TD><TD><CENTER>%s</CENTER></TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD><CENTER>%s</CENTER></TD></TR>",NR,$1,$2,$3,$4,$5,$6}' $ADS_LIST | $SORT | $NKF -j
			breaksw

			#### 性別で検索-2
			case key_sex2 :
				$AWK '$6 ~ /女/ {printf "<TR><TD><INPUT TYPE=\"radio\" NAME=\"DATA_no\" VALUE=\"%s\"></TD><TD><CENTER>%s</CENTER></TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD>%s</TD><TD><CENTER>%s</CENTER></TD></TR>",NR,$1,$2,$3,$4,$5,$6}' $ADS_LIST | $SORT | $NKF -j
			breaksw

		endsw

$CAT << toHTML | $NKF -j
</TABLE><HR>
現在のファイルサイズ：<INPUT TYPE="text" NAME="FILE_size" VALUE="$FILE_size" >
<HR>
<INPUT TYPE="submit" NAME="send" VALUE="Delete">
<INPUT TYPE="submit" NAME="send" VALUE="Change">
<INPUT TYPE="reset" VALUE="Reset">
</FORM>
</CENTER></BODY></HTML>
toHTML

	$RM $ADS_DATA
	breaksw


	## データを新規追加する
	case Registration :

		### 受信データをファイルから変数へ
		set New_1name=`$CAT $ADS_DATA | $CGIPARSE -value New_1name | $NKF -e`
		set New_2name=`$CAT $ADS_DATA | $CGIPARSE -value New_2name | $NKF -e`
		set New_ads=`$CAT $ADS_DATA | $CGIPARSE -value New_ads | $NKF -e`
		set New_tel=`$CAT $ADS_DATA | $CGIPARSE -value New_tel | $NKF -e`
		set New_alpha=`$CAT $ADS_DATA | $CGIPARSE -value New_alpha | $NKF -e`
		set New_sex=`$CAT $ADS_DATA | $CGIPARSE -value New_sex | $NKF -e`

		### ファイルへデータを追加
		set Chg_data="$New_alpha $New_1name $New_2name $New_ads $New_tel $New_sex"
		echo $Chg_data >> $ADS_LIST

		### 確認のHTMLファイルを送信
$CAT << toHTML | $NKF -j
<TITLE>新規追加確認</TITLE>
<CENTER>
データ<P>
<FONT SIZE="+2">$Chg_data</FONT><P>
を追加しました。
<HR>
<FONT SIZE="-1"><A HREF="showall.shtml">全てを表示する</A> | <A HREF="adsfind.html">検索・削除・変更</A> | <A HREF="adsnew.html">新規入力</A> | <A HREF ="htmlads.html">トップページ</A></FONT>
<HR>
</CENTER>
toHTML

		$RM $ADS_DATA
	breaksw


	## データを削除する
	case Delete :

		### 受信データをファイルから変数へ
		set DATA_no=`$CAT $ADS_DATA | $CGIPARSE -value DATA_no`
		set ORG_size=`$CAT $ADS_DATA | $CGIPARSE -value FILE_size`

		### データサイズが同じかどうかで、ファイルの変更がない事を確認する
		if ( $ORG_size != $FILE_size ) then

			#### 受信したデータが古くなっている事の通知
$CAT << toHTML | $NKF -j
<TITLE>ファイルが変わっています！</TITLE>
<CENTER>
データが変更されています。もう一度検索し直して下さい。
<HR>
<FONT SIZE="-1"><A HREF="showall.shtml">全てを表示する</A> | <A HREF="adsfind.html">検索・削除・変更</A> | <A HREF="adsnew.html">新規入力</A> | <A HREF ="htmlads.html">トップページ</A></FONT>
<HR>
</CENTER>
toHTML
		else
			#### ファイルからデータを削除
			set Edit_data = `$AWK 'NR=='"$DATA_no"' {print $0}' $ADS_LIST`
			$CAT $ADS_LIST > $TMP_file
			$SED '/'"$Edit_data"'/d' $TMP_file > $ADS_LIST

			#### 確認のHTMLファイルを送信
$CAT << toHTML | $NKF -j
<TITLE>削除確認</TITLE>
<CENTER>
データ<P>
<FONT SIZE="+2">$Edit_data</FONT><P>
を削除しました。
<HR>
<FONT SIZE="-1"><A HREF="showall.shtml">全てを表示する</A> | <A HREF="adsfind.html">検索・削除・変更</A> | <A HREF="adsnew.html">新規入力</A> | <A HREF ="htmlads.html">トップページ</A></FONT>
<HR>
</CENTER>
toHTML
		endif

		$RM $ADS_DATA $TMP_file
	breaksw


	## データ変更ページの表示
	case Change :
		set DATA_no=`$CAT $ADS_DATA | $CGIPARSE -value DATA_no`
		set ORG_size=`$CAT $ADS_DATA | $CGIPARSE -value FILE_size`

		### データサイズが同じかどうかで、ファイルの変更がない事を確認する
		if ( $ORG_size != $FILE_size ) then

			#### 受信したデータが古くなっている事の通知
$CAT << toHTML | $NKF -j
<TITLE>ファイルが変わっています！</TITLE>
<CENTER>
データが変更されています。もう一度検索し直して下さい。
<HR>
<FONT SIZE="-1"><A HREF="showall.shtml">全てを表示する</A> | <A HREF="adsfind.html">検索・削除・変更</A> | <A HREF="adsnew.html">新規入力</A> | <A HREF ="htmlads.html">トップページ</A></FONT>
<HR>
</CENTER>
toHTML
		else
			#### ファイルから任意のデータを変数へ
			set alpha_data=`$AWK 'NR=='"$DATA_no"' {print $1}' $ADS_LIST`
			set name1_data=`$AWK 'NR=='"$DATA_no"' {print $2}' $ADS_LIST`
			set name2_data=`$AWK 'NR=='"$DATA_no"' {print $3}' $ADS_LIST`
			set ads_data=`$AWK 'NR=='"$DATA_no"' {print $4}' $ADS_LIST`
			set tel_data=`$AWK 'NR=='"$DATA_no"' {print $5}' $ADS_LIST`
			set sex_data=`$AWK 'NR=='"$DATA_no"' {print $6}' $ADS_LIST`

			#### データ変更用のHTMLを送信
$CAT << toHTML | $NKF -j
<TITLE>データ変更ページ</TITLE>
<FORM action="htmlads.cgi" method="POST">
<CENTER>
<H2>データ変更</H2>
<TABLE BORDER=0 WIDTH="100%">
<TR>
<TD>No.<INPUT TYPE="text" NAME="DATA_no" VALUE="$DATA_no" SIZE=6><BR></TD>
<TD>現在のファイルサイズ：<INPUT TYPE="text" NAME="FILE_size" VALUE="$FILE_size" SIZE=6></TD>
</TABLE>
<TABLE BORDER=1>
<TR>
<TD><CENTER><IMG SRC="personal.gif" ALIGN=top></CENTER></TD>
<TD COLSPAN=2><FONT SIZE="+2"><INPUT TYPE="text" NAME="New_1name" VALUE="$name1_data" SIZE=12></FONT></TD>
<TD COLSPAN=2><FONT SIZE="+2"><INPUT TYPE="text" NAME="New_2name" VALUE="$name2_data" SIZE=12></FONT></TD>
</TR>
<TR>
<TD>住所</TD>
<TD COLSPAN=4><INPUT TYPE="text" NAME="New_ads" VALUE="$ads_data" SIZE=50></TD>
</TR>
<TR>
<TD>電話</TD>
<TD COLSPAN=4><INPUT TYPE="text" NAME="New_tel" VALUE="$tel_data" SIZE=29></TD>
</TR>
<TR>
<TD>索引</TD>
<TD><INPUT TYPE="text" NAME="New_alpha" VALUE="$alpha_data" SIZE=2></TD>
<TD>性別</TD>
toHTML

			#### ラジオボタン用のデータを作成
			if ( $sex_data == "男" ) then
$CAT << toHTML | $NKF -j
<TD><INPUT TYPE="radio" NAME="New_sex" VALUE="男" CHECKED>男　</TD>
<TD><INPUT TYPE="radio" NAME="New_sex" VALUE="女">女　</TD>
</TR>
toHTML
			else
$CAT << toHTML | $NKF -j
<TD><INPUT TYPE="radio" NAME="New_sex" VALUE="男">男　</TD>
<TD><INPUT TYPE="radio" NAME="New_sex" VALUE="女" CHECKED>女　</TD>
</TR>
toHTML
			endif

$CAT << toHTML | $NKF -j
</TABLE>
<HR>
<FONT SIZE="-1"><A HREF="showall.shtml">全てを表示する</A> | <A HREF="adsfind.html">検索・削除・変更</A> | <A HREF="adsnew.html">新規入力</A> | <A HREF ="htmlads.html">トップページ</A></FONT>
<HR>
<INPUT TYPE="submit" NAME="send" VALUE="MakeChange">　<INPUT TYPE="reset" VALUE="Reset"> 
</CENTER>
</FORM>
toHTML
		endif
	breaksw


	## データを変更する
	case MakeChange :

		### 受信データをファイルから変数へ
		set DATA_no=`$CAT $ADS_DATA | $CGIPARSE -value DATA_no`
		set ORG_size=`$CAT $ADS_DATA | $CGIPARSE -value FILE_size`
		set New_1name=`$CAT $ADS_DATA | $CGIPARSE -value New_1name | $NKF -e`
		set New_2name=`$CAT $ADS_DATA | $CGIPARSE -value New_2name | $NKF -e`
		set New_ads=`$CAT $ADS_DATA | $CGIPARSE -value New_ads | $NKF -e`
		set New_tel=`$CAT $ADS_DATA | $CGIPARSE -value New_tel | $NKF -e`
		set New_alpha=`$CAT $ADS_DATA | $CGIPARSE -value New_alpha | $NKF -e`
		set New_sex=`$CAT $ADS_DATA | $CGIPARSE -value New_sex | $NKF -e`

		### データサイズが同じかどうかで、ファイルの変更がない事を確認する
		if ( $ORG_size != $FILE_size ) then

			#### 受信したデータが古くなっている事の通知
$CAT << toHTML | $NKF -j
<TITLE>ファイルが変わっています！</TITLE>
<CENTER>
データが変更されています。もう一度検索し直して下さい。
<HR>
<FONT SIZE="-1"><A HREF="showall.shtml">全てを表示する</A> | <A HREF="adsfind.html">検索・削除・変更</A> | <A HREF="adsnew.html">新規入力</A> | <A HREF ="htmlads.html">トップページ</A></FONT>
<HR>
</CENTER>
toHTML
		else
			#### ファイルからデータを削除と追加
			set Edit_data=`$AWK 'NR=='"$DATA_no"' {print $0}' $ADS_LIST`
			set Chg_data="$New_alpha $New_1name $New_2name $New_ads $New_tel $New_sex"
			$CAT $ADS_LIST > $TMP_file
			$SED '/'"$Edit_data"'/d' $TMP_file > $ADS_LIST
			echo $Chg_data >> $ADS_LIST

			#### 確認のHTMLファイルを送信
$CAT << toHTML | $NKF -j
<TITLE>変更確認</TITLE>
<CENTER>
データを<P>
<FONT SIZE="+2">$Edit_data</FONT><P>
から<P>
<FONT SIZE="+2">$Chg_data</FONT><P>
へ変更しました。
<HR>
<FONT SIZE="-1"><A HREF="showall.shtml">全てを表示する</A> | <A HREF="adsfind.html">検索・削除・変更</A> | <A HREF="adsnew.html">新規入力</A> | <A HREF ="htmlads.html">トップページ</A></FONT>
<HR>
</CENTER>
toHTML
		endif

		$RM $ADS_DATA $TMP_file
	breaksw

endsw
