プロが教えるわが家の防犯対策術!

input type="hidden"で送る値を、セレクトした内容に応じて動的に変えるにはどうしたらよいでしょうか?

▽現状
<form action="search.php" method="get">
キーワード:<input type="text" name="keyword">
<select name="genreid">
<option value="0">すべての商品</option>
<?php foreach ($genres as $hit) { ?>
<option value="<?php echo ($hit->genreId); ?>">
<?php echo ($hit->genreName); ?>
</option>
<?php } ?>
</select>
<input type="hidden" name="genrename" value="<?php echo ($genres->genreName); ?>">

▽問題点
この書き方だと、<option value="0">を選択した際、「すべての商品」という文字列が送れません。
<option value="0">を選択した際は「すべての商品」を、
それ以外を選択した場合は、<?php echo ($genres->genreName); ?>を送りたいのですが、どう書けばよいでしょうか?
最終的には、遷移先で、$genrename=$_GET["genrename"];で利用する予定です。

▽その他
http://oshiete.goo.ne.jp/qa/6215844.htmlで回答いただいた内容で、解決したつもりだったのですが、新たな疑問が出てきたので、質問しました。上記でアドバイスいただいた、フォームを使わないやり方については、データをAPIから取得していること等もあり、どうやって処理してよいか分からないため、できればこのフォームでやりたいと考えてます…。

A 回答 (2件)

<option value="0">すべての商品</option>


であなく
<option>すべての商品</option>
こうすれば
「0」のかわりに「すべての商品」が送信されるようになるわよ。
両方送りたいなら
<option value="0:すべての商品">すべての商品</option>
こうしてあげてPHPで分解してあげるのも一つの手よ。

どうしてもhiddenに格納して送りたいならJavaScriptでhiddenのvalueを書き換えるしかないわね。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

submitした時点で、option valueの値も利用するので(APIへ投げる)、
「hiddenのvalueを書き換える方法」を試してみたいと思います。

JavaScriptなので、そちらの方で聞いてみます。
http://oshiete.goo.ne.jp/qa/6217505.html

お礼日時:2010/09/30 12:34

>「すべての商品」という文字列が送れません。



本末転倒していませんか?

サーバーからoptionのvalueをクライアントに渡しているわけですから
サーバー側はvalue=0のときは「すべての商品」を示すことは最初からわかっているわけです。

なので、「すべての商品」なんて文字列を無駄に送る必要はありません。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
>サーバー側はvalue=0のときは「すべての商品」を示すことは最初からわかっているわけです。
遷移先へ渡して、画面に表示させたり、ページタイトルとして利用したいと考えています。

もしかしたら、サーバー側から取得したら? といった主旨のアドバイスをいただいているのかもしれませんが、そのやり方が分からないので、hiddenで渡したいと思ってます。

お礼日時:2010/09/30 12:41

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