一つのプルダウン式の記入欄で、同時に2つの動作をさせるには?

[上に] [前に] [次に]
らりほー [E-Mail] 1999/09/23(木) 01:34:49
以下の・・・
-----------------------------------------------------------
# キャラクタを指定(上下の配列はペアで)
@GFILE = ('boy1.gif','boy2.gif','girl1.gif','girl2.gif','heisi1.gif','heisi2.gif','majo.gif','king.gif','ani1.gif','ani2.gif');
@CHARA = ('少年1','少年2','少女1','少女2','兵士1','兵士2','魔女','王様','動物1','動物2');
-----------------------------------------------------------
print " <b>あなたのイメージ</b> <select name=icon>\n";
foreach (0 .. $#GFILE) {
if ($c_icon eq "$GFILE[$_]") {
print "<option value=\"$GFILE[$_]\" selected>$CHARA[$_]\n";
} else {
print "<option value=\"$GFILE[$_]\">$CHARA[$_]\n";
}
}
-----------------------------------------------------------
掲示板の一部のプログラムで、
キャラクター名を選ぶと、それぞれのイメージが表示されるという
動作をするのですが、これに更に、色を変えたりなどの動作を
平行して加える事は出来ませんでしょうか?

つまり、キャラクター名を選択し、記事投稿すると、
記事の表示の際、選択されたアイコンイメージを表示し、
それと同時に、タイトルの色もキャラクター名に対応して変わる。
という事なのですが・・・・・

こうした、「一つの選択で、2ヶ所に同時に影響を与える」
事は可能でしょうか?また、どう組めばそれは可能ですか?
教えてください。

Aurai 1999/09/23(木) 01:49:19
>foreach (0 .. $#GFILE) {
> if ($c_icon eq "$GFILE[$_]") {
これを応用してできます
@ColorList = ('blue','red',......
とでも定義して、$ColorList[$_] を参照しましょう
……ってわかりにくいでしょうね
表示部分のソースがわかれば詳しく答えられると思いますが

らりほー 1999/09/23(木) 02:13:01
早速のレスをありがとうございます。

以下が表示部です。
-----------------------------------------------------------
print "<table border=0><tr><td valign=top nowrap>[$no] \n";

if ($subject == 1) {
  if ($sub eq "") { $sub = "no title"; }
  print "<font color=$sbj_color><b>$sub</b></font></td><td width=3></td>\n";
  print "<td valign=top>投稿者:<font color=$link><b>$name</b></font>\n";
  print "[$local] <small>投稿日:$date</small></td>\n";

} else {
  print "<font color=$link><b>$name</b></font></td>\n";
  print "<td valign=top><font color=$sbj_color size=2>[$local] $date</font></td>\n";
}

if ($url) {
  print "<td width=3></td><td><a href=\"http://$url\" target=\"_top\">";
  print "<img src=\"$img_url/home.gif\" border=0></a></td>\n";
}

print "</tr></table>\n";
print "<table border=0><tr><td><img src=\"$img_url/$icon\"></td>\n";
print "<td width=3></td><td>$com</td></tr></table>\n";

if ($res) {
  print "<table border=0><tr><td width=32></td>\n";
  print "<td><img src=\"$img_url/$ad_ico\"></td><td width=2></td>\n";
  print "<td><font color=$man_color>$res</font><br>\n";
  print "<font color=$sbj_color size=2>[From $manager]</font>\n";
  print "</td></tr></table>\n";
}
print "<hr size=2>\n";
}
-----------------------------------------------------------
よろしくお願いします。

らりほー 1999/09/23(木) 02:16:41
済みません、ちょっとさっきのでは
余計なものが多すぎましたね・・・(^^;)

-----------------------------------------------------------

print "</tr></table>\n";
print "<table border=0><tr><td><img src=\"$img_url/$icon\"></td>\n";
print "<td width=3></td><td>$com</td></tr></table>\n";

-----------------------------------------------------------
ここら辺だけで良いのでしょうか?

Aurai 1999/09/23(木) 05:29:20
私の推測が正しければ
@ColorList = ('blue','red',......
と定義しておいて
foreach (0 .. $#GFILE) {
if ($icon eq "$GFILE[$_]") {
  $sbj_color = $ColorList[$_];
}
}
という処理をサブジェクトの出力の前に行えば……

らりほー 1999/09/23(木) 11:44:47
レスをありがとうございます。


print " <b>あなたのイメージ</b> <select name=icon>\n";
foreach (0 .. $#GFILE) {
if ($c_icon eq "$GFILE[$_]") {
  $sbj_color = $ColorList[$_];
}

{
print "<option value=\"$GFILE[$_]\" selected>$CHARA[$_]\n";
} else {
print "<option value=\"$GFILE[$_]\">$CHARA[$_]\n";
}
}


と、こんな感じで組み込んだのですが・・・


Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@tako.ne.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.

このような、エラーが出てしまいました(T-T)。

らりほー 1999/09/23(木) 11:46:16
ちなみに、カラー部は、

@ColorList = ('#ffff00','#ff00ff','#ff0000','#0000ff','#00ff00');

こんな感じにしています。

Aurai [E-Mail] 1999/09/23(木) 16:14:57
文法が間違っています
それに勘違いされてるようです
> print "<font color=$sbj_color><b>$sub</b></font></td><td width=3></td>\n";
> print "<td valign=top>投稿者:<font color=$link><b>$name</b></font>\n";
> print "[$local] <small>投稿日:$date</small></td>\n";
この表示部分の処理のすぐ前あたりに
foreach (0 .. $#GFILE) {
if ($icon eq "$GFILE[$_]") {$sbj_color = $ColorList[$_];}
}
を入れてください。多分それでできます

それと、@ColorList は
> @GFILE = ('boy1.gif','boy2.gif','girl1.gif','girl2.gif','heisi1.gif','heisi2.gif','majo.gif','king.gif','ani1.gif','ani2.gif');
> @CHARA = ('少年1','少年2','少女1','少女2','兵士1','兵士2','魔女','王様','動物1','動物2');
この二つに対応させてください

……私もしかして見当違いのこと書いてます?

らりほー 1999/09/23(木) 19:05:30
[[解決]]
>……私もしかして見当違いのこと書いてます?

いえ、言われる通りにしましたところ、
きちんと動作するように成りました。
ありがとうございました。

初心者なもんで、全く見当違いなことをして済みませんでした。
CGI入門の本などを読み直して、もう少し的を射た行動に移せるよう、
勉強したいと思います。

[上に] [前に] [次に]