私設SoS2オーナー応援BBS

新規発言一覧最新記事過去一覧検索ダウンロードページHOME

スレッド

└◇1874:
Re[13]:カードコレクションでのページ切り替え [YOUME] 09/27 19:25

 └◇1875:Re[14]:カードコレクションでのページ切り替え [moon] 09/27 21:11<-last


1874● Re[13]:カードコレクションでのページ切り替え[ YOUME ] 2015 09/27 19:25
ご解説ありがとうございます!

早速、以下のようにしてみたのですが、これであっていますでしょうか…?
(Sub Collection内の全てになります)

# Sub Collection #
sub collection {
@rcdlines = &get_user("$Fm{'id'}");
@collines = &get_coll("$Fm{'id'}");
&header;
&splititem('F');

print qq|<center><b>+$nmのコレクション+</b><br>\n|;
print qq|<TABLE border="0" cellspacing="0" cellpadding="0"><TBODY><TR><TD valign="bottom"><FONT color="#897a76" size="1"><IMG src="img/F2_001.gif" width="9" height="9"></FONT></TD><TD valign="bottom"><FONT color="#897a76" size="1"><IMG src="img/F2_002.gif" width="130" height="9"><IMG src="img/e-icon_004.gif" width="16" height="16"><IMG src="img/F2_002.gif" width="130" height="9"></FONT></TD><TD valign="bottom"><FONT color="#897a76" size="1"><IMG src="img/F2_003.gif" width="9" height="9"></FONT></TD></TR><TR><TD background="img/F2_008.gif" align="middle"><FONT size="1"><IMG src="img/kuroko.gif" width="3" height="3"></FONT></TD><TD bgcolor="#cac4b0" width="276">|;
print qq|<table>|;
require 'cardimg.pl'; # ループ中で毎回requireするのは無駄なので場所はforeach以前が良い

#カテゴリ
    @fitems = grep {
    ($item,$sts) = split(/△/, $_);# カード名とステータスに分割
    $card_name_hash{$item}->{'category'} eq $Fm{'category'};
    } @fitems;
#カテゴリ

#ループ処理
if(@fitems){
    $start = $start < 0 ? 0 : $start > $#fitems ? $#fitems : $start; # 開始位置を調整
    $end = $start + 3; # 終了位置、1ページ最大20件の場合
    $end = $end > $#fitems ? $#fitems : $end; # 終了位置を調整

    foreach $items (@fitems[$start .. $end]){ # $startから$endの範囲をループさせる
#ループ処理

($item,$sts) = split(/△/,$items);
$idd = int(substr($sts,11,3));
$pc = int(substr($sts,0,8));
if ($sts =~ /C0/) {$cde1 = "<font color=red>火</font>";}
if ($sts =~ /C1/) {$cde1 = "<font color=blue>水</font>";}
if ($sts =~ /C2/) {$cde1 = "<font color=yellow>雷</font>";}
if ($sts =~ /C3/) {$cde1 = "<font color=blown>土</font>";}
if ($sts =~ /C4/) {$cde1 = "<font color=green>風</font>";}
if ($sts =~ /C5/) {$cde1 = "<font color=gray>天</font>";}
if ($sts =~ /C6/) {$cde1 = "<font color=#8C008C>冥</font>";}
if ($sts =~ /C7/) {$cde1 = "<font color=powderblue>空</font>";}
#カード画像表示
print qq|<tr><td><img src="|, &get_card_image_path($item), qq|"><br><b>【$cde1】$item</b>\n|;
print qq|<IMG src=story/img/lin.gif border=0></td></tr>\n|;
#カード画像表示
}
}
print qq|<TR><TD>集めた数:<b>$fco</b>種</TD></TR>|;
print qq|</table>|;
print qq|</TD><TD background="img/F2_004.gif" align="middle"><FONT size="1"><IMG src="img/kuroko.gif" width="3" height="3"></FONT></TD></TR><TR><TD><FONT color="#897a76" size="1"><IMG src="img/F2_007.gif" width="9" height="9"></FONT></TD><TD><FONT color="#897a76" size="1"><IMG src="img/F2_006.gif" width="276" height="9"></FONT></TD><TD><FONT color="#897a76" size="1"><IMG src="img/F2_005.gif" width="9" height="9"></FONT></TD></TR></TBODY></TABLE></center>\n|;
}

ただこれだと、どのカテゴリを選択しても、カードが1枚も表示されず…
他にも何か追記等々しなくてはいけないのかなと思いつつも解決策が分からず…

何度も聞きにきてしまって申し訳ないです…
コメントを書く(引用) | スレッド一覧


1875● Re[14]:カードコレクションでのページ切り替え[ moon ] 2015 09/27 21:11
コードをすべて見たわけではありませんが、

> 早速、以下のようにしてみたのですが、これであっていますでしょうか…?

前回返信した内容については意図通りに修正されていると思います。

> ただこれだと、どのカテゴリを選択しても、カードが1枚も表示されず…

どこが原因なのかはprintで変数の値を出力するなどしてデバッグしてください。
例えば、「@fitems = grep 〜;」の上下で「print 'fitems=', scalar(@fitems);」を実行。
  → grep前が0件なら、ファイル上で0件もしくは&splititem('F');が間違っている可能性がある。
    → ファイルとsub splititemを確認。
  → grep前が1件以上でgrep後が0件なら、%card_name_hashの定義が間違っているか$Fm{'category'}が正しく渡されてきていない可能性がある。
    → 「print 'category=', $Fm{'category'};」を実行。
      → 意図した値なら、$Fm{'category'}は正しく渡ってきているということなので%card_name_hashの定義を確認。
      → 意図しない値なら、select要素として出力させている部分のHTMLを確認。
このようにして、変数の値がどこでどのように変化していくのかを把握しておいたほうが良いです。

あと、$startに初期値が設定されていないのでページ選択ができないですね。
ページ選択する場合はNo.1868と1869で返信した内容を参考にしてください。
コメントを書く(引用) | スレッド一覧

CGIROOM