1

別のコンボボックスに依存する 1 つのコンボボックスに関して助けが必要です。

フォームには 2 つのコンボ フィールドがあり、1 つは学校用で、もう 1 つはクラス用です。すべての学校には特定のクラスがあり、両方がデータベースに保存されています。データベース (学校テーブル) から学校の値を選択する必要があり、それを選択すると、2 番目のコンボ ボックスに特定の学校に関連するクラスが表示されます。

これらの値を選択したら、データベースにも保存する必要があります。

4

2 に答える 2

0

この問題を解決するには 2 つの方法があります。

  1. JavaScript の使用:

    1. Javascript + Ajax を使用して、2 番目のボックスのデータソースを動的に取得し、配列を作成してコンボボックスの項目を設定できます。
    2. 必要なオプションを配列にロードできます(ページの作成時にphpを使用)

    どちらの方法でも、最初のコンボボックスからのすべてのオプションの配列があります (2 つの次元配列 - 最初のインデックスは最初のコンボボックスの選択肢用で、2 番目は 2 番目のコンボボックスに追加されるアイテムのインデックスです)。次に、使用します

    document.getElementById("DropDownList").options.add(opt);

最初の値が変更されたときに、2 番目のコンボボックスに項目を追加します。

2. 最初のコンボボックスの値が変更されるたびに、フォームの submit() を呼び出してから、php を使用して 2 番目のコンボボックスを入力できます (最初のコンボボックスの値によって異なります)。

于 2012-05-02T10:17:26.680 に答える
0

注:データベースの詳細を提供していないため、データベース構成が正しく、テーブルであると想定しています。

表1:学校

フィールド タイプの詳細

schoolid int(11) 主キー
schoolname varchar(50)
詳細 varchar(50)

表2:クラス

フィールド タイプの詳細

class_id int(11) 主キー
classname varchar(50)
schoolid int(11)

上記の db テーブルにサンプル データを追加します。次の行のようにデータベース構成を設定します

$sConn = mysql_connect("localhost","root","sajeda45")

localhost はホスト名 root は dbusername sajeda45 は dbpassword imagedb はデータベース名

次のスクリプトで上記のデータベースパラメーターを設定すると、必要な結果が得られます

<?php

        $sConn = mysql_connect("localhost","root","sajeda45")
        or die("Couldn't connect to database server");
        $dConn = mysql_select_db("imagedb", $sConn);

        function getSchollList()
        {
            $schoolList = array();

            $result = mysql_query("select schoolid,schoolname from school") or die("Couldn't school list");

            while($row=mysql_fetch_array($result))
            {
                    $id=$row['schoolid'];
                    $schoolList["".$id.""]  =$row['schoolname'];    
            }

            return $schoolList;
        }

        function getClassList($schoolId)
        {
            $classList = array();

            $result = mysql_query("select classname from class  where schoolid=$schoolId") or die("Couldn't class list");

            while($row=mysql_fetch_array($result))
            {
                    $classList[]    =$row['classname']; 
            }
            return  $classList;
        }
    ?>

<html>
<title>Test Example</title> 
<head>
    <script type="text/javascript">
            function redirectForClass(schoolName)
            {
                    window.location="stackoverflow1.php?school="+schoolName;
            }
    </script>       
</head>
<body>
    <?php
        $schoolList = getSchollList();
        $schoolId = isset($_GET['school']) ? $_GET['school']:0;
        $classList =  getClassList($schoolId); 
    ?>
    <form method="post" action="handler.php">

            School:
            <select name="school" onchange="redirectForClass(this.value);">
                <option value="0">--select school--</option>
                <?php
                    foreach($schoolList as $school_Id => $school){
                ?>      
                    <option value="<?php echo $school_Id; ?>" <?php if($school_Id==$schoolId) echo "SELECTED"; ?>><?php echo $school; ?></option>
                <?php   
                }
                ?>  
                </select>
                <br/><br/>
                    Class:
            <select name="class" >
                <option value="">--select Class--</option>
                <?php
                    foreach($classList as $class){
                ?>      
                    <option value="<?php echo $class; ?>"><?php echo $class; ?></option>
                <?php   
                }
                ?>  
                </select>
                <br/><br/>
                <input type="submit" value="submit" />
    </form> 

</body>
</html> 
<?php

?>
于 2012-05-02T13:06:51.700 に答える