WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:クッキーについて

ロット [WriteDate : Fri Jun 15 23:13:46 2001]

<select name = "hito">
<option value = "11">女性1</option>
<option value = "13">女性3</option>
<option value = "21">男性1</option>
</select>
これにクッキーを設置したいのですが

<input type="text" size="40" name="name" value = "$COOKIE{'n
ame'}">
↑のように設置するにはvalue値はつかわれているので
どこにつけていいのかわかりません
よろしくお願いします


qz [WriteDate : Sat Jun 16 03:40:07 2001]

><input type="text" size="40" name="name" value = "$COOKIE{'name'}">

この、$COOKIE{'name'}の箇所かなければ、CGIなのか、JavaScriptなのか、さらに、言語すら、わからない質問ですよ。
せめて、そのあたりの情報くらいは、かきましょう。
CGIで、言語は、Perlなのだろうという予測でかきますね。

$COOKIE{'hito'}には、11か、13か、21が入ってますよね?
(なにもはいってないこともありますが。)
で、selectの場合は、optionのところに、selectedというのをかけば、選択された状態になるのは知ってますよね?

例)
<option value = "13" selected>女性1</option>

ということは、if文で、ひとつひとつみていけば、よいわけです。

print '<option value = "11"';
if($COOKIE{'hito'} == 11){
 print ' selected';
}
print '>女性1</option>';

print '<option value = "13"';
if($COOKIE{'hito'} == 13){
 print ' selected';
}
print '>女性3</option>';

print '<option value = "21"';
if($COOKIE{'hito'} == 21){
 print ' selected';
}
print '>男性1</option>';

こういう感じでやればよいわけです。
あまり、きれいなやりかたではありませんけど^^
もうちょっと、きれなやりかたは、

%hito = (
'11' => '女性1',
'13' => '女性3',
'21' => '男性1',
);

foreach(11,13,21){
 print qq!<option value="$_"!;
 print " selected" if($COOKIE{'hito'} == $_);
 print ">$hito{$_}</option";
}

とか、かな〜。


qz [WriteDate : Sat Jun 16 03:42:52 2001]

あう、
>print ">$hito{$_}</option";
は、
print ">$hito{$_}</option>";
ですね。


The WAY [URL] [WriteDate : Sat Jun 16 03:52:12 2001]

前回選択されたものをクッキーで保存し、それを次回投稿時に自動選択されるということで良いのでしょうか。
その場合、option 要素の selected 属性を使えばいいと思います。

$COOKIE{'hito'} にクッキーが入っているとして、

if ($COOKIE{hito} eq '11') { $f1 = ' selected'; }
elsif ($COOKIE{hito} eq '13') { $f3 = ' selected'; }
elsif ($COOKIE{hito} eq '21') { $m1 = ' selected'; }

等としておいて、

<select name = "hito">
<option value = "11"$f1>女性1</option>
<option value = "13"$f3>女性3</option>
<option value = "21"$m1>男性1</option>
</select>

とする、等の処理が考えられます。


qz [WriteDate : Sat Jun 16 03:56:02 2001]

あとは、

$hito{$COOKIE{'hito'}} = " selected";

print <<"END";
<option value = "11"$hito{$COOKIE{'hito'}}>女性1</option>
<option value = "13"$hito{$COOKIE{'hito'}}>女性3</option>
<option value = "21"$hito{$COOKIE{'hito'}}>男性1</option>
END

というほうが、よいかも・・・


qz [WriteDate : Sat Jun 16 03:57:00 2001]

あう、まちがえ。

$hito{$COOKIE{'hito'}} = " selected";

print <<"END";
<option value = "11"$hito{11}>女性1</option>
<option value = "13"$hito{13}>女性3</option>
<option value = "21"$hito{21}>男性1</option>
END

です。修正機能ほしいかも、この掲示板。あと、preくらいつかいたいい


qz [WriteDate : Sat Jun 16 03:59:53 2001]

発言かさなってるし(笑)


qz [WriteDate : Sat Jun 16 04:06:23 2001]

あ・・・

>$hito{$COOKIE{'hito'}} = " selected";

これだと、$COOKIE{'hito'}に値がはいってないと、あやしいので、

$hito{$COOKIE{'hito'}} = " selected" if(defined $COOKIE{'hito'});

としたほうが、いいでしょうね。
#何回かいてるんだ、おいら・・・(あせ


ロット [WriteDate : Sat Jun 16 10:41:02 2001]

ありがとうございました
とても親切なレスありがとうございました


ロット [WriteDate : Sat Jun 16 21:30:35 2001]

qzさんにお答えいただいたのですが
<select name = "hito" >
<option value = "11" if($COOKIE{'hito'} == 11){
    selected
}
>女性1</option>
<option value = "12" if($COOKIE{'hito'} == 12){
    selected
}
>女性2</option>
<option value = "13" if($COOKIE{'hito'} == 13){
    selected
}
>女性3</option>
<option value = "21" if($COOKIE{'hito'} == 21){
    selected
}
>男性1</option>
<option value = "22" if($COOKIE{'hito'} == 22){
    selected
}
>男性2</option>
</select>
処理をした後、男性2になってしまいます。
クッキーには値が入っているのですがわからないので
よろしくお願いします。


qz [WriteDate : Sat Jun 16 22:13:51 2001]

初歩の初歩のところで、つまづいますね。
CGIで、Perlなのですよね?
出力結果からみると、原因は、ヒアドキュメントにありそうです。
ヒアドキュメントがなにかは、とりあえず、

http://www.att.or.jp/perl/man/perldata.1.html
http://www.wao.or.jp/user/matumiya/cgi/docs/Basic/here_doc.html
http://tohoho.wakusei.ne.jp/wwwperl1.htm#EOF
http://books.softbank.co.jp/pq/backnumber/016_ans_yuki.html

あたりをみましょう。(って、検索にひっかかったのを適当にならべただけですが)
あと、ここのCGI-Perl講座にもありますね。

http://www.parkcity.ne.jp/~chaichan/src/perl01.htm#ヒヤドキュメント

とりあえず、ヒアドキュメントがなんなのか、理解してください。
理解できないのであれば、改造(自作?)をあきらめてください。
なぜなら、ヒアドキュメントが理解できないなら、
改造や自作ができるようにはならないと思うからです(ようするに簡単だということ)
理解できたなら、どうすれば、うまくいくか、わかるでしょう。
わからないのなら、やっぱり、あきらめたほうが、無難です。

理解できないけど、どうしてもやりたいというのであれば、そのCGIのソースを、(拡張子をtxtにでもかえて)サーバにアップロードして、
そのURLを書いてください。
そうすれば、気が向いた人が、どこをどう、いじればよいのか教えてくれます。


ロット [WriteDate : Sun Jun 17 17:04:23 2001]

すいませんCGIでperlです
ヒアドキュメントなんとなくわかりました
ありがとうございました
直してみたのですが
ロードしたときに選択した値をとりません
みんな最初の女性1になってしまいます。
クッキーにはデータが入っているのですが

print"<option value = 11 ";if($COOKIE{'hito'} == 11){
    print"selected";
}
print">女性1</option>";
print"<option value = 12"; if($COOKIE{'hito'} == 12){
    print"selected";
}
print">女性2</option>";
print"<option value = 13"; if($COOKIE{'hito'} == 13){
    print"selected";
}
print">女性3</option>";
print"<option value = 21"; if($COOKIE{'hito'} == 21){
    print"selected";
}
print">男性1</option>
<option value = 22 ";if($COOKIE{'hito'} == 22){
    print"selected";
}
print">男性2</option>";
これはこのままでいいのでしょうか?


qz [WriteDate : Sun Jun 17 17:51:56 2001]

よく、σ(^_^)のかきこみや、The WAY さんのかきこみのサンプルプログラムを見てください。
ロットさんのソースとは微妙にちがいませんか?
ヒアドキュメントだけではなく、print文とif文のところも、
Perlの入門系のサイトでご覧になられたほうがよいかと思います。
このあたりは、プログラミングの基本的な部分なので、ちゃんと理解しましょう。
とりあえず、ちゃいぱさんが、このサイトにCGI-Perlの基礎講座を
お書きになられているのですから、ひととおり読んでください。
この程度の努力なしに、改造に手をだしては、いけません^^
1,2時間もあれば、基本的なところは、理解できると思います。
出力(print等)、条件分岐(if文等)、繰り返し(for,foreach,while文)くらいは、最低限理解してください。

http://www.parkcity.ne.jp/~chaichan/src/perlmain.htm


ロット [WriteDate : Sun Jun 17 20:59:16 2001]

すいません何度も。qzさん The WAY さん
ありがとうございました
まだまだperlの勉強が足りませんでした。
本当にありがとうございました

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]
ChaichanPAPA's World