dポイントプレゼントキャンペーン実施中!

WEB寺小屋のショッピングカートで当サイトは、現在サポートしていないようで、商品登録する際のサブルーチン処理は
下記です。下記のソースで「id_num」が同じ場合、単純にエラーを返す場合は、どのように返したら分かりません。
わかるかた教えて下さい。ちなみに下記はオリジナルソースで3行目と6行目は同じ処理をしています。
どちらか、削除しても問題ないでしょうか?



sub goods_regist {

if ( $in{'id'} eq '' ) { &error ('エラー','IDが未選択です'); }
if ( $in{'id_num'} eq '' ) { &error ('エラー','商品個別番号が未入力です'); }
if ( $in{'goods'} eq '' ) { &error ('エラー','商品名が未入力です'); }
if ( $in{'tanka'} eq '' ) { &error ('エラー','商品単価が未入力です'); }
if ( $in{'id_num'} eq '' ) { &error ('エラー','商品個別番号が未入力です'); }
if ( $in{'ad_amount'} eq 'text' && $in{'ad_amount2'} eq '' ) { &error ('エラー','個数設定が不正です'); }
if ( $in{'ad_amount'} eq 'list' && $in{'ad_amount3'} eq '' ) { &error ('エラー','個数設定が不正です'); }

$goods_data = "$goods_dir/$in{'id'}.cgi";
open (DATA,"$goods_data") || &error('オープンエラー','商品データファイルが開けません。');
@LINES = <DATA>;
close (DATA);

$count = @LINES;
if ( $count == 0 ) {
$num = 1;
} else {
@lists = $LINES[-1];
$num = $lists[0];
$num = $num + 1;
}

#if ( $in{'id_num'} != $num ) { &error ('エラー','商品個別番号が間違っています'); }

&lock2;

open (OUT,">>$goods_data") || &error('オープンエラー','メール設定ファイルが開けません。');
print OUT "$num\t$date_now\t$in{'id'}\t$in{'id_num'}\t$in{'goods'}\t$in{'tanka'}\t";
print OUT "$in{'ad_amount'}\t$in{'ad_amount2'}\t$in{'ad_amount3'}\t$in{'rem'}\t\n";
close (OUT);

A 回答 (4件)

admin.cgi をみてみました。





1) 商品登録フォームに情報を入力し、submit すると、admin.cgi の goods_regist サブルーチンが呼び出される。

2) 管理者は、商品登録のたびに、毎回、登録フォームで商品IDを手入力する

3) 登録された商品情報は、$in{'id'}.cgi というファイルの最後の行に1行追加される。

問題は、
「すでに登録されている商品IDを入力しても、登録されてしまう」

ということでよろしいでしょうか。


これを防ぐには、2つのアプローチが考えられます。

1. 登録者が、毎回最新の商品IDを確認して、すでに登録されている商品IDを入力してしまわないようにする。
「*最新のIDは、こちらで検索して確かめてください。」というところから

2. 登録者が商品IDを入力するのではなく、プログラム内で商品IDを自動に割り当てるようにする。
プログラムで、IDを, 001, 002, 003, ... のようにカウントアップしていく、ということです。
    • good
    • 0

[2] SHOP SYSTEM Final Type1


http://www.web-terakoya.net/library/doc/shopv1.h …
のshop.cgi

をながめてみましたが、質問での goods_regist というサブルーチンはありませんし、似たような記述も見あたらないようなのです。

この回答への補足

申し訳ございません。

shop.cgiではなくadmin.cgiです。
ちゃんとした補足でなくて申し訳ございません。
233行目付近のコードなのですが・・・・

お手数おかけしますが、ご回答願えればと思います。
よろしくお願いします。困ってます。

補足日時:2007/10/08 08:10
    • good
    • 0

「Web寺子屋」(www.web-terakoya.net) には、ショッピングカートのCGIがいろんなタイプがあるようですが、どのタイプなのでしょうか?



プログラム全体をみてみないと、ここのサブルーチンでやりたい処理ができるかどうかは、わかりません。

この回答への補足

[2] SHOP SYSTEM Final Type1です。
http://www.web-terakoya.net/library/doc/shopv1.h …
のshop.cgiファイルです。

ご回答お願いします。

補足日時:2007/10/07 23:06
    • good
    • 0

>「id_num」が同じ場合、


意味が不明です。「id_num」と何が同じになるのでしょうか?

>ちなみに下記はオリジナルソースで3行目と6行目は同じ処理をしています。
>どちらか、削除しても問題ないでしょうか?
問題ありません。

エラーを返したい場合は
&error ('エラー','XXXが間違っています');
とすればいいです。

この回答への補足

説明不足ですいません。
「id_num」が同じ場合というのは、商品登録画面上で、商品番号が登録できます。id_numに商品番号が入ります。

現在の仕様では、重複して登録できてしまいますので、防止させるためです。ここのサブルーチン処理ではできないのでしょうか?

よろしくお願いします。

補足日時:2007/10/05 18:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!