2

現在、動的ドロップダウンメニュー(信頼できる選択ボックス)を使用しています。私はMySQLDBから直接値を取得しています(ここで興味がある場合は、DBセットアップの方法です)。各テーブルの値を取得し、それに応じて表示することができます。私が抱えている問題は、各選択ボックスのSELECTED値をエコーすることです。各ボックスのSELECTED値をエコーするpostfile.phpを要求するJS関数を作成しました。何もエコーされていません。firebugで確認しましたが、何も投稿されていません。

どうすればこれを機能させることができますか?または私はこれに間違って近づいていますか?またはもっと良い方法はありますか?

動作するHTML/PHP

<?php

include ('includes/dbConnect.php');

try {

    $pdo = get_database_connection();   

    $sql = "SELECT * 
            FROM `categories`
            WHERE `master_id` = 0";
    $statement = $pdo->query($sql);
    $list = $statement->fetchAll(PDO::FETCH_ASSOC);


} catch(PDOException $e) {
    echo 'There was a problem';
} 

?>

    <select name="main" id="main" size="7" 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="subc1" id="subc1" size="7" class="update" disabled="disabled" hidden="hidden">
        <option value="">----</option>
    </select>
    <select name="subc2" id="subc2" size="7" class="update" disabled="disabled" hidden="hidden">
        <option value="">----</option>
    </select>
    <select name="subc3" id="subc3" size="7" class="update" disabled="disabled" hidden="hidden">
        <option value="">----</option>
    </select>

JS

 <script type="text/javascript">
        $(document).ready(function () {
            $('#main).change(function() {
                  if ($(this).val()!='
            ') {
                    $("#subc1").load("postfile.php",{main_id: $(this).val()});
                    //$("#subc1").removeAttr('
            disabled hidden ');
                  }
                });
                //code on change of sel_source
                $('#subc1 ').change(function() {
                  if ($(this).val()!='
            ') {
                    $("#subc2").load("postfile.php",{subc1_id: $(this).val()});
                    //$("#colour").removeAttr('
            disabled ');
                  }

                });

                $('#subc2 ').change(function() {
                  if ($(this).val()!='
            ') {
                    $("#subc3").load("postfile.php",{subc2_id: $(this).val()});
                    //$("#colour").removeAttr('
            disabled ');
                  }

                });
            });
    </script>

PHP- postfile.php

 if(isset($_REQUEST['main_id']) && !empty($_REQUEST['main_id'])) {

    try {
    include ('../includes/dbConnect.php');

        $pdo = get_database_connection();


        $sql = ("select * from `categories` where id='".$_REQUEST['main_id']."' ");
        $result = $con->prepare($sql); 
        $result->execute(); 
        $number_of_rows = $result->fetchColumn();
    }catch(PDOException $e) {
        echo 'There was a problem';
    } 

        if($number_of_rows > 0) {
            $output = '<option value="">Select</option>';
            while($row = mysql_fetch_assoc($result)) {              
                    $output .= '<option value="'.$row['id'].'">'.$row['name'].'</option>';
            }
        } else {
            $output = '<option value="">Select</option>';
        }
        echo $output;
    } 

    if(isset($_REQUEST['subc1_id']) && !empty($_REQUEST['subc1_id'])) {
        $result = mysql_query("select * from table where id='".$_REQUEST['subc1_id']."' ");
        if($number_of_rows > 0) {
            $output = '<option value="">Select</option>';
            while($row = mysql_fetch_assoc($result)) {              
                    $output .= '<option value="'.$row['id'].'">'.$row['name'].'</option>';
            }
        } else {
            $output = '<option value="">Select</option>';
        }
        echo $output;
    } 

    if(isset($_REQUEST['subc2_id']) && !empty($_REQUEST['subc2_id'])) {
        $result = mysql_query("select * from table where id='".$_REQUEST['subc2_id']."' ");
        if($number_of_rows > 0) {
            $output = '<option value="">Select</option>';
            while($row = mysql_fetch_assoc($result)) {              
                    $output .= '<option value="'.$row['id'].'">'.$row['name'].'</option>';
            }
        } else {
            $output = '<option value="">Select</option>';
        }
        echo $output;
    } 
4

2 に答える 2

0

たぶん、jQueryUIオートコンプリートを使用したいと思うでしょう。使いやすく、コードも少なくて済みます。リモートデータソースもあります。これを試してみてください、多分これはあなたの問題を解決することができます。http://jqueryui.com/demos/autocomplete/

于 2012-07-22T01:15:57.230 に答える
0

送信時のアクションをフォームに追加します。関数では、次を使用します。

var Myvar = $('#subc3 :selected').text();
于 2013-04-29T08:31:10.350 に答える