1

現在、jQuery と PHP の助けを借りて機能する Dependable ドロップダウン メニューを使用しています。値は MySQL データベースから取得されています。信頼できるドロップダウンメニューの選択された値をphpエコーする方法はありますか?

HTML/PHP

<form action="" method="post">

        <select name="gender" id="gender" class="update">
            <option value="">Select one</option>
            <?php if (!empty($list)) { ?>
                <?php foreach($list as $row) { ?>
                    <option value="<?php echo $row['id']; ?>">
                        <?php echo $row['name']; ?>
                    </option>
                <?php } ?>
            <?php } ?>
        </select>

        <select name="category" id="category" class="update"
            disabled="disabled">
            <option value="">----</option>
        </select>

        <select name="colour" id="colour" class="update"
            disabled="disabled">
            <option value="">----</option>
        </select>

</form>
4

2 に答える 2

3

jquery.js を追加してください。あなたのhtmlコード

    <select name="gender" id="gender" class="update">
        <option value="">Select one</option>
        <?php if (!empty($list)) { ?>
            <?php foreach($list as $row) { ?>
                <option value="<?php echo $row['id']; ?>">
                    <?php echo $row['name']; ?>
                </option>
            <?php } ?>
        <?php } ?>
    </select>

    <select name="category" id="category" class="update" disabled="disabled">
        <option value="">----</option>
    </select>

    <select name="colour" id="colour" class="update" disabled="disabled">
        <option value="">----</option>
    </select>
        //jquery code for source list
    <script type="text/javascript">
        $(document).ready(function(){
            $('#gender').change(function() {
              if ($(this).val()!='') {
                $("#category").load("postfile.php",{gender_id: $(this).val()});
                $("#category").removeAttr('disabled');
              }
            });
            //code on change of sel_source
            $('#category').change(function() {
              if ($(this).val()!='') {
                $("#colour").load("postfile.php",{category_id: $(this).val()});
                $("#colour").removeAttr('disabled');
              }

            });
        });
    </script> 



//postfile.php
//your mysql connection other things goes here
//code for category
$objDb = new PDO('mysql:host=localhost;dbname=dbname', 'ur_username', 'ur_password');
if(isset($_REQUEST['gender_id']) && !empty($_REQUEST['gender_id'])) {

           $sql = "SELECT * FROM `categories` WHERE `master` = ?";
    $statement = $objDb->prepare($sql);
    $statement->execute(array($_REQUEST['gender_id']));
    $list = $statement->fetchAll(PDO::FETCH_ASSOC);

    if(!empty($list)) {
        $output = '<option value="">Select</option>';
        foreach($list as $row) {              
                $output .= '<option value="'.$row['id'].'">'.$row['name'].'</option>';
        }
    } else {
        $output = '<option value="">Select</option>';
    }
    echo $output;
} 
//code for color

if(isset($_REQUEST['category_id']) && !empty($_REQUEST['category_id'])) {
    $sql = "SELECT * FROM `categories` WHERE `master` = ?";
    $statement = $objDb->prepare($sql);
    $statement->execute(array($_REQUEST['category_id']));
    $list = $statement->fetchAll(PDO::FETCH_ASSOC);
     if(!empty($list)) {
        $output = '<option value="">Select</option>';
        foreach($list as $row) {          
                $output .= '<option value="'.$row['id'].'">'.$row['name'].'</option>';
        }
    } else {
        $output = '<option value="">Select</option>';
    }
    echo $output;
} 

これがあなたを助けることを願っています。

于 2012-07-21T10:12:10.190 に答える
1

最初の HTML 選択フィールドから選択された値またはオプションを取得する JavaScript 関数を作成する必要があります。この関数は通常、現在のページへの新しい URL パスを書き込み、いくつかの連結された Get Variables を追加します。

<script type="text/javascript">
getSelectedOptionValue() {
// create some variables to store your know values such as URL path and document
var myPath = " put the URL path to the current document here ";
var currentPage = "currentPage.php";
// get the values of any necessary select fields
var carMake = document.getElementById("carMake").value;

// write out the final URL with the Get Method variables you want using concatnitation
var getMethodURL = myPath + currentPage + "?carMake='" + carMake + "'";

// function refreshes page using the function made URL
window.location.replace( getMethodURL );
}
</script>

2 番目の選択フィールドは最初の選択フィールドに依存するため、ユーザーが最初の選択肢から選択することを想定する必要があります。つまり、プライマリ選択フィールドの値を取得する関数は、フィールド選択の変更に応じて実行する必要があります。例えば

<select name="carMake" id="carMake" onchange="getSelectedOptionValue();">

DB の設定方法に応じて、オプション タグの値またはオプション タグの間でユーザーに提示される文字列のいずれかが必要になる場合があります。これは、情報を再クエリする方法を念頭に置いてください。元のレコード セットが、選択オプション タグの 2 番目のセットを書き込むために必要な情報をまだ取得していない場合。

php を使用して 2 番目の選択フィールドを書き出すには、最初に使用した while ループを繰り返すだけです。今回は、get メソッドを使用して新しい URL から取得した値を格納した変数を使用して、SQL ステートメントを新しいものに置き換えます。

<?php

// here I am using the more generic request method although you could use the get as well
$carMake = $_REQUEST['carMake'];

sql_secondSelectField = "SELECT * FROM tbl_carModels WHERE carMake = $carMake";

// Run new query and repeat similar while loop used to write your first select field ?>
于 2012-07-21T09:39:38.477 に答える