Help us understand the problem. What is going on with this article?

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

はじめに

恐竜登録ツール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のみで実装するのは面倒なのか、私の技術力不足なのか。
いい方法ないでしょうか。

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした