0

ゆっくりと PHP を学ぶ道のりの中で、私は動的なドロップダウン ボックスに取り組み、私が働いている小さな会社向けの小さな製品検索アプリケーションを作成することにしました。他の人が動的なドロップダウン ボックスから出した例を 1 日かけて読んだ結果、CSS-Tricksに投稿された方法がクリーンで十分に効率的であると判断しました。

私が抱えている問題は、私が使用しているJavascriptが解析して欲しいものを返していないようだということです. ビルドするはずの MySQL クエリは、(Heidi を介して) データベースに直接クエリを実行するときと、スクリプトを直接ロードするとき (下部で説明) に期待どおりに動作します、JQuery を使用してスクリプトを介してオプションを渡すことはできません。仕事。

これは、スクリプトのテスト/ビルドに使用しているドロップダウンのあるメイン ページです。

<head>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script>
        $("#type").change(function() {
            $("#range").load("dynoptions.php?type=" + $("#type").val());
        }).trigger("change");
    </script>
</head>
<body>
    <select id="type">
        <option selected value="base">Please Select</option>
        <option value="FM800">FM800</option>
        <option value="FS100">FS100</option>
    </select>
    <br>
    <select id="range">
        <option>Please choose from above</option>
    </select>
</body>

最初のドロップダウンの状態が変化すると、JavaScript は情報を PHP に送信し、html を受信して​​ 2 番目のドロップダウンに挿入する必要があります。

そして、これはPHPです:

    <?php
        //creates DB connection
        $dbHost = 'localhost';
        $dbUser = 'foxmeter'; 
        $dbPass = 'foxmeter';
        $dbDatabase = 'foxmeter';
        $con = mysql_connect($dbHost, $dbUser, $dbPass) or trigger_error("Failed to connect to MySQL Server. Error: " . mysql_error());

        $result = array;

        mysql_select_db($dbDatabase) or trigger_error("Failed to connect to database {$dbDatabase}. Error: " . mysql_error());

        //prevents injections
        $choice = mysql_real_escape_string($_GET['type']);

        //forms the query
        $query = "SELECT DISTINCT sio FROM meters WHERE series='$choice' ORDER BY sio";

        $result = mysql_query($query);

        while ($row = mysql_fetch_array($result)) {
            echo "<option>" . $row{'sio'} . "</option>";
        }
    ?>

new.foxmeter.com/dynamic.phpでライブでテストできます。 また、new.foxmeter.com/dynoptionswithselect.php?type=FM800は、PHP スクリプトのバージョンであり、

<select> and </select>

スクリプトが機能していることをテストするために、スクリプトの前後に追加されます。

ありがとう!

4

1 に答える 1