私設SoS2オーナー応援BBS

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

スレッド

└◇1894:
【続】cardimg.pl内のサブルーチンについて [YOUME] 10/04 21:12

 └◇1895:Re:【続】cardimg.pl内のサブルーチンについて [moon] 10/05 07:04
  └◇1896:Re[2]:【続】cardimg.pl内のサブルーチンについて [YOUME] 10/29 09:24
   └◇1897:Re[3]:【続】cardimg.pl内のサブルーチンについて [moon] 10/29 19:20
    └◇1898:Re[4]:【続】cardimg.pl内のサブルーチンについて [YOUME] 10/29 21:30
     └◇1899:Re[5]:【続】cardimg.pl内のサブルーチンについて [moon] 10/30 06:29
      └◇1900:Re[6]:【続】cardimg.pl内のサブルーチンについて [YOUME] 10/30 11:00
       └◇1901:Re[7]:【続】cardimg.pl内のサブルーチンについて [moon] 10/30 20:39
        └◇1902:Re[8]:【続】cardimg.pl内のサブルーチンについて [YOUME] 10/30 21:31<-last


1894● 【続】cardimg.pl内のサブルーチンについて[ YOUME ] 2015 10/04 21:12
いつもご教授ありがとうございます!
また階層が深くなりすぎ制限で新規発言で失礼します…

チェックしてみたところ
---------------------
Software error:

Undefined subroutine &main::get_card_category called at Familiar.pl line 112.
For help, please send mail to the webmaster (admin@paperboy.co.jp), giving this error message and the time and date of the error.
---------------------
と出たのですが、翻訳してみても自分では原因が理解できず…

ただ、$categoryの定義をしていないことは明白で、更に$categoryの定義の仕方がいまいちよくわからず…
試しに以下のようにしたのですが、症状は変わらず…
---------------------
my $start = int($Fm{'start'});
my $category = int($Fm{'category'});

if(scalar(@fitems) > 5){
&form('start');
&input('hidden', 'mode', collection);
&input('hidden', 'category', $category);
&input('hidden', 'id', $id);
&input('hidden', 'ps', $ps);
print qq|<select name=start>\n|;
print qq|<option SELECTED value="0">1ページ\n|;
print qq|<option value="5">2ページ\n| if(scalar(@fitems) > 5);
print qq|<option value="10">3ページ\n| if(scalar(@fitems) > 10);
print qq|</select><input type="submit" value="みる">\n|;
&form('end');
}
---------------------
そして、どうするべきか分からず…
何度も聞きに来てしまい申し訳ないです…
コメントを書く(引用) | スレッド一覧


1895● Re:【続】cardimg.pl内のサブルーチンについて[ moon ] 2015 10/05 07:04
> また階層が深くなりすぎ制限で新規発言で失礼します…

階層が深くなった時は親記事に返信していただくと助かります。

> Undefined subroutine &main::get_card_category called at Familiar.pl line 112.

Familiar.plの112行目で呼び出しているget_card_categoryが未定義という意味です。
おそらくrequireがこの前に行われていない(後ろのほうにある)のだと思います。

> my $category = int($Fm{'category'});

カテゴリは数字なのでしょうか?
違うのでしたら数値化すると意図しない値になります。

> &input('hidden', 'category', $category);

カテゴリを指定するのはこの画面を呼び出す前だけなのでしょうか?
それでしたらこれで良いです。
コメントを書く(引用) | スレッド一覧


1896● Re[2]:【続】cardimg.pl内のサブルーチンについて[ YOUME ] 2015 10/29 09:24
バタバタしている間にトリックオアトリートの日が近づいて来てしまいました…汗

いろいろ考えてみたのですが、未だに上手くいかず…
現状だと
> 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"><table>|;
までしか表示されていない画面が出ている感じです…

> 階層が深くなった時は親記事に返信していただくと助かります。
申し訳ないです;了解しました!

> Familiar.plの112行目で呼び出しているget_card_categoryが未定義という意味です。
> おそらくrequireがこの前に行われていない(後ろのほうにある)のだと思います。

前に行っているはずなのですが、もしかして位置が悪いでしょうか?

> > my $category = int($Fm{'category'});
> カテゴリは数字なのでしょうか?
> 違うのでしたら数値化すると意図しない値になります。

理解せずに追記してました…ので削除しました!

現状、以下のような感じになっています。

# 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 '<b>〜', $Fm{'category'};
print qq|シリーズ〜</b>|;

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"><table>|;

require 'cardimg.pl'; # ループ中で毎回requireするのは無駄なので場所はforeach以前が良い

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

my $start = int($Fm{'start'});

if(scalar(@fitems) > 5){
&form('start');
&input('hidden', 'mode', collection);
&input('hidden', 'category', $category);
&input('hidden', 'id', $id);
&input('hidden', 'ps', $ps);
print qq|<select name=start>\n|;
print qq|<option SELECTED value="0">1ページ\n|;
print qq|<option value="5">2ページ\n| if(scalar(@fitems) > 5);
print qq|<option value="10">3ページ\n| if(scalar(@fitems) > 10);
print qq|</select><input type="submit" value="みる">\n|;
&form('end');
}

#ループ処理
if(@fitems){
    $start = $start < 0 ? 0 : $start > $#fitems ? $#fitems : $start; # 開始位置を調整
    $end = $start + 4; # 終了位置、1ページ最大5件の場合
    $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>カテゴリ1</font>";}
if ($sts =~ /C1/) {$cde1 = "<font color=blue>カテゴリ2</font>";}
if ($sts =~ /C2/) {$cde1 = "<font color=#FF8C00>カテゴリ3</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|;
#カード画像表示
}
}


> > &input('hidden', 'category', $category);
> カテゴリを指定するのはこの画面を呼び出す前だけなのでしょうか?

そうなります!


たくさん教えて頂いているのに未だに完成できず申し訳ないです…

変なとこがあったら教えて頂きたいです…!!
コメントを書く(引用) | スレッド一覧


1897● Re[3]:【続】cardimg.pl内のサブルーチンについて[ moon ] 2015 10/29 19:20
前回の書き込みにあったエラーはまだ出ているのでしょうか?
もし、出ているようでしたらrequireは問題ないようなのでcardimg.plの内容にミスがあるのだと考えられます。
特にサブルーチン名が「get_card_category」となっていることを確認してください。

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

上記の「ここ」の行があると正常に動作しません。
コメントを書く(引用) | スレッド一覧


1898● Re[4]:【続】cardimg.pl内のサブルーチンについて[ YOUME ] 2015 10/29 21:30
こんばんわ!いつも相談にのっていただけて本当に感謝です…涙

> 前回の書き込みにあったエラーはまだ出ているのでしょうか?
> もし、出ているようでしたらrequireは問題ないようなのでcardimg.plの内容にミスがあるのだと考えられます。
> 特にサブルーチン名が「get_card_category」となっていることを確認してください。

現状、以下のようになっています!

# get_card_category #
get_card_category{
my $name = shift;
my $category_name = exists($card_name_hash{$name}) && exists($card_name_hash{$name}->{'category'}) ? $card_name_hash{$name}->{'category'} : 'なし';
return $category_name;
}

ちなみに
# Sub image_dir #
my $image_dir = 'cardimg/'; # 画像ディレクトリ
my %card_name_hash = (・・・

この辺はこのままで良いんで…すよね。
確か、前にmy %card_name_hashのmyを消すとサブルーチン作らなくても表示できるみたいな感じだったので、myは戻してあったりします。もしかしてダメだったり…!?


> > #カテゴリ
> >     @fitems = grep {
> >     ($item,$sts) = split(/△/, $_);# カード名とステータスに分割
> >     &get_card_category($item) eq $Fm{'category'};
> > $Fm{'category'}; #### ←ここ ####
> >     } @fitems;
> > #カテゴリ
> 上記の「ここ」の行があると正常に動作しません。

ギャー!申し訳ないです…
掲示板にコピペするときに、コメントアウトしておいた部分を削除したつもりが、消し忘れてしまったのが残っていたようです;;;(本体の方はコメントアウト済です)
コメントを書く(引用) | スレッド一覧


1899● Re[5]:【続】cardimg.pl内のサブルーチンについて[ moon ] 2015 10/30 06:29
> # get_card_category #
> get_card_category{

「sub」が抜けています。

> この辺はこのままで良いんで…すよね。
> 確か、前にmy %card_name_hashのmyを消すとサブルーチン作らなくても表示できるみたいな感じだったので、myは戻してあったりします。もしかしてダメだったり…!?

myありで大丈夫です。
コメントを書く(引用) | スレッド一覧


1900● Re[6]:【続】cardimg.pl内のサブルーチンについて[ YOUME ] 2015 10/30 11:00
> > # get_card_category #
> > get_card_category{
>
> 「sub」が抜けています。

ギャー!!!!!!(土下座)
ありがとうございます…!
そしてスミマセン、気づけなくて…涙

ついにカード画像がきちんとでるようになったのですが、ページ切り替えをすると、カテゴリが認識されていないようでカード情報も画像も出ず…

もしかしてまた自分がいろいろ思い違いをしているのかなと不安になり…

前にご指摘いただいた
> > &input('hidden', 'category', $category);
> カテゴリを指定するのはこの画面を呼び出す前だけなのでしょうか?
の件で、呼び出す前までだと勝手に思っていたのでsが、

もしカテゴリ指定するのが呼出す前までではなかった場合は、どのような処置を行うべきなのでしょうか?
コメントを書く(引用) | スレッド一覧


1901● Re[7]:【続】cardimg.pl内のサブルーチンについて[ moon ] 2015 10/30 20:39
> ついにカード画像がきちんとでるようになったのですが、ページ切り替えをすると、カテゴリが認識されていないようでカード情報も画像も出ず…
>
> もしかしてまた自分がいろいろ思い違いをしているのかなと不安になり…
>
> 前にご指摘いただいた
> > > &input('hidden', 'category', $category);
> > カテゴリを指定するのはこの画面を呼び出す前だけなのでしょうか?
> の件で、呼び出す前までだと勝手に思っていたのでsが、

上の処理はこの画面を呼び出す前に指定したcategoryを引き継ぐためのものですので、categoryを選択している箇所があるのでしたら「呼び出す前」であっていると思います。
処理としてはここが原因であり、$categoryは未設定なのでhiddenの値としては$Fm{'category'}を使用してください。

ついでに、1つ上の「&input('hidden', 'mode', collection);」のcollectionはクォーテーション等で囲んだほうが良いかと思います。
コメントを書く(引用) | スレッド一覧


1902● Re[8]:【続】cardimg.pl内のサブルーチンについて[ YOUME ] 2015 10/30 21:31
こんばんわ!

> 処理としてはここが原因であり、$categoryは未設定なのでhiddenの値としては$Fm{'category'}を使用してください。
>
> ついでに、1つ上の「&input('hidden', 'mode', collection);」のcollectionはクォーテーション等で囲んだほうが良いかと思います。

ご教授ありがとうございます!
早速修正しました!

そして、つ、ついに稼働するようになりました〜〜〜(涙

本当にありがとうございます!!感謝…!
コメントを書く(引用) | スレッド一覧

CGIROOM