☆ショッピングカートのCGIを作りたい!Perlで☆ (517レス)
1-

341: 名無しさん@お腹いっぱい。 [sage ] 02/02/12 06:25 ID:??? AAS
>340
robotよけのメタは、誰も見ていないです。きっと。
342
(1): 無謀者 02/02/12 13:16 ID:??? AAS
>340
詳しい説明ありがとうございます。リフレッシュを止めて、フォームボタンで
hiddenを渡し、リファラチェックも入れるようにします。
ところで、一つのサブミットボタンで二つ以上のアクションを指定する事って
出来るんでしょうか?たとえば
<form method=post action=hoge.cgi>
<form method=post action=hage.cgi>
<input ...
<input....
<input type=submit value=OK>
省3
343
(1): 名無しさん@お腹いっぱい。 [さげ] 02/02/12 18:27 ID:??? AAS
むり(やったことないけど)。
仮に出来たとして、ブラウザはどっちに応答すればいいのさ。
344
(1): 名無しさん@お腹いっぱい。 [あ] 02/02/12 21:09 ID:??? AAS
>>342
二つ以上アクションさせたい場合はhiddenでvalueを送ってスクリプト
のなかのifで受ける。
例:
<form method=post action=hage.cgi>
<input type=hidden name=action value=hoge>
<input type=hidden name=action value=hage>
<input type=submit value=OK>
</form>
〜hage.cgi〜
省6
345: 無謀者 02/02/13 00:04 ID:??? AAS
>>343-344ありがとうございました。
今、注文受けたら在庫数を減らすってところを作ってるんですが
これが結構大変そうです・・・・・
346
(1): 無謀者 02/02/13 01:26 ID:??? AAS
う〜ん、注文が確定した時(メールを送信する直前)にカートに入ってる
各商品の注文数を、商品ごとに各商品ファイルと照合して、注文数>在庫数
又は在庫数=0ならエラー、もし注文数<在庫数なら、「在庫数ー注文数」して
商品ファイル内の該当商品の在庫数を修正・・・・・
それぞれの処理は、今まで教えていただいた事でかけそうなんですが、データの抽出、条件分岐が非常に複雑になりそうです。
347
(2): 名無しさん@お腹いっぱい。 02/02/13 05:09 ID:??? AAS
>>346
それって全然簡単じゃない?例としては
if ($ORDER{'mona'} > $ZAIKO{'mona'}) {
print "申し訳ありません。只今$ORDER{'mona'}は在庫を切らしております。\n";
} else {
$ZAIKO{'mona'} -= $ORDER{'mona'}
}
こんな場合こそ、パール独特の変数、ハッシュが力を発揮する時だよ。
ハッシュを上手く使ってね。
348: 無謀者 02/02/13 10:05 ID:??? AAS
>347
えっと、カートの中身が複数だった場合商品によって、格納されているファイルがそれぞれ違うので
まずforeachとかで順にカートの中身を取り出しながら商品の格納されているファイルを、検索(hidenでファイル名を渡してある)して、見つかったファイル名をまたforeachなりwhileなりで
検索して、商品名がマッチしたら在庫数と注文数を比較、それで0か足りない場合は
エラー、もし大丈夫なら、在庫数から注文数を引いて、ファイルに書き直し・・・・

みたいな事をやらなければダメな気がするんですが・・・
349: 297 02/02/13 12:22 ID:??? AAS
@files=glob "$dir/*.dat"; # $dirはディレクトリ名。*.datのlistを得る
foreach $file(@files){
 open FILE,$file or &error;
 while(<FILE>){
 my($no, $hinmei, $zaiko・・・) = split /\t/; #左辺のmyのリストは適当に
 $zaiko{"$file::$hinmei"} = $zaiko;
 }
 close FILE;
}
とかやって%zaiko{"ファイル名::品名"}(%zaiko{"ファイル名::商品番号"}?)に
省20
350
(1): 297 02/02/13 18:52 ID:??? AAS
AA省
351: 無謀者 02/02/14 15:56 ID:??? AAS
>>350=297さん
いつもありがとうございます。
せっかく、頂いたんですが、違う方法で実装できました。
次は「在庫がありません」だけではちょっと不親切なので「在庫が無いので買物カゴから削除しました」
と「在庫が足りないので$cyumon個を$zeiko個に変更しました」と表示して
カートの中身を書き換える機能を作成中です。一度に商品ファイルとカートファイルを
の二つをハンドルするので、ループ中の何処で、書き込んで、何処でテンポラリーファイルを
リネームするのかが、書いててわからなくなる・・・・(苦笑
スクリプト一行書くごとに、print"処理結果" and exit;で出力内容を確認しながら
進めてます
352: 無謀者 02/02/15 00:25 ID:??? AAS
買物を途中で止められた場合、datファイルが残ってしまっているので、それを
定期的に消したいんですが、たとえば最終更新時間から$time以上経過したら
削除させるのって
@files=glob("./cart/*.dat");
foreach(@files){

@info=stat $_;
$deltime=time-60*60*$time
if ($info[9] >$deltime){
unlink $_;
}
省5
353: 無謀者 02/02/15 00:39 ID:??? AAS
なんか誤字だらけ・・・
×入らないファイルが消える
○要らないファイルが消える
354: 297 02/02/15 01:39 ID:??? AAS
おお、自力で実装できたか。ガンガン腕を上げていますね。
あとは欲張って機能拡張しすぎてスパゲッティにならんようにね。

statで得られるのはtimeとおなじ*1970年からの*通算秒だよ。
最終更新からの経過だけ調べるだけなら、ファイルテスト演算子-Mで
最終更新からの*経過日数*が得られるよ。
foreach(glob("./cart/*.dat")){
 unlink if -M $_ > $time; # $timeは日数、0.5なら12時間
}
とか。
355: 無謀者 02/02/16 01:32 ID:??? AAS
画像のアップロードって、難しいですね・・・・
356
(2): 名無しさん@お腹いっぱい。 02/02/16 15:01 ID:BlI0w0O/(1/2) AAS
大人のCGI(書籍)
外部リンク[html]:www.byakuya-shobo.co.jp
あたり読んで、パクれ。
今のお前ならもうこの本のスクリプトを解析、応用できるはずだ。
357: 無謀者 02/02/16 16:40 ID:??? AAS
持ってたりします・・・>大人のCGI
実は他でソースパクってUpload.cgi作ったら動いた事は動いたんですが
それを、admin.cgiにサブルーチンとして埋め込むと動かなくなります。
そのソースは、CGI.pm使ってたんですが、enctype="multipart/form-data" で受け取ったデータを
ReadParseかけちゃってるのが問題なのかな?とか思ってたりするんですが、関係あります?
358: 名無しさん@お腹いっぱい。 02/02/16 17:51 ID:BlI0w0O/(2/2) AAS
そこだ。ファイルデータは生で扱え。
その動いたっちゅうUpload.cgiで、どこをパースしてどこを生で扱っているか
解析してみるのだ。この件に関して間違いのない文書はRFC1867。
359: 無謀者 02/02/16 19:24 ID:??? AAS
ちょっと、頭の中がテンパって来たので、気分転換で、管理画面のUIを整理しました。
外部リンク[htm]:cgitest.s7.xrea.com
各画面から必要なページに戻れるようにボタンをつけました。
あと、新規ページ作成時と、デザイン変更時に作成結果(変更結果)が確認できるようにしました。
360: 名無しさん@お腹いっぱい。 [ ] 02/02/16 20:34 ID:??? AAS
うぷろだでわかんないってどの辺?よかったら書いてみ
1-
あと 157 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.015s