• 締切済み

カテゴリ登録で関連させる方法

カテゴリ→サブカテゴリ→サブサブカテゴリを関連させる登録スクリプトでサブカテゴリとサブサブカテゴリが関連させる方法を教えてください。 読み込みtxtファイル↓ $ITEMCATE = 'カテゴリ1*カテゴリ2*カテゴリ3'; $ITEMCATE2 = 'サブカテゴリ1%サブカテゴリ2*サブカテゴリ3*'; $ITEMCATE3 = 'サブサブカテゴリ1%サブサブカテゴリ2*サブサブカテゴリ3'; *は階層を下にさげます。%は同階層内で表示です。 サブカテゴリ1の下位にサブサブカテゴリ1と2は関連するのですが、サブサブカテゴリ3はサブカテゴリ2ではなくサブカテゴリ3の関連になります。 サブカテゴリを登録するスクリプト↓(正常) @ITEMCATE = split(/\*/,$ITEMCATE); $count =0; while(@ITEMCATE[$count]) { $count++; } $MAX = $count-1; @ITEMCATE2 = split(/\*/,$ITEMCATE2); @ITEMCATE2[$in{'NO'}] = $in{'SUBCATE'}; $ITEMCATE2 = @ITEMCATE2[0]; $count = 1; while($count <= $MAX) { $ITEMCATE2 .= "\*@ITEMCATE2[$count]"; $count++; } サブサブカテゴリを登録するスクリプト↓(うまくいきません) @ITEMCATE = split(/\*/,$ITEMCATE); $count =0; while(@ITEMCATE[$count]) { $count++; } $MAX = $count-1; @ITEMCATE2 = split(/\*/,$ITEMCATE2); @ITEMCATE2[$in{'NO'}] = $in{'SUBCATE'}; $ITEMCATE2 = @ITEM2[0]; $count = 1; while($count <= $MAX) { $ITEMCATE2 .= "\*@ITEMCATE2[$count]"; $count++; } $MAX = $count-1; @ITEMCATE3 = split(/\*/,$ITEMCATE3); @ITEMCATE3[$in{'NO'}] = $in{'SUBSUBCATE'}; $ITEMCATE3 = @ITEMCATE3[0]; $count = 1; while($count <= $MAX) { $ITEMCATE3 .= "\*@ITEMCATE3[$count]"; $count++; } ご教授おねがいたします。

みんなの回答

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

例えば、 #カテゴリデータ $cate1_id ='1,2,3'; #サブカテゴリデータ($cate2_ + カテゴリID) $cate2_1 = '4,5,6'; $cate2_2 = '7,8,9'; $cate2_3 = '10,11,12'; #サブサブカテゴリデータ($cate3_ + カテゴリID) $cate3_4 = '13,14,15'; $cate3_5 = '16,17,18'; $cate3_6 = '19,20,21'; ・・・ とやる方法や、 #カテゴリデータ (自分のID,上位のカテゴリ(0は上位なし),カテゴリ名) @cate =( '1,0,カテゴリ1' ,'2,0,カテゴリ2' ,'3,0,カテゴリ3' ,'4,1,サブカテゴリ1' ,'5,2,サブカテゴリ2' ,'6,3,サブカテゴリ3' ,'7,4,サブサブカテゴリ1' ,'8,5,サブサブカテゴリ2' ,'9,6,サブサブカテゴリ3' ); として、 sub cate { foreach $cate (@cate) { if ($_[0] == $cate[0]) { if ($cate[1]) { &cate($cate[1]); } print $cate[2]; } } &cate([カテゴリID]); とするとか。 参考スクリプトは適当に作ったので動かないかもしれません

x01ht
質問者

補足

ご回答ありがとうございます。私のソース記載部分が間違っていました。例えば、下記のtxtファイル内容で $ITEMCATE = 'カテゴリ1*カテゴリ2*カテゴリ3'; $ITEMCATE2 = 'サブカテゴリ1%サブカテゴリ2*サブカテゴリ3*'; $ITEMCATE3 = 'サブサブカテゴリ1%サブサブカテゴリ2*サブサブカテゴリ3'; サブカテゴリ1%サブカテゴリ2とサブサブカテゴリ1%サブサブカテゴリ2*サブサブカテゴリ3を関連させ表示させ登録フォームに表示させる為には下記ソースをどのように変更すればよいのでしょうか。 サブサブカテゴリ登録フォーム↓ sub SUBSUBFORM { @CATE = split(/\*/, $ITEMCATE); $count = 0; while(@CATE[$count]) { if(@CATE[$count] eq $in{'cate1'}) { $NO = $count; last; } $count++; } @SUBCATE = split(/\*/, $ITEMCATE2); $count = 0; while(@SUBCATE[$count]) { if(@SUBCATE[$count] eq $in{'cate2'}) { $NO = $count; last; } $count++; } @SUBSUBCATE = split(/\*/, $ITEMCATE3); $ITEM3CATEOP = ""; $count = 0; while($count < @ITEMCATE3) { $ITEM3CATEOP .= "<OPTION>@ITEMCATE3[$count]"; $count++; } print <<HTML; <FORM action="category.cgi" method="POST"> <INPUT type="hidden" name="mode" VALUE="1"> <TABLE cellspacing="1" bgcolor="#000000"> <TBODY> <TR> <TD bgcolor="#fffffc"> <B><FONT size="-1">【$in{'cate2'}】のサブサブカテゴリー</B></FONT> </TD> </TR> <TR> <TD bgcolor="#ffffff"> <TABLE><TBODY><TR><TD> <INPUT size="70" type="text" name="SUBSUBCATE" value="@SUBSUBCATE[$NO]"><FONT size="-1"><B>に変更</B></FONT> <INPUT type="hidden" name="cate2" value="$in{'cate2'}"> <INPUT type="hidden" name="NO" value="$NO"> </TD></TR> <TR><TD align="right"> <INPUT type="reset" value="リセット"><INPUT type="submit" value="実行"> </TD></TR></TBODY></TABLE> </TD></TR> </TBODY> </TABLE> </FORM> HTML } ご教授お願いいたします。

関連するQ&A