※ ChatGPTを利用し、要約された質問です(原文:フォームの内容が1項目目だけ落ちます)
フォームの1項目目落ち問題 | ショッピングカート CGI修正の方法は?
このQ&Aのポイント
現在、ショッピングカートのCGIをカスタマイズしており、商品をカートに入れると注文者情報入力ページに移動しますが、情報確認ページに表示される情報の一行目が表示されません。
CGIのプログラムを確認したところ、フォームから送られたデータを表示している部分が原因ではないかと考えています。
しかし、具体的な修正方法についてはわからず、初心者で困っています。アドバイスをいただけると助かります。
ショッピングカート CGIをカスタマイズしていますが、なにぶん自分で書く事ができずに見よう見まねねでソースをいじっているために行き詰まりました。。。
現状、商品をカゴに入れるボタンを押すと、注文者情報を入れるページに移動します。
情報入力ページにて入力して、確認画面へ のボタンを押すと、確認画面へ移行しますが、
情報確認ページに表示される情報の一行目だけが表示されません。
例えば、
氏名、〒、住所、電話・・・を入力して → 確認画面へボタン
確認画面では、
〒、住所、電話・・・しか表示されません。
ただ、一緒にhidden属性の項目もあり、そちらには一行目からのデータが書き出されており、
次に「メール送信」のボタンを押せばデータはすべて記載された形で送られます。
cgi プログラム 下記の部分でフォームから送られたデータを表示していると思うのですが、どこが悪いのか検討もつきません。
$Count_n = @DATA_N;
foreach $n_data ( 1 .. $Count_n - 3 ) {
if ( $DATA_N[$n_data] eq 'tax2' || $DATA_N[$n_data] eq 'sougoukei' || $DATA_N[$n_data] eq 'cookie' || $DATA_N[$n_data] eq 'syoukei' || $DATA_N[$n_data] eq 'soryo' ) {
next;
}
$data_name = $data_name2 = $DATA_N[$n_data];
$data_name2 =~ s/^_//g;
$data_name2 =~ s/pay/支払方法/g;
if ( $DATA_N[$n_data] eq 'pay' ) { $DATA_V[$n_data] =~ s/-(\d+)//g; }
print "<dt>$data_name2</dt>\n" ;
if ( $data_name =~ /^_/ ) {
if ( $DATA_V[$n_data] eq '' ) {
print "<dd>必須項目未入力</dd>\n" ;
push ( @Hissu,$DATA_N[$n_data] );
} else {
print "<dd>$DATA_V[$n_data]</dd>\n" ;
}
} else {
print "<dd>$DATA_V[$n_data]</dd>\n" ;
}
}
print "</dl>\n" ;
foreach $num_2 ( 0 .. $Count_n - 6 ) {
if ( $DATA_N[$num_2] eq 'cookie' ) { next; }
if ( $DATA_N[$num_2] eq 'pay' ) { next; }
$DATA_N[$num_2] =~ s/^_//g;
print "<input type=\"hidden\" name=\"$DATA_N[$num_2]\" value=\"$DATA_V[$num_2]\">\n";
}
print "<input type=\"hidden\" name=\"syoukei\" value=\"\\$v_goukei\">\n";
print "<input type=\"hidden\" name=\"tax2\" value=\"\\$v_tax2\">\n";
if ( $v_soryo ne '' ) {
print "<input type=\"hidden\" name=\"soryo\" value=\"$v_soryo\">\n";
}
if ( $pay_name ne '' ) {
print "<input type=\"hidden\" name=\"pay_tesuryo\" value=\"\\$pay_daikin\">\n";
}
print "<input type=\"hidden\" name=\"sougoukei\" value=\"\\$v_sougoukei\">\n";
print "<input type=\"hidden\" name=\"pay\" value=\"$pay_name2\">\n";
print "<input type=\"hidden\" name=\"mode\" value=\"sendmail\">\n" ;
初心者の為、万策尽きた感じです。どなたか宜しくお願い致します。
お礼
ありがとうございました! 1から始まっているからでした。。 0にしたら、一行目から表示されるようになりました。 大変助かりました。 ありがとうございます。