みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

プルダウンから、遷移先の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

QNo.6215844

暇なときに回答ください

質問者が選んだベストアンサー

> ・プルダウンから、遷移先の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)