はじめに
恐竜登録ツール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;
}
?>
実行結果
カテゴリーを選択後、「確定」を押すと、選択したカテゴリーが表示され、
選択カテゴリーに含まれる恐竜がプルダウンに表示される。
最後に
javascriptとかだと、複数プルダウンの連動とか簡単そうなんだけど、
phpのみで実装するのは面倒なのか、私の技術力不足なのか。
いい方法ないでしょうか。
全部取得できないことが判明したので修正