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

188
(2): 名無しさん@お腹いっぱい。 02/01/21 06:32 ID:yXZYknLA(1) AAS
>187

$i = 0;
foreach (@line) {
($id,$hoge,$mona,$giko) = split(/\,/,$_);
if (削除キー eq $id) { splice(@line,$i,1); last; }
$i++;
}

削除キーには、削除ボタン押したときに飛ばされる値を指定する。
189
(2): 名無しさん@お腹いっぱい。 [ ] 02/01/21 12:21 ID:??? AAS
やっぱりこうやって見てるとDB使った方が楽だよね(わら
190
(2): 名無しさん@お腹いっぱい。 02/01/21 12:30 ID:TFQKF+6T(1) AAS
>189
禿同。
セッションIDだけhiddenで渡しておいて、あとは全部DB任せ。
この方が絶対楽だね。ソートするにせよ、合計金額を出すにせよ
全部DB任せ。こんなに楽な方法ばかり普段使っていると
>1が凄いことをしているように見えてくる・・・
191: 189 [ ] 02/01/21 12:42 ID:??? AAS
>>190
だよね(わら
久しぶりにファイル操作スクリプトみたんで懐かしいよ。

>>1さん
エラー処理はきちんとしましょうね。
クッキー渡すときも、ファイルを開くときもね。
あとデータ受け取ったときもサイズとか中身のチェックいれとかないと
だめだかんね〜♪
全ての人間がフォームに従って入力してくれるとは限りませんから。
192
(2): 無謀者 02/01/21 12:54 ID:??? AAS
>>188
ありがとうございます。試してみます。ってやってみたけどいまいち
うまくいかん・・スクリプトの意味もう一回良く見ながら考えてみます。
>>189-190
DBでMySQLとかでしょうか?
私が借りてる鯖(共用)は使えるようになってるみたいなんですが、
一般的にはどうなんでしょ?置く鯖が決まってればそれにあわせた
仕様で書けば良いんでしょうが、出来るだけ汎用性のあるものを
書きたいので・・・・もしDBが鯖依存でなくてPerlが使えれば
必ず使える、とかUNIX系の鯖ならほぼ大丈夫ってものなら
省1
193: 無謀者 02/01/21 13:00 ID:??? AAS

×DBでMySQLとかでしょうか?
○DBってMySQLとかでしょうか?
194: 名無しさん@お腹いっぱい。 [age] 02/01/21 13:02 ID:??? AAS
>192
いいところ突きまくり・・・
195: 190 [0] 02/01/21 13:14 ID:??? AAS
>192
最近は安い共用鯖でもMySQLとかPostgreSQLを使えるところが
増えてきているから、汎用的だって判断しても良いんじゃない?

漏れはDB使えない(使わない)って仕事を受ける時は、それだけで
料金5割増にしてる(w しかも最近はPHPとかJavaを使うことが
多いんで、「Perlで書いてね」なんて言われたら、さらに5割増(w
最低限DBが使える鯖に移転することを強く薦めている。

フリーでばらまくならPerlでファイル操作で構成しておく方が
汎用的と言えるだろうが、作るのが面倒だよなぁ。
漏れの場合は、過去に使ったクラスを使いまわして自分の中で
省3
196
(2): 無謀者 02/01/21 15:03 ID:??? AAS
えっと・・>>188を試しているんですが、これの意味って
$i = 0;#行数カウント用の初期設定
foreach (@line) {
($id,$hoge,$mona,$giko) = split(/\,/,$_);
if (削除キー eq $id) { splice(@line,$i,1); last; }#もし削除キー=$idだったら、@lineの$i個目(つまりファイルの$i行目)を空にする)
$i++;
}
って事で良いんですよね?
197: 名無しさん@お腹いっぱい。 02/01/21 15:35 ID:yxhIL91Y(1/2) AAS
>196
うん、その通り。
198: 名無しさん@お腹いっぱい。 02/01/21 15:35 ID:yxhIL91Y(2/2) AAS
>196
あ、ちがうよ。
空にするんじゃなくて、その行削除ね。
199
(1): 無謀者 02/01/21 16:25 ID:??? AAS
いろいろ試してみて近いところまで来てると思うのですが・・・
open(DEL,"$cart");
@dl=<DEL>;
close(DEL);
$i=0;
foreach $line(@dl){
@cell = split(/\t/, $line);
if ($cell[0] eq "$del") {
$line="";
}
省11
200: 名無しさん@お腹いっぱい。 02/01/21 16:30 ID:??? AAS
>199
なんでそんな苦労をしているんだろう・・・・
201
(1): ◆6KgJyjvE 02/01/21 16:49 ID:rYGhtF3P(1) AAS
open(IN,"$cart");
open(TMP,">${cart}.tmp");
while(<IN>){
my @cell = split/\t/;
if($cell[0] ne "$del"){
print TMP;
}
}
close IN;
close TMP;
省2
202
(1): 名無しさん@お腹いっぱい。 02/01/21 17:18 ID:??? AAS
んじゃもっと短くして・・・

open(IN,"$cart");
open(TMP,">${cart}.tmp");
print TMP grep { ! /^$del\t/ } <IN>
close IN;
close TMP;
rename(${cart}.tmp,$cart);

grep使うのは別におすすめしないけど、
判定のためだけにsplitする必要はないかと。
というか、素直にApache::Session使えばいいのにと思ったり。
203
(1): 無謀者 02/01/21 21:33 ID:??? AAS
>>201
最初、うまく行かなかったんですが、renameのところを変えたら
うまくいきました↓
open(IN,"$cart");
open(TMP,">$cart.tmp");
while(<IN>){
my @cell = split/\t/;
if($cell[0] ne "$del"){
print TMP;
}
省20
204: 02/01/22 00:28 ID:zQlW9qzl(1) AAS
もう解決ずみみたいだけど。

>で書き込もうと思ってるんですが、>>でやると元のリスト+
>(元のリストー削除した要素)が追加されちゃうし、
> でやるとなぜか、もとのリストが全て消えて、
> 削除すべき要素だけがファイルに書き込まれてしまいます。

>> で開くのは、追加書き込み。ファイルは安全。
> で開くと、ファイルサイズがゼロになる。ファイルのデータは失われる。

ファイルロックを併用で、ファイルから読んだあと同一ファイルに
書き戻したい場合は、読み+書き(+<)で開くのが一般的かな。

該当ファイルが存在しない場合は、ファイルを作ってはくれないが。
205
(1): 名無しさん@お腹いっぱい。 02/01/22 01:23 ID:4ftMAJcg(1) AAS
>>203
クッキーの上書きだァ?
それ位調べろってんだよヴォケ!
206: 名無しさん@お腹いっぱい。 02/01/22 11:42 ID:??? AAS
>>205
数少ない自分が知ってるネタが出て来てよかったね ボクちゃん
早く病院に戻りなさい
207
(1): 名無しさん@お腹いっぱい。 [ ] 02/01/22 16:17 ID:??? AAS
とりあえず今までのスクリプトどこかにUPしてみ
添削してくれるぞ、きっと
1-
あと 310 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.008s