- 締切済み
@color1 = ('0000ae',・・・,'$user_color')で・・
とまとです。 行き詰まりました(TェT) 標題の代入で、'$user_color'の部分を文字列ではなく、後から出て来るinputで入力した文字を代入させるにはどうしたらいいのでしょう? ※標題のままだと「$user_color」という"文字列"が代入されてしまいます。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- estea
- ベストアンサー率44% (39/87)
えっと、よくわからないんですが、 $ccolor はクッキーに設定された値で、 $user_color は、form から得られた値ですよね? $color って何ですか? for 文をまわすときの一時変数ですか?
- estea
- ベストアンサー率44% (39/87)
あ~っと、 input ってのは HTMLタグのことですか・・・。 では、まず$user_color に値は入っていますか? 確認してください。 引数(?)やクッキーからも値が得られない場合は print " original color ..... 行で出力される value 値に値は入りませんよね? <input type=radio name=color value=><font color=>■</font> 行で value が空なのは、 $user_color が空だからでしょう。ちゃんと form 空のデータを受け取っていますか? あるいは、データがない場合(そのページをいきなり開いた場合など)の処理は含まれていますか? 確認してください。 以上2点の確認をお願いします。
補足
あぁ、そっか!! inputの場所を変えてしまったので、formがないのかもしれません(;^_^A アセアセ… >あるいは、データがない場合(そのページをいきなり開いた場合など)の処理は含まれていますか? これは、もし、$user_colorが$colorと同じなら$user_colorには$colorを代入し、そうでないなら$user_colorには特定色を代入しろ、というプログラムでいけますか? ちょっとやってみます!! また報告します。 何度もありがとうございます。(深謝)
- estea
- ベストアンサー率44% (39/87)
では、順番を以下のように変えてください。 1)input を user_color に入れる 2) @color1=('0000ae',......,$user_color); >単純に考えたら$colorの色を$user_colorに代入して表示して、その後その色を選んでinputで$colorに色データを入れたら次からはその色で表示しそうな気がしてたんですが Cのようなポインタではないのでご指摘の方法では難しいかと思いますが?
お礼
print " original color<input name=user_color size=8 maxlength=8 value=\"$user_color\"></td></tr>\n"; @color1 = ('0000ae','0000ff','3399cc','009999','02b9df','9999ff','cc00cc','ff0000','C70000','ff6666','ff99cc','ff9933','ecbd00','00cc00','009933','990000','666666','000000',$user_color); @color2 = ('シアン','エーゲブルー','ブルーグレー','コバルトブルー','スカイブルー','ヴァイオレット','パープル','レッド','フェラーリレッド','サーモンピンク','ピンク','ヴァレンシアオレンジ','山吹','新茶グリーン','グリーン','チョコレート','グレー','ブラック','オリジナル'); print "<tr><td nowrap><b>文字色</b></td><td>\n"; # クッキーの色情報がない場合 if ($ccol eq "") { $ccol = $color1[0]; } foreach (0 .. $#color1) { if ($ccol eq $color1[$_]) { print "<input type=radio name=color value=$color1[$_] checked>"; print "<font color=$color1[$_]>■</font>\n"; } else { print "<input type=radio name=color value=$color1[$_]>"; print "<font color=$color1[$_]>■</font>\n"; } } これでも読み込みません。 htmlのソースを見ると色データが空です。 <input type=radio name=color value=000000><font color=000000>■</font> <input type=radio name=color value=><font color=>■</font> : <option value="000000">ブラック <option value="">オリジナル お礼部分に補足ですみません。
補足
順番を逆にすると、色のデータを拾えなくなるらしく、今まで表示していたラジオボタンと■に色のついたものが出なくなります(T-T) >Cのようなポインタではないのでご指摘の方法では難しいかと思いますが? 私はPerlもちょっぴりカスタマイズできる程度の知識しかありません。 的はずれな事を色々言うかもしれませんが、何卒ご教授ください。よろしくお願いします。
- sisya
- ベストアンサー率39% (97/244)
#1の方が回答なさっている通り 「'」を取れば文字列ではなく、変数になります。 #1の方が仰っているのは $user_colorと言う変数に後から値をいえるなら 「@color1 = ('0000ae',・・・,'$user_color')」 の時点では何も入ってないのではないか? と言う事です。 配列に入れた後で$user_colorの値を変更しても @color1の中身は変化しません。
補足
回答ありがとうございます。 えっと、これを受けて以下のようにしました。 1)$user_colorの''を取る 2)配列の前に$user_color=$colorとして$user_colorに直前の$colorの情報を代入 3)配列の後のinputはuser_colorでなくcolorに代入 これでも動きません(TェT) 単純に考えたら$colorの色を$user_colorに代入して表示して、その後その色を選んでinputで$colorに色データを入れたら次からはその色で表示しそうな気がしてたんですが・・(;^_^A アセアセ…
- estea
- ベストアンサー率44% (39/87)
変数の内容を展開したければ、 ' でくくらなければいいわけですが、 後から出てくるなら、その代入時点では undefine 状態ですか?
補足
すみません。undefine状態、というのがよく分からないのですが・・・(^-^;) 展開するソースは以下の通りです。 print "<tr><td nowrap><b>文字色</b></td><td>\n"; # クッキーの色情報がない場合 if ($ccol eq "") { $ccol = $color1[0]; } foreach (0 .. $#color1) { if ($ccol eq $color1[$_]) { print "<input type=radio name=color value=\"$color1[$_]\" checked>"; print "<font color=\"$color1[$_]\">■</font>\n"; } else { print "<input type=radio name=color value=\"$color1[$_]\">"; print "<font color=\"$color1[$_]\">■</font>\n"; } } print "<br>original<input name=user_color size=8 maxlength=8 value=\"$color\">\n"; --- ※$ccolはcolorのクッキーです。
お礼
色々ありがとうございました。 一旦締め切ります。
補足
お返事が大変遅れました(;^_^A アセアセ…すみません。 $colorは、元々のスクリプトで色んな色の羅列があり、それをラジオボタンと共に吐きだしてhtmlに書いてるんですが、そのラジオボタンで選ぶと代入されるものです。