0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【PHP】プルダウンで設定した項目をselectedにするサンプル

Last updated at Posted at 2020-01-18

はじめに

恐竜登録ツール2
で、ハイブリッド恐竜を登録するときに、生成元恐竜タイプを別ページに送信した後、
前ページのタイプに該当恐竜名を選択する手法をとっていたけど、面倒くさい。

タイプとそれに応じた恐竜名を一度に確定したいと考えていた。
そこで疑似的な連動プルダウンを考えてみたのだ

1つ目の、2つ目のプルダウンともに、DBのSELECT結果を利用。
1つ目のプルダウンの選択項目(normal,rare,epic,legend)を決定(確定ボタン押下後)
後に、その項目にあった内容を2つ目のプルダウンの項目を出してみた。
下記のソースのポイントは、
$cate0と$select_data['type0']を比較している部分
(※$cate0は1つ目のプルダウンで確定した項目)

ソース

恐竜登録ツール2
で作成したテーブルや、ソースを一部流用。

select_pulldown_dino.php
<!DOCTYPE html>
<html lang="ja">
<meta charset="utf-8">
<title>恐竜タイプ選択1</title>
<h1>恐竜タイプ選択</h1>

<body>

<?php 
    require "common_dino.php";
    $db_name='dino_collect.db';
    $db1 = new PDO('sqlite:'.$db_name);
    $query_type0 = "SELECT DISTINCT type0 from tbl_dino";
 ?>
    <form action="select_pulldown_dino.php" method="post">
カテゴリー:
    <?php $result_a=get_AllData($db1,$query_type0); 
    $cate0=isset($_POST['dtype0'])?htmlspecialchars($_POST['dtype0']):null;

     ?> 
    <select name="dtype0">
        <?php while($select_data=$result_a->fetch(PDO::FETCH_ASSOC)){
            //$cate0が$select_data['type0']と等しい場合
            if($cate0 == $select_data['type0']){ 
                echo "<option selected>".$select_data['type0']."</option>";
            //$cate0が$select_data['type0']と等しくない場合
            }else{
                echo "<option>".$select_data['type0']."</option>";
            }
        }   
        ?>
    </select><br>
    <input type="submit" name = "btn2" value="確定">
    </form>


<?php 
    $db_name='dino_collect.db';
    $db1 = new PDO('sqlite:'.$db_name);
    $query_select_type0 = "SELECT dname0 from tbl_dino where type0 = ?";
    $result3=$db1->prepare($query_select_type0);
    //パラメータをセット
    $result3->bindparam(1,$cate0);
    $result3->execute();

 ?>

    <form action="select_pulldown_dino.php" method="post">
対象生物:
    <select name="dname">
        <?php $dino0=isset($_POST['dname'])?htmlspecialchars($_POST['dname']):null; ?>
        <?php while($select_data=$result3->fetch(PDO::FETCH_ASSOC)){
            echo "<option>".$select_data['dname0']."</option>";
        }   
        ?>
    </select><br>
    <input type="hidden" name="btn3" value="<?=$cate0?>">
    <input type="submit" value="確定">
    </form>

<?php 
    $cate0=isset($_POST['btn3'])?htmlspecialchars($_POST['btn3']):null;
    if(empty($dino0) == false && empty($cate0)== false){
        print $dino0.",".$cate0;
    }

 ?>

実行結果

カテゴリーを選択後、「確定」を押すと、選択したカテゴリーが表示され、
選択カテゴリーに含まれる恐竜がプルダウンに表示される。

dino_2pulldown.jpg

最後に

javascriptとかだと、複数プルダウンの連動とか簡単そうなんだけど、
phpのみで実装するのは面倒なのか、私の技術力不足なのか。
いい方法ないでしょうか。

全部取得できないことが判明したので修正

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?