PHPで教えてください。

Writer: admin Type: arte Date: 2019-01-08 00:00
PHPで教えてください。あらかじめ設置されているセレクトボックスの選択が変化したときPOSTで自己PHP(test1.PHP)に遷移するところまで出来たのですがセレクトボックスの選択が初期化されてしまいます。PHP遷移後も選択状態を保持するにはどうしたらよろしいでしょうか?よろしくお願いいたします。以下、コードです。<?PHPif (isset($_POST['sel_junru'])){ // MySQLアクセス処理}?><!DOCTYPE html><html lang="ja"><head><meta charset="UTF-8"><title>test1.php</title></head><body><form action="test1.php" id="form1" method="post" name="myform"><input type="submit" value="送信" name="btn1"><br><select name="sel_junru" onChange="submit(this.form)"> <option value="1" selected>1</option> <option value="2">2</option> <option value="3">3</option></select><br></form></body></html>共感した0###> セレクトボックスの選択が初期化されてしまいますそれは当然です。option 群は静的に書かれている(=HTMLで直接書かれている)ので、変化のしようが無いです。> PHP遷移後も選択状態を保持する「遷移する」とは、フォームデータが送信される事を意味します。なので、送信されたデータを取得して、それを元に HTML を構成する(=動的に生成する)訳です。という事は、現状の静的に書かれている部分を動的にする必要があります。例えば、$selectedValue にポストされたデータが格納されているとします。__ポストされていなければ 0 としますoption 群を<option value="1" <?=($selectedValue == '1') ? 'selected' : '' ?>>1</option><option value="2" <?=($selectedValue == '2') ? 'selected' : '' ?>>2</option><option value="3" <?=($selectedValue == '3') ? 'selected' : '' ?>>3</option>の様にすれば、良いと思います。> // MySQLアクセス処理とあるので、実際には option の値や表示値もDBから取得するのでしょうからもうちょっと違う書き方になるとは思いますが。ナイス0
###> ポストされていなければ 0 としますこれは間違いでしたね。ごめんなさい。ポストされていなければ 1 じゃないと、デフォルトが不確定になってしまいます。ただし、最初の option が選択されて様な形になるので、実用上の不具合は無いと思いますけど、最初がデフォルトでは無い場合にはそれに合わせる必要があります。

 

TAG