- ベストアンサー
while繰り返し処理で買い物かごカテゴリ階層表示作成
買い物かごのカテゴリ階層表示作成を下記のようにしたいのですが 例) ・カテゴリ1 ・サブカテゴリ1 ・サブサブカテゴリ1 ・サブサブカテゴリ2 ・サブカテゴリ2 ・サブカテゴリ3 ・カテゴリ2 while処理のメインカテゴリ生成内でwhile処理メインカテゴリサブカテゴリ生成内でwhile処理サブカテゴリ該当サブサブカテゴリ作成です。 現在、下記のような状態となっております。 ・カテゴリ1 ・サブカテゴリ1 ・サブサブカテゴリ1 ・サブサブカテゴリ2 ・サブカテゴリ1 ・サブカテゴリ2 ・サブカテゴリ1 ・サブカテゴリ2 ・サブカテゴリ3 ・カテゴリ2 該当サブカテゴリには3つ配列変数があります。 while処理でサブカテゴリ1内の該当サブサブカテゴリ1と2を 出力後、サブカテゴリ1がまた出力されます。サブカテゴリ1と2を 出力後、またサブカテゴリ1、2、3と出力します。 メインカテゴリは正常表示です。 1回のwhile処理に1個ずつ増やして出力しています。 出力する変数の場所を変えると、サブカテゴリは正常表示になり 今度はサブサブカテゴリが表示されなくなります。 サブカテゴリのwhile処理の計算方法がちがうのでしょうか? ご教授お願いいたします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
補足ありがとうございます。#5のソースを2箇所修正します。 1つ目は、私が追加した部分なんですが、計算式が間違っていました。失礼しました。 2つ目は、$ITEMOPTION2 と $ITEMOPTION3 を $ITEMCATE_SELECT に追加する部分ですが、IF文の中に有り、サブサブカテゴリが無い場合に通過しません。この時追加すべき $ITEMOPTION2 が追加されません。この代入をIF文の外に出す必要があります。 #5のソースの8行目 >$count2_offset[$i+1] = @temp2; $count2_offset[$i+1] = $count2_offset[$i] + @temp2; #5のソースの58行目~61行目 >$ITEMCATE_SELECT = "$ITEMCATE_SELECT$ITEMOPTION2$ITEMOPTION3"; >} > >$count2++; } $ITEMCATE_SELECT = "$ITEMCATE_SELECT$ITEMOPTION2$ITEMOPTION3"; $count2++; 以上です。 補足していただいた入力データで簡単にチェックしましたが、正常に動いていると思います。ご確認ください。
その他の回答 (7)
- karumakaruma
- ベストアンサー率65% (65/100)
#2です。 軽く巻き戻ります。 こんな感じにすればシンプルに書けると思いますが・・・ 空のカテゴリの場合、"サブカテゴリ2**サブカテゴリ3"という様に 空であるという事が判れば、空判定で 対応可能だと思います。 --------------------------------------------------------- $ITEMCATE = 'カテゴリ1*カテゴリ2'; $ITEMCATE2 = 'サブカテゴリ1%サブカテゴリ2*サブカテゴリ3'; $ITEMCATE3 = 'サブサブカテゴリ1%サブサブカテゴリ2*サブサブカテゴリ3*サブサブカテゴリ4'; @ITEMCATE = split(/\*/,$ITEMCATE); @ITEMCATE2 = split(/\*/,$ITEMCATE2); @ITEMCATE3 = split(/\*/,$ITEMCATE3); for $cate_a (@ITEMCATE){ @cate = split(/\%/,$cate_a); for $cate_b ( @cate ){ if( $cate_b eq "" ){ next; } print $cate_b . "\n"; $cate2_a = shift(@ITEMCATE2); @cate2 = split(/\%/,$cate2_a); for $cate2_b ( @cate2 ){ if( $cate2_b eq "" ){ next; } print " " . $cate2_b . "\n"; $cate3_a = shift(@ITEMCATE3); @cate3 = split(/\%/, $cate3_a); for $cate3_b (@cate3){ if( $cate3_b eq "" ){ next; } print " " . $cate3_b . "\n"; } } } } ----------------------------------------------------------- 思いっきり巻き戻ります。 元々、カテゴリ、サブカテゴリ、サブサブカテゴリに 親子関係を持っていないので、表示する際に複雑になっています。 簡単な方法としては、表示階層をそのままデータとして持たせる方法とか 親子関係でデータを持たせて表示の時に上手く表示させる方法などがあります。 表示をそのまま持たせる方法 -------------------------- $ITEMCATE[0]="カテゴリ1,,"; $ITEMCATE[1]=",サブカテゴリ1,"; $ITEMCATE[2]=",,サブサブカテゴリ1"; $ITEMCATE[3]=",,サブサブカテゴリ2"; $ITEMCATE[4]=",サブカテゴリ2,"; $ITEMCATE[5]=",,サブサブカテゴリ3"; $ITEMCATE[6]="カテゴリ2,,"; $ITEMCATE[7]=",サブカテゴリ3,"; $ITEMCATE[8]=",,サブサブカテゴリ4"; カンマ区切りで表示のまま配列に保存 表示はそのままループで回して、空の所をインデントにする -------------------------- 親子関係を持たせてる方法(表示方法) -------------------------- $ITEMCATE[0] = "カテゴリ1,サブカテゴリ1,サブサブカテゴリ1"; $ITEMCATE[1] = "カテゴリ1,サブカテゴリ1,サブサブカテゴリ2"; $ITEMCATE[2] = "カテゴリ1,サブカテゴリ2,サブサブカテゴリ3"; $ITEMCATE[3] = "カテゴリ2,サブカテゴリ3,サブサブカテゴリ4"; %CATE_MASTER; #親子関係を連想配列に入れる(キーとして) for $cate (@ITEMCATE) { ($cate1, $cate2, $cate3) = split(/,/, $cate); $CATE_MASTER{$cate1}{$cate2}{$cate3} = 1; } foreach $cate1 ( keys(%CATE_MASTER) ){ print $cate1 . "\n"; foreach $cate2 ( keys(%{$CATE_MASTER{$cate1}}) ){ print " " . $cate2 . "\n"; foreach $cate3 ( keys(%{$CATE_MASTER{$cate1}{$cate2}}) ){ print " " . $cate3 . "\n"; } } } --------------------------
お礼
ご回答ありがとうございます。 なるほど、表示階層をそのまま持たせる方法もあるのですね。 参考にしてみます。
- venzou
- ベストアンサー率71% (311/435)
>$ITEMCATE = 'カテゴリ1*カテゴリ2'; >$ITEMCATE2 = 'サブカテゴリ1%サブカテゴリ2*サブカテゴリ3'; >$ITEMCATE3 = 'サブサブカテゴリ1%サブサブカテゴリ2*サブサブカテゴリ3*サブサブカテゴリ4'; このデータで検証した時には、おっしゃられている不具合は出ませんでした。$ITEMCATE3の内容の私の解釈が間違っているのかもしれません。サブサブカテゴリの内容が無い場合の事を考慮していませんでした。 不具合の結果のみ書かれても検証できませんので、その時の入力データを補足してください。 $ITEMCATE; $ITEMCATE2; $ITEMCATE3;
お礼
ご回答いただきありがとうございます。 サブサブカテゴリ登録時の*の自動表示は別のカテゴリ登録スクリプトの 問題ですので、今回の処理と別件です。すみません。後で見直してみます。 サブサブカテゴリに登録し、保存されているtxtファイルの $ITEMCATE3 =;に直接*を入力した場合に#6の補足内容になります。 何卒、宜しくお願いいたします。
補足
ご回答ありがとうございます。ご連絡が遅くなり大変申し訳ありません。 不具合の結果時点のデータ入力になります。 $ITEMCATE = 'カテゴリ1*カテゴリ2'; $ITEMCATE2 = 'サブカテゴリ1%サブカテゴリ2%サブカテゴリ3*サブカテゴリ4%サブカテゴリ5%サブカテゴリ6'; $ITEMCATE3 = 'サブサブカテゴリ1%サブサブカテゴリ2*サブサブカテゴリ3%サブサブカテゴリ4'; 上記で実行した場合下記のように表示したいのですが ・カテゴリ1 ・サブカテゴリ1 ・サブサブカテゴリ1 ・サブサブカテゴリ2 ・サブカテゴリ2 ・サブサブカテゴリ3 ・サブサブカテゴリ4 ・サブカテゴリ3 ・カテゴリ2 ・サブカテゴリ4 ・サブカテゴリ5 ・サブカテゴリ6 現在のところ、サブサブカテゴリを*で区切ると 次のサブカテゴリ2の下ではなくカテゴリ2該当のサブサブカテゴリ4に 表示されます。 また下記のように登録した場合 $ITEMCATE = 'カテゴリ1*カテゴリ2*カテゴリ3*カテゴリ4'; $ITEMCATE2 = 'サブカテゴリ1%サブカテゴリ2%サブカテゴリ3*サブカテゴリ4%サブカテゴリ5%サブカテゴリ6**'; $ITEMCATE3 = 'サブサブカテゴリ1%サブサブカテゴリ2*サブサブカテゴリ3%サブサブカテゴリ4'; サブカテゴリの該当はカテゴリ1と2までしかないのでサブカテゴリ6の 後には*が入ります。 また、サブカテゴリを下記のように登録した場合(サブカテゴリ3の後に**) $ITEMCATE2 = 'サブカテゴリ1%サブカテゴリ2%サブカテゴリ3**サブカテゴリ4%サブカテゴリ5%サブカテゴリ6'; カテゴリ2には該当サブカテゴリ登録なしになり サブカテゴリ4、5、6はカテゴリ3の該当になります。 ここまでは正常なのですが、 サブサブカテゴリを下記のようにすると $ITEMCATE3 = 'サブサブカテゴリ1*サブサブカテゴリ2*サブサブカテゴリ3%サブサブカテゴリ4'; サブサブカテゴリ2の該当がサブカテゴリ2ではなくカテゴリ2該当の サブカテゴリに下に表示されます。またサブカテゴリの数が サブサブカテゴリよりも多いときはサブサブカテゴリ登録データ内に 自動で*が表示されません。 いろいろ試したのですが サブサブカテゴリwhlie処理内の比較演算子で[$count3]を[$count2]に 変更したら if($ITEMCATE3[$count2] ne "" and $in{'itemcate3'} eq $ITEMCATE3[$count3]) elsif($ITEMCATE3[$count2] ne "" and $in{'itemcate3'} ne $ITEMCATE3[$count3]) 表示結果は下記のようになりました。 ・カテゴリ1 ・サブカテゴリ1 ・サブサブカテゴリ1 ・サブサブカテゴリ2 ・サブカテゴリ2 ・サブカテゴリ3 サブカテゴリ2の下に繰り返し表示されていたサブサブカテゴリ1が なくなりました。 しかし、サブカテゴリ2該当されるサブサブカテゴリ3と4は カテゴリ2のサブカテゴリ4の下に表示されサブカテゴリ6は 登録しているのに表示されません。 何卒、ご教授お願いいたします。
- venzou
- ベストアンサー率71% (311/435)
#1、4です。追加補足ありがとうございます。問題点をいくつか発見しました。 >$ITEMOPTION2 = ""; この初期化がループの外にありましたが、中に入れる必要があります。 サブカテゴリが必要以上に繰り返されたのはこの為です。 >@ITEMCATE3 = split(/\%/, @ITEMCATE3[$count]); ここですが、$countではダメですね。サブカテゴリが先頭から幾つ目に当たるのか計算して入れる必要があります。 また、@ITEMCATE3 の内容が書き換えられてしまうので、2回目以降のループでおかしくなります。 以下、発見した問題を修正したソースです、これで試してみてください。 sub form { #サブカテゴリが先頭から幾つ目に当たるのか計算するための前処理 @temp = split(/\*/, $ITEMCATE2); $count2_offset[0] = 0; for($i = 0;$i < @temp; $i++){ @temp2 = split(/\%/, $temp[$i]); $count2_offset[$i+1] = @temp2; } $count = 0; while($count < @ITEMCATE) { if("$ITEMCATE[$count]" ne "" and $in{'itemcate'} eq "$ITEMCATE[$count]") { $ITEMCATE_SEARCH = "$ITEMCATE_SEARCH<OPTION selected>$ITEMCATE[$count]"; if($in{'mod'} eq '' or $in{'mod'} eq 'kyefind') { $ITEMCATE_SELECT = "$ITEMCATE_SELECT<BR><FONT size=-1><B><<</FONT> <A href=\"./goods.cgi?itemcate=$ITEMCATE[$count]&reverse=$in{'reverse'}\"><FONT size=-1>$ITEMCATE[$count]</B></FONT></A><BR>\ \ <FONT size=-1>・</FONT><A href=\"./goods.cgi?itemcate=$ITEMCATE[$count]&mod=newfind&reverse=$in{'reverse'}\"><FONT size=-1>新着</FONT></A>"; } else { $ITEMCATE_SELECT = "$ITEMCATE_SELECT<BR><FONT size=-1>・</FONT> <A href=\"./goods.cgi?itemcate=$ITEMCATE[$count]&reverse=$in{'reverse'}\"><FONT size=-1>$ITEMCATE[$count]</FONT></A><BR>\ \ <A href=\"./goods.cgi?itemcate=$ITEMCATE[$count]&mod=newfind&reverse=$in{'reverse'}\"><FONT size=-1><B><<新着</B></FONT></A>"; } @ITEMCATE2 = split(/\%/, $ITEMCATE2[$count]); if($ITEMCATE2[0] ne "") { $count2 = 0; while($count2 < @ITEMCATE2) { $ITEMOPTION2 = ""; #ここで初期化が必要 if($ITEMCATE2[$count2] ne "" and $in{'itemcate2'} eq $ITEMCATE2[$count2]) { $ITEMOPTION2 = "$ITEMOPTION2<BR>\ \ <A href=\"./goods.cgi?itemcate=$ITEMCATE[$count]&itemcate2=$ITEMCATE2[$count2]&reverse=$in{'reverse'}\"><FONT size=-1><B><<$ITEMCATE2[$count2]</B></FONT></A>"; } elsif($ITEMCATE2[$count2] ne "" and $in{'itemcate2'} ne $ITEMCATE2[$count2]) { $ITEMOPTION2 = "$ITEMOPTION2<BR>\ \ <A href=\"./goods.cgi?itemcate=$ITEMCATE[$count]&itemcate2=$ITEMCATE2[$count2]&reverse=$in{'reverse'}\"><FONT size=-1>・$ITEMCATE2[$count2]</FONT></A>"; } $ITEMOPTION3 = ""; @ITEMCATE3 = split(/\*/, $ITEMCATE3); #初期化が必要 @ITEMCATE3 = split(/\%/, $ITEMCATE3[$count2_offset[$count]+$count2]); #$countではダメ if($ITEMCATE3[0] ne "") { $count3= 0; while($count3 < @ITEMCATE3) { if($ITEMCATE3[$count3] ne "" and $in{'itemcate3'} eq $ITEMCATE3[$count3]) { $ITEMOPTION3 = "$ITEMOPTION3<BR>\ \ \ <A href=\"./goods.cgi?itemcate=$ITEMCATE[$count]&itemcate2=$ITEMCATE2[$count2]&itemcate3=$ITEMCATE3[$count3]&reverse=$in{'reverse'}\"><FONT size=-1><B><<$ITEMCATE3[$count3]</B></FONT></A>"; } elsif($ITEMCATE3[$count3] ne "" and $in{'itemcate3'} ne $ITEMCATE3[$count3]) { $ITEMOPTION3 = "$ITEMOPTION3<BR>\ \ \ <A href=\"./goods.cgi?itemcate=$ITEMCATE[$count]&itemcate2=$ITEMCATE2[$count2]&itemcate3=$ITEMCATE3[$count3]&reverse=$in{'reverse'}\"><FONT size=-1>・$ITEMCATE3[$count3]</FONT></A>"; } $count3++; } $ITEMCATE_SELECT = "$ITEMCATE_SELECT$ITEMOPTION2$ITEMOPTION3"; } $count2++; } } } if("$ITEMCATE[$count]" ne "" and $in{'itemcate'} ne "$ITEMCATE[$count]") { $ITEMCATE_SEARCH = "$ITEMCATE_SEARCH<OPTION>$ITEMCATE[$count]"; $ITEMCATE_SELECT = "$ITEMCATE_SELECT<BR><FONT size=-1>・</FONT> <A href=\"./goods.cgi?itemcate=$ITEMCATE[$count]&reverse=$in{'reverse'}\"><FONT size=-1>$ITEMCATE[$count]</FONT></A>"; } $count++; } }
お礼
ご回答ありがとうございます。 実行結果ですが下記のようになりました。 ・カテゴリ1 ・サブカテゴリ1 ・3 ・カテゴリ2 サブサブカテゴリが3の要素の数が表示されました。 3以降の表示はカテゴリ2の表示になりました。 >$ITEMOPTION2 = ""; 上記をループ内に入れるとサブカテゴリの表示の繰り返しは 消えましたが、今度はサブサブカテゴリが繰り替えされ カテゴリ2以降のサブカテゴリの最後が表示されなくなりました。 $ITEMOPTION2 = "";だけをループ内に入れた実行結果例) ・カテゴリ1 ・サブカテゴリ1 ・サブサブカテゴリ1 ・サブサブカテゴリ2 ・サブカテゴリ2 ・サブサブカテゴリ1 #ここには該当するサブサブカテゴリを登録していませんが、サブサブカテゴリ1が表示されます。 ・サブカテゴリ3 ・サブサブカテゴリ1 #同様 ・カテゴリ2 ・サブカテゴリ4 ・サブサブカテゴリ3 ・サブサブカテゴリ4 ・サブカテゴリ5 ・サブサブカテゴリ4 #ここでは該当するサブサブカテゴリを登録していませんが、今度はサブサブカテゴリ4(2番目)が表示されます。 ・サブカテゴリ6 #ここは登録していますが表示されませんでした。 大変恐れ入りますが、ご教授お願いいたします。
- venzou
- ベストアンサー率71% (311/435)
#1です、ソース拝見しました。 今回補足して頂いた中で、気になる点は・・・ >@ITEMCATE2 = split(/\%/, @ITEMCATE2[$count]); この部分で、最初に入っていた@ITEMCATE2の内容が無くなりますが、大丈夫ですか? >@ITEMCATE3 = split(/\%/, @ITEMCATE3[$count]); 同様に、最初に入っていた@ITEMCATE3の内容が無くなります。 >if(@ITEM3[0] ne "") @ITEM3[0] この変数はここでしか使われていません。 サブサブカテゴリの処理がかなり怪しい気がします。(^^; 部分的なソースなので、ハッキリとした事は分かりませんでした。 下記を補足頂ければ、もう少し詳しい回答が書けると思います。 >@ITEMCATE = split(/\*/, $ITEMCATE); #他のファイルから読込 >@ITEMCATE2 = split(/\*/, $ITEMCATE2); #他のファイルから読込 >@ITEMCATE3 = split(/\*/, $ITEMCATE3); #他のファイルから読込 の具体的な内容。 sub form を呼び出している部分のソース。 HTMLを出力している部分のソース。
補足
ご回答いただきありがとうございます。 >if(@ITEM3[0] ne "") @ITEMCATE3[0]の間違いです。すみません。 >@ITEMCATE = split(/\*/, $ITEMCATE); #他のファイルから読込 >@ITEMCATE2 = split(/\*/, $ITEMCATE2); #他のファイルから読込 >@ITEMCATE3 = split(/\*/, $ITEMCATE3); #他のファイルから読込 上記は別のカテゴリ登録cgiスクリプトで登録し読み込んでいます。 登録後、txtファイルに下記のように記載さます。 例) $ITEMCATE = 'カテゴリ1*カテゴリ2'; $ITEMCATE2 = 'サブカテゴリ1%サブカテゴリ2*サブカテゴリ3'; $ITEMCATE3 = 'サブサブカテゴリ1%サブサブカテゴリ2*サブサブカテゴリ3*サブサブカテゴリ4'; *は階層を下にさげます。%は同階層内で表示です。 sub form内の各カテゴリwhail処理に入る前に splitで配列しています。同階層内で表示する為に%でくぎっています。 >@ITEMCATE2 = split(/\%/, @ITEMCATE2[$count]); 上記例を出力した結果を下記のようにできればと思っています。 ・カテゴリ1 ・サブカテゴリ1 ・サブサブカテゴリ1 ・サブサブカテゴリ2 ・サブカテゴリ2 ・サブサブカテゴリ3 ・カテゴリ2 ・サブカテゴリ3 ・サブサブカテゴリ4 HTMLを出力している部分は下記です。 $ITEMCATE_SELECT 上記記載でカテゴリ階層が表示されるようになっています。 HTMLを出力後の最初の表示はカテゴリ1と2が表示されるだけなっています。カテゴリ1をクリックするとカテゴリ1に該当する下位サブカテゴリとサブサブカテゴリが表示されます。 カテゴリ2の部分をクリックするとカテゴリ1部分だけの表示になり カテゴリ2に該当する下位カテゴリが表示されるようになります。 サブサブカテゴリwhail処理後のスクリプトですが $ITEMCATE_SELECT = "$ITEMCATE_SELECT$ITEMOPTION2$ITEMOPTION3"; #$ITEMCATE_SELECTに各カテゴリ表示内容を代入 $count2++; # サブカテゴリwhile処理に1追加 } } } # 下記はクリックした該当カテゴリ以外を表示します。$ITEMCATE_SEARCHは検索用です。 if("@ITEMCATE[$count]" ne "" and $in{'itemcate'} ne "@ITEMCATE[$count]") { $ITEMCATE_SEARCH = "$ITEMCATE_SEARCH<OPTION>@ITEMCATE[$count]"; $ITEMCATE_SELECT = "$ITEMCATE_SELECT<BR><FONT size=-1>・</FONT> <A href=\"./goods.cgi?itemcate=@ITEMCATE[$count]&reverse=$in{'reverse'}\"><FONT size=-1>@ITEMCATE[$count]</FONT></A>"; } $count++; # カテゴリwhail処理に1追加 } } この後、HTML出力になります。 $ITEMCATE_SELECT 上記変数名でカテゴリ一覧が表示され該当カテゴリをクリックすると 下位カテゴリが表示されます。 大変、恐縮ですが、ご教授お願いいたします。
- Tacosan
- ベストアンサー率23% (3656/15482)
いろんなところが変. とりあえず, 配列とスカラーの違いは理解すること.
- karumakaruma
- ベストアンサー率65% (65/100)
まず、どの様な配列を用意されているかと 表示処理をどの様に書かれているかという事を 示していただけないと、回答のしようがないと思います。 まぁ、一番思い当たるのは それぞれのwhile内で同一の変数を使っているんじゃないかな という事ですかね。 それも結果を見ただけでは判断しかねるわけですが・・・
- venzou
- ベストアンサー率71% (311/435)
ソースがないと分かりません。 ソースを補足してください。
補足
ソースです。 @ITEMCATE = split(/\*/, $ITEMCATE); #他のファイルから読込 @ITEMCATE2 = split(/\*/, $ITEMCATE2); #他のファイルから読込 @ITEMCATE3 = split(/\*/, $ITEMCATE3); #他のファイルから読込 sub form { $count = 0; while($count < @ITEMCATE) { if("@ITEMCATE[$count]" ne "" and $in{'itemcate'} eq "@ITEMCATE[$count]") { $ITEMCATE_SEARCH = "$ITEMCATE_SEARCH<OPTION selected>@ITEMCATE[$count]"; if($in{'mod'} eq '' or $in{'mod'} eq 'kyefind') { $ITEMCATE_SELECT = "$ITEMCATE_SELECT<BR><FONT size=-1><B><<</FONT> <A href=\"./goods.cgi?itemcate=@ITEMCATE[$count]&reverse=$in{'reverse'}\"><FONT size=-1>@ITEMCATE[$count]</B></FONT></A><BR>\ \ <FONT size=-1>・</FONT><A href=\"./goods.cgi?itemcate=@ITEMCATE[$count]&mod=newfind&reverse=$in{'reverse'}\"><FONT size=-1>新着</FONT></A>"; } else { $ITEMCATE_SELECT = "$ITEMCATE_SELECT<BR><FONT size=-1>・</FONT> <A href=\"./goods.cgi?itemcate=@ITEMCATE[$count]&reverse=$in{'reverse'}\"><FONT size=-1>@ITEMCATE[$count]</FONT></A><BR>\ \ <A href=\"./goods.cgi?itemcate=@ITEMCATE[$count]&mod=newfind&reverse=$in{'reverse'}\"><FONT size=-1><B><<新着</B></FONT></A>"; } $ITEMOPTION2 = ""; @ITEMCATE2 = split(/\%/, @ITEMCATE2[$count]); if(@ITEMCATE2[0] ne "") { $count2 = 0; while($count2 < @ITEMCATE2) { if(@ITEMCATE2[$count2] ne "" and $in{'itemcate2'} eq @ITEMCATE2[$count2]) { $ITEMOPTION2 = "$ITEMOPTION2<BR>\ \ <A href=\"./goods.cgi?itemcate=@ITEMCATE[$count]&itemcate2=@ITEMCATE2[$count2]&reverse=$in{'reverse'}\"><FONT size=-1><B><<@ITEMCATE2[$count2]</B></FONT></A>"; } elsif(@ITEMCATE2[$count2] ne "" and $in{'itemcate2'} ne @ITEMCATE2[$count2]) { $ITEMOPTION2 = "$ITEMOPTION2<BR>\ \ <A href=\"./goods.cgi?itemcate=@ITEMCATE[$count]&itemcate2=@ITEMCATE2[$count2]&reverse=$in{'reverse'}\"><FONT size=-1>・@ITEMCATE2[$count2]</FONT></A>"; } $ITEMOPTION3 = ""; @ITEMCATE3 = split(/\%/, @ITEMCATE3[$count]); if(@ITEM3[0] ne "") { $count3= 0; while($count3 < @ITEMCATE3) { if(@ITEMCATE3[$count2] ne "" and $in{'itemcate3'} eq @ITEMCATE3[$count3]) { $ITEMOPTION3 = "$ITEMOPTION3<BR>\ \ \ <A href=\"./goods.cgi?itemcate=@ITEMCATE[$count]&itemcate2=@ITEMCATE2[$count2]&itemcate3=@ITEMCATE3[$count3]&reverse=$in{'reverse'}\"><FONT size=-1><B><<@ITEMCATE3[$count3]</B></FONT></A>"; } elsif(@ITEMCATE3[$count2] ne "" and $in{'itemcate3'} ne @ITEMCATE3[$count3]) { $ITEMOPTION3 = "$ITEMOPTION3<BR>\ \ \ <A href=\"./goods.cgi?itemcate=@ITEMCATE[$count]&itemcate2=@ITEMCATE2[$count2]&itemcate3=@ITEMCATE3[$count3]&reverse=$in{'reverse'}\"><FONT size=-1>・@ITEMCATE3[$count3]</FONT></A>"; } $count3++; } $ITEMCATE_SELECT = "$ITEMCATE_SELECT$ITEMOPTION2$ITEMOPTION3"; } $count2++; } } } if("@ITEMCATE[$count]" ne "" and $in{'itemcate'} ne "@ITEMCATE[$count]") { $ITEMCATE_SEARCH = "$ITEMCATE_SEARCH<OPTION>@ITEMCATE[$count]"; $ITEMCATE_SELECT = "$ITEMCATE_SELECT<BR><FONT size=-1>・</FONT> <A href=\"./goods.cgi?itemcate=@ITEMCATE[$count]&reverse=$in{'reverse'}\"><FONT size=-1>@ITEMCATE[$count]</FONT></A>"; } $count++; } } 何卒、よろしくお願いいたします。
お礼
venzou 様 ご多忙の中、ご回答いただきありがとうございます。 正常に動いております。 感謝の気持ちでいっぱいです。 心より感謝申し上げます。 venzou様のように、短時間でスクリプトを作成、修正、改造できる ように励みたいと思います。 お礼の投稿で質問をするのは大変恐縮ですが venzou様はperlやその他のプログラムをどのようにして 学ばれたのでしょうか。是非、知りたいです。 私は独学で書籍や他のスクリプトを改造しながらですが まだまだです。基礎的な事柄を再徹底して学んでいきたいと 思っております。 何卒、宜しくお願いいたします。