CGI-BBS > データベース > 簡易データベース > 既出・データベース兇埜〆結果で選択した行を書き換えたい。


(株)友林堂
(株)友林堂


データ復旧、即日 データ¨復旧¨テラステーション¨修理

質問者 つよし」  投稿日 2006/2/25(土) 03:21:00  [削除] (返信・回答が付いた後にこの質問の削除はできません)
いつも、参考にさせていただいております。

既出スレッド「データベースファイルの特定の行を指定して書き換えたい」を参考に、
僕も簡易データベース兇砲いて、特定の一行を編集しようと試みていますが、
書き換えのときに、対象行以外のデータが削除されてしまい、困っています。
どなたか、ご教授いただけませんでしょうか。

ちなみに、以下のように改造しました。

【検索結果表示画面】
@sorts = sort { (split(/,/,$a))[1] cmp (split(/,/,$b))[1] } @NEW;
	foreach $data (@sorts) {
		($NAME,$SEX,$EMAIL,$AGE,$PREF,$REM) = &DecodeCSV($data);

		print "<tr>\n";
		print "<td nowrap>$NAME</td>\n";
		print "<td nowrap align=center>$SEX</td>\n";
		print "<td nowrap><a href=\"mailto:$EMAIL\">$EMAIL</a></td>\n";
		print "<td nowrap align=center>$AGE</td>\n";
		print "<td nowrap>$PREF</td>\n";
		print "<td>$REM</td>\n";
		print "<form method=POST action=\"database.cgi\"><input type=hidden name=\"target\" value=\"$NAME,$SEX,$EMAIL,$AGE,$PREF,$REM\"><input type=hidden name=\"NAME2\" value=\"$NAME\"><input type=hidden name=\"EMAIL2\" value=\"$EMAIL\"><input type=hidden name=\"AGE2\" value=\"$AGE\"><input type=hidden name=\"PREF2\" value=\"$PREF\"><input type=hidden name=\"REM2\" value=\"$REM\"><input type=hidden name=\"edit\" value=1><td><input type=radio name=\"SEX2\" value=\"1\">男<input type=radio name=\"SEX2\" value=\"2\">女</td>\n";
		print "<td><input type=submit value=\"登録\"></td></form>\n";
		print "</tr>\n";
	}


【追加プログラム】
if ($FORM{'edit'}){
foreach $num ($FF .. $#BASE){
 if($num == $FORM{'target'}){push(@newlog,"$FORM{'NAME2'},$FORM{'SEX2'},$FORM{'EMAIL2'},$FORM{'AGE2'},$FORM{'PREF2'},$FORM{'REM2'}\n");}
else{push(@newlog,"$_");}
}
open(OUT,"> $file") || &err1('not writing');
print OUT @newlog;
close(OUT);
}

おそらく、else{push(@newlog,"$_");}
の部分が適切でないか、あるいは、$num == $FORM{'target'}で、すべてのデータが
ヒットしてしまっているために、該当行以外のデータが削除されてしまっているのでは
無いか、と考えているのですが、方策がこれ以上浮かびません。

どなたかご教授いただけると、非常に助かります。
よろしくお願いします。

【習熟度】多少の改造ができる

返信(回答)する

 


データ復旧、即日 データ¨復旧¨テラステーション¨修理 Web裏技