web-dev-qa-db-ja.com

ドロップダウンからデータを取得してページを更新する

私はいくつかのオプションを持つドロップダウンメニューを持つ簡単なWebページを持っています。ユーザーの選択を取得してから、同じ選択をWebページに出力できるようにしたいです。これは私が今まで持っているコードです。

\\Pretty standard code for getting the header and title and <\div> etc.
<select id="animal" name="animal">                      
  <option value="0">--Select Animal--</option>
  <option value="Cat">Cat</option>
  <option value="Dog">Dog</option>
  <option value="Cow">Cow</option>
</select>
<?php
if($_POST['submit'] && $_POST['submit'] != 0)
{
   $animal=$_POST['animal'];
    location.reload();
}
   print_r($animal);
?>
\\Pretty standard code for getting the footer etc.

下図のように、ドロップダウンボックスが正しく表示されます。すべてのオプションが表示されますが、オプションを選択しても何も起こりません。この場合、選択したもの、つまり「Cat」を表示します。 (現時点では起きていない) enter image description here

間違っていることを教えてください。最終的に私はドロップダウンで他のことをしたいと思っています。しかし、これがうまくいくようになれば、データを取得してページを更新する方法を理解できます。次のステップは比較的簡単です。また、このコードは私のページのテンプレートファイルの一部です。必要に応じてコード全体をアップロードできます。

更新: 最終的に私はこのようなものを作りたいです。つまり、ユーザーが選択したフィルターに基づいて関連する投稿を表示することができます(それが役立つ場合)。

2

これはどう:

<?php

$arr = ["Cat", "Dog", "Cow" ];


if( $_POST['animal']){
   $animal=$_POST['animal'];
   echo $animal;    

}


?>

<form name="f" id="a" method="post" action="">
<select id="animal" name="animal" onchange="this.form.submit()" >                      
  <option value="0">--Select Animal--</option>
  <?php

   foreach ($arr as $a){

    if($a == $animal){
        echo "<option value='{$a}' selected >$a</option>";
    }else{
        echo "<option value='{$a}' >$a</option>";
    }

   }

   ?>

</select>
</form>

最後に変数をunsetすることもできますが、PHPにはガベージコレクタもあります。このコードはあなたが少なくともPHP 5.4+を使うことを想定しています、そうでなければ$arr = array("Cat", "Dog", "Cow" );を通して配列を定義します

1
prosti