ID非表示

2014/11/27 17:29

33回答

htmlのプルダウンで複数の変数を持たせたいです。phpも少し使っています。

PHP1,900閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

NEW! この回答はいかがでしたか? リアクションしてみよう

ThanksImg質問者からのお礼コメント

解決しました!ありがとうございました!

お礼日時:2014/11/27 19:59

その他の回答(2件)

($data というネーミングはナンセンスなので $id に変えますが) JavaScript側から $name を送信させるべきではありません。サーバ側で全ての $id と $name のペアを保持しておき、$id だけの送信を受けるべきです。送信側ではデータを改ざんすることが容易に可能なので、サーバ側で期待している範囲の値かチェックするコードが必ず必要です。 $_GET, $_POSTなどを受け取る際の処理 http://qiita.com/mpyw/items/2f9955db1c02eeef43ea 【PHP5.4以降で動作するサンプル】 <?php function h($str) { return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); } $list = [ 1 => '高橋', 2 => '佐藤', 3 => '小林', ]; $id = (int)filter_input(INPUT_POST, 'id'); $name = isset($list[$id]) ? $list[$id] : null; if ($name !== null) { $result = compact('id', 'name'); } header('Content-Type: text/html; charset=utf-8'); ?> <!DOCTYPE html> <html> <body> <form action="" method="post"> <select name="id"> <option value="">選択▼</option> <?php foreach ($list as $k => $v): ?> <option value="<?=h($k)?>"<?=$k===$id?' selected':''?>><?=h($v)?></option> <?php endforeach; ?> </select> <input type="submit" value="送信"> </form> <?php if (isset($result)): ?> <pre><?php var_dump($result); ?></pre> <?php endif; ?> </body> </html>

どのあたりがphpと関連するのかが謎です(JavaScriptの質問のように思えます)。 こんな感じのhtmlソースを『phpスクリプトで出力したい』ということですかねぇ・・・ <script type="text/javascript"> function setname(){ var val = document.getElementById('data').value; if (val == 1) { document.getElementById('name').value = '高橋'; } if (val == 2) { document.getElementById('name').value = '佐藤'; } if (val == 3) { document.getElementById('name').value = '小林'; } return true; } </script> <form action="" method="post" onsubmit="setname()"> <select id="data" name="data"> <option value="1">高橋</option> <option value="2">佐藤</option> <option value="3">小林</option> </select> <input type="hidden" id="name" name="name"> <input type="submit"> </form> <?php if ($_POST) { var_dump($_POST); }

あぁ、なるほど。$_POST['data']や$_POST['name']じゃなくてあくまでも(phpスクリプトでの)$dataや$nameでいいんですかね。 #niikoujpさんの回答で合点がいきました <select name="data"> <option value="1,高橋">高橋</option> <option value="2,佐藤">佐藤</option> <option value="3,小林">小林</option> </select> で list($data, $name) = explode(',', $_POST['data']); ですね。