プロが教える店舗&オフィスのセキュリティ対策術

とまとです。

行き詰まりました(TェT)

標題の代入で、'$user_color'の部分を文字列ではなく、後から出て来るinputで入力した文字を代入させるにはどうしたらいいのでしょう?
※標題のままだと「$user_color」という"文字列"が代入されてしまいます。

A 回答 (5件)

えっと、よくわからないんですが、


$ccolor はクッキーに設定された値で、
$user_color は、form から得られた値ですよね?
$color って何ですか? for 文をまわすときの一時変数ですか?

この回答への補足

お返事が大変遅れました(;^_^A アセアセ…すみません。
$colorは、元々のスクリプトで色んな色の羅列があり、それをラジオボタンと共に吐きだしてhtmlに書いてるんですが、そのラジオボタンで選ぶと代入されるものです。

補足日時:2004/05/23 05:31
    • good
    • 0
この回答へのお礼

色々ありがとうございました。
一旦締め切ります。

お礼日時:2004/06/11 04:04

あ~っと、 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には特定色を代入しろ、というプログラムでいけますか?

ちょっとやってみます!!

また報告します。
何度もありがとうございます。(深謝)

補足日時:2004/05/01 18:45
    • good
    • 0

では、順番を以下のように変えてください。



1)input を user_color に入れる

2) @color1=('0000ae',......,$user_color);

>単純に考えたら$colorの色を$user_colorに代入して表示して、その後その色を選んでinputで$colorに色データを入れたら次からはその色で表示しそうな気がしてたんですが
Cのようなポインタではないのでご指摘の方法では難しいかと思いますが?

この回答への補足

順番を逆にすると、色のデータを拾えなくなるらしく、今まで表示していたラジオボタンと■に色のついたものが出なくなります(T-T)

>Cのようなポインタではないのでご指摘の方法では難しいかと思いますが?

私はPerlもちょっぴりカスタマイズできる程度の知識しかありません。
的はずれな事を色々言うかもしれませんが、何卒ご教授ください。よろしくお願いします。

補足日時:2004/04/24 00:02
    • good
    • 0
この回答へのお礼

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="">オリジナル

お礼部分に補足ですみません。

お礼日時:2004/04/24 02:08

#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 アセアセ…

補足日時:2004/04/20 18:55
    • good
    • 0

変数の内容を展開したければ、


' でくくらなければいいわけですが、
後から出てくるなら、その代入時点では
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のクッキーです。

補足日時:2004/04/20 09:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!