プルダウンから、遷移先のurlに、&genrename=○○と追加付与
プルダウンから、遷移先のurlに、&genrename=○○と追加付与したいのですが、うまくいきません。
▽現状
<form action="search.php" method="get">
キーワード:<input type="text" name="keyword" size="40">
<select id="genreid" name="genreid">
<option value="0">すべての商品</option>
<?php foreach ($hits as $hit) { ?>
<option value="<?php echo ($hit->genreId); ?>">
<?php echo ($hit->genreName); ?>
</option>
<?php } ?>
<input type="submit" value="検索">
</select>
</form>
▽新たに追加して飛ばしたい内容
<?php echo ($hit->genreName); ?>の部分
▽試したこと
<input type="hidden" name="genrename" value="<?php ($hit->genreName); ?>">
とやると、&genrename=○○と追加付与されたのですが、文字がエンコードされたような状態になりました。
そこで、お伺いしたいのですが、
・プルダウンから、遷移先のurlに、&genrename=○○と追加付与する場合は、input type="hidden"でよいのでしょうか?(option valueの値送信は必要なので、それに追加して、という意味です)
・input type="hidden"で送信すると、勝手に何かに変換されるのでしょうか?
・最終的に、$genrename=$_GET["genrename"];という形で取り込みたいのですが、きちんと日本語表示させるにはどうしたらよいのでしょうか?
投稿日時 - 2010-09-29 13:17:30
> ・プルダウンから、遷移先のurlに、&genrename=○○と追加付与する場合は、input type="hidden"でよいのでしょうか?(option valueの値送信は必要なので、それに追加して、という意味です)
よいです。
> ・input type="hidden"で送信すると、勝手に何かに変換されるのでしょうか?
> ・最終的に、$genrename=$_GET["genrename"];という形で取り込みたいのですが、きちんと日本語表示させるにはどうしたらよいのでしょうか?
html側の文字コードと、サーバ側の文字コードが異なる場合は文字化けします。
mb_convert_encoding関数で文字コードを変えてやる必要があります。
文字コードが同じであれば送信時にurlエンコードが行われていると思われます。
サーバ側で勝手に元通りに変換してくれるはずですが、
もしだめならurldecode関数を使用すれば元通りになります。
そもそもgenrenameの情報をサーバ側に持っているのであれば、
わざわざそれをフォームから飛ばす必要は無いと思います。
例えばgenreidをキーとして下のような配列を作り、
(genrenameがhtmlに出力されているということは、
既にそのようなデータがあるのかもしれませんが)
$genrenameList = array(1 => "ジャンル1", 2 => "ジャンル2" …);
$genrename = $genrenameList[$_GET["genreid"]];
とすれば余分にフォームの値を飛ばす必要がなくなりますので。
投稿日時 - 2010-09-29 13:59:19
素早い回答ありがとうございました。
おかげでうまくいきました!
投稿日時 - 2010-09-29 15:02:14
このQ&Aは役に立ちましたか?
1人が「このQ&Aが役に立った」と投票しています
回答(1)