私設SoS2オーナー応援BBS

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

スレッド

└◇1884:
Re[5]:【続】カードコレクションのカテゴリわけとページ切り替え [moon] 09/30 21:18

 └◇1885:Re[6]:【続】カードコレクションのカテゴリわけとページ切り替え [YOUME] 10/01 11:53
  └◇1886:Re[7]:【続】カードコレクションのカテゴリわけとページ切り替え [moon] 10/01 19:03
   └◇1887:Re[8]:【続】カードコレクションのカテゴリわけとページ切り替え [YOUME] 10/02 14:59
    └◇1888:Re[9]:【続】カードコレクションのカテゴリわけとページ切り替え [moon] 10/03 10:34
     └◇1889:Re[10]:【続】カードコレクションのカテゴリわけとページ切り替え [YOUME] 10/03 19:32
      └◇1890:Re[11]:【続】カードコレクションのカテゴリわけとページ切り替え [moon] 10/03 21:24
       └◇1891:Re[12]:【続】カードコレクションのカテゴリわけとページ切り替え [YOUME] 10/04 10:32
        └◇1892:Re[13]:【続】カードコレクションのカテゴリわけとページ切り替え [moon] 10/04 14:13
         └◇1893:Re[14]:【続】カードコレクションのカテゴリわけとページ切り替え [moon] 10/04 20:35<-last


1884● Re[5]:【続】カードコレクションのカテゴリわけとページ切り替え[ moon ] 2015 09/30 21:18
> やってみようと思い、下記のようにしてみたのですが、これだと表示がされず…

> print qq|<FORM method="POST" action="$cgiurl">\n|;

他と同様に「&form('start');」を使い、閉じタグ出力も「&form('end');」を使うほうが良いです。

> print qq|<input type="hidden" name="collection" value="mode">\n|;
> print qq|<input type="hidden" name="category" value="$Fm{category}">\n|;
> print qq|<input type="hidden" name="id" value="$id">\n|;
> print qq|<input type="hidden" name="pass" value="$ps">\n|;

他と同様に「&input('hidden', 'mode', 'collection');」のようにしたほうが良いです。
モード用のnameとvalueが逆です。(名前がmode)
パスワード用の名前はpsです。

> print qq|<input type="hidden" name="start" value="$start">\n|;
> print qq|<select>\n|;
> print qq|<OPTION SELECTED>ページ切り替え\n|;
> print qq|<option value="1">1\n|;
> print qq|<option value="5">2\n|;
> print qq|<option value="10">3\n|;
> print qq|</select><input type="submit" value="みる"></FORM>\n|;

startの値をhiddenで指定すると選択できなくなります。(同様にcategoryも固定値になっています。)
代わりに、select要素のname属性をstartにしてください。

> (サブルーチンも、実は今まで一度も作ったことがないということもあり…sub get_card_image_pathをベースにどうすればいいのか分からず……ひとまずmyを抜く方法で様子見を…汗)

今回の件に限らず、共通化できる処理はサブルーチン化することをお勧めします。
現状では1か所でしか使用していないので共通化というメリットはないですが、サブルーチン化すると後で見た時に何をやっているのかが少しはイメージしやすくなると思います。
処理内容としては、カード名を受け取って画像ファイルを返していたのを、カテゴリ名を返すように変更します。(○○○、△△△、□□□、×××の部分を変更するだけ。)
sub ○○○{
  my $name = shift;
  my $△△△ = exists($card_name_hash{$name}) && exists($card_name_hash{$name}->{'□□□'}) ? $card_name_hash{$name}->{'□□□'} : '×××';
  return $△△△;
}
コメントを書く(引用) | スレッド一覧


1885● Re[6]:【続】カードコレクションのカテゴリわけとページ切り替え[ YOUME ] 2015 10/01 11:53
おはようございます!教えて頂き感謝です!

早速以下のように修正してみたのですが

&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="1">1\n|;
print qq|<option value="5">2\n|;
print qq|<option value="10">3\n|;
print qq|</select>\n|;
&OKbuttoninform;
&form('end');

ページ切り替えを行うと「ID $idは存在しません」と出てしまって…私の理解が間違っていると思いつつ、何処がいけないのか分からず…



そしてサブルーチンの方も

sub get_card_category_path{
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;
}

として、
%card_name_hash = もmy %card_name_hash = (
にして試したのですが、カードが表示されなくなり…
# Sub Collection #内の変更も必要になるのかなと思いつつ、どこを変更すれいいのか分からず…

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


1886● Re[7]:【続】カードコレクションのカテゴリわけとページ切り替え[ moon ] 2015 10/01 19:03
> &input('hidden', 'category', '$category');
> &input('hidden', 'id', '$id');
> &input('hidden', 'ps', '$ps');
略...
> ページ切り替えを行うと「ID $idは存在しません」と出てしまって…私の理解が間違っていると思いつつ、何処がいけないのか分からず…

メッセージ通りIDが「$id」となっています。
「'」で囲むと変数が展開されないので、囲まないか「"」で囲むなどで対処してください。
$id以外の変数も同様です。

> print qq|</select>\n|;
> &OKbuttoninform;
> &form('end');

修正が必要というわけではないですが、前回の返信でOKbuttoninformに触れなかったのはボタンの表示テキストが「みる」となっていたからです。

> sub get_card_category_path{

カテゴリ名を取得する処理なので「〜_path」というサブルーチン名は混乱のもとになるかと思います。

> # Sub Collection #内の変更も必要になるのかなと思いつつ、どこを変更すれいいのか分からず…

「$card_name_hash{カード名}->{'category'}」を置き換える必要があります。
コメントを書く(引用) | スレッド一覧


1887● Re[8]:【続】カードコレクションのカテゴリわけとページ切り替え[ YOUME ] 2015 10/02 14:59
ご教授ありがとうございます!!!
ついに…無事に…ページ切り替えができるようになりました!
本当に本当に感謝です!!!


ただサブルーチン分けの方だけがいまだに上手くいかず;

その後、以下のように修正して

# sub get_card_name #
sub get_card_name{
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;
}

> 「$card_name_hash{カード名}->{'category'}」を置き換える必要があります。

$card_name_hash{$item}->{'category'} eq $Fm{'category'};

$card_name_hash{$category_name}->{'category'} eq $Fm{'category'};
みたいにして試したりもしたのですが…

%card_name_hash = (

my %card_name_hash = (
にしてしまうと表示されず…

どうしたものか…と…すみません…
コメントを書く(引用) | スレッド一覧


1888● Re[9]:【続】カードコレクションのカテゴリわけとページ切り替え[ moon ] 2015 10/03 10:34
> sub get_card_name{

サブルーチン名は処理内容を表しているほうが良いと思います。
今回はカードのカテゴリ名を取得する処理なので、get_card_categoryやget_card_category_name等が適切だと思います。

> $card_name_hash{$item}->{'category'} eq $Fm{'category'};
> を
> $card_name_hash{$category_name}->{'category'} eq $Fm{'category'};
> みたいにして試したりもしたのですが…

これだとサブルーチンを使用していないです。
単純に「&get_card_name($item) eq $Fm{'category'};」とするだけです。
コメントを書く(引用) | スレッド一覧


1889● Re[10]:【続】カードコレクションのカテゴリわけとページ切り替え[ YOUME ] 2015 10/03 19:32
> > sub get_card_name{

get_card_categoryに修正して、

> > $card_name_hash{$item}->{'category'} eq $Fm{'category'};
> > を
> 単純に「&get_card_name($item) eq $Fm{'category'};」とするだけです。

&get_card_name($item) eq $Fm{'category'};としたのですが、myを入れた状態だとコレクションしたカードが表示されなくなってしまい…

他に調整するべき場所があったりしますでしょうか?
何度もお手数をおかけします…
コメントを書く(引用) | スレッド一覧


1890● Re[11]:【続】カードコレクションのカテゴリわけとページ切り替え[ moon ] 2015 10/03 21:24
> get_card_categoryに修正して、
略...
> &get_card_name($item) eq $Fm{'category'};としたのですが、myを入れた状態だとコレクションしたカードが表示されなくなってしまい…

サブルーチン名を変更したのでしたら呼び出し側も変更してください。
コメントを書く(引用) | スレッド一覧


1891● Re[12]:【続】カードコレクションのカテゴリわけとページ切り替え[ YOUME ] 2015 10/04 10:32
おはようございます!

> サブルーチン名を変更したのでしたら呼び出し側も変更してください。

ギャー!すみません…
&get_card_category($item) eq $Fm{'category'};
に変更してみたのですが、症状が変わらず…

if(@fitems){以下の処理が表示されていない感じなのですが、もしかして他にも修正すべき点があったり…?

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


1892● Re[13]:【続】カードコレクションのカテゴリわけとページ切り替え[ moon ] 2015 10/04 14:13
> &get_card_category($item) eq $Fm{'category'};
> に変更してみたのですが、症状が変わらず…
>
> if(@fitems){以下の処理が表示されていない感じなのですが、もしかして他にも修正すべき点があったり…?

途中までは表示できているようなので500エラーではないですが、No.1804で触れているやり方でエラーメッセージを表示させて原因を特定してみてください。(3番目のCGI::Carpを使ったやり方だけで事足りると思います。)
http://www11.big.or.jp/~hazymoon/ownerbbs/treebbs.cgi?log=1804
コメントを書く(引用) | スレッド一覧


1893● Re[14]:【続】カードコレクションのカテゴリわけとページ切り替え[ moon ] 2015 10/04 20:35
> > if(@fitems){以下の処理が表示されていない感じなのですが、もしかして他にも修正すべき点があったり…?
>
> 途中までは表示できているようなので500エラーではないですが、No.1804で触れているやり方でエラーメッセージを表示させて原因を特定してみてください。(3番目のCGI::Carpを使ったやり方だけで事足りると思います。)

前回までの投稿でHTMLのhidden要素でどこで定義しているのかが不明な$categoryを使用していたのでそこが原因の可能性もあります。
固定値になっている旨は返信済みなので修正されているかもしれませんが念のため確認しておいたほうが良いです。
コメントを書く(引用) | スレッド一覧

CGIROOM