1

私は2つの選択リストを持っています。1つは製品の命名、もう1つは数量用です。

<select name="fish" id="fish">
    <option value="blueFish">Blue Fish</option>
    <option value="redFish">Red Fish</option>
    <option value="pinkFish">Pink Fish</option>
    <option value="greenFish">Green Fish</option>
</select>

<select name="numFish" id="numFish">
    <option value="0">0</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
   <option value="6">6</option>
</select>

製品を選択すると、それに応じてデータベースから対応する数量が設定されるようにしたいと思います。

したがって、顧客のビリーがピンクの魚を5つ購入したという記録がある場合、ピンクの魚を選択すると、数量選択リストが5に変わります。

これは、MySQLデータベースを使用するPHPフォームで使用するためのものです。

そのような機能は可能ですか?もしそうなら、どうすればそれを実行できますか?

4

2 に答える 2

2

ajaxリクエストをグーグルで検索することをお勧めします。それが行うことは、javascriptを介して(あなたの場合)変更を検出し、選択した値を別のphpスクリプトに送信します。このスクリプトは、SQLクエリを実行して数量を返します。ajaxリクエストは戻り値をキャッチし、javascriptを介してselectドロップダウンから値を再度変更します。

これはすべてバックグラウンドで発生し、サイトは更新されません。

javascriptにあまり慣れていない場合は、jqueryフレームワークを確認できます。これにより、このタスクが少し簡単になり、多くの例が文書化されています。

javascript / jquery / ajaxに慣れていないことを前提としているため、コードを貼り付けませんでした。ドキュメントを少し読んで少し遊んで、具体的な問題が発生したときに戻ってきてください。これは、Stackoverflowの通常のワークフローです。

編集:(OPによって要求されたいくつかのコード)Javascript:

$('#fish').change(function(){
    var fishType = $('#fish select option:selected');
    $.ajax("getQuantity.php", {fish: fishType}, function(data){
        data = JSON.parse(data);
        if(data.status == "OK"){
            var quantity = data.quantity;
            $('#numFish option[value='+quantity+']').prop("selected", true);
        } else {
            alert("error");// or console.log(), whatever you prefer
        }
    }
});

php(getQuantity.php):

<?php
    $fish = $_POST['fish']; //getting the fish type
    $sql = "your SQL to select the fish quantity for that type";
    $result = mysqli_query($mysqli, $sql);

    if(mysqli_num_rows($result)>0){
        $row = mysqli_fetch_assoc($result);
        $data = array("status" => "OK", "quantity" => $row['quantity']); // you can just output a string with the number if you want, but this way you have more control and better debugging.
        echo json_encode($data);
    }
?>

これは基本的なコードですが、データベースのエラーをキャッチするか、別のステータスを返す必要があります。しかし、基本的にはそれだけです。私はそのコードをテストしていなかったので、ガイドラインとしてのみ使用してください。

于 2012-11-26T11:33:47.263 に答える
0

<select name="fish" id="fish">に変更<select name="fish" id="fish" onchange="getQuantity(this.value);">

javascriptで次の関数を宣言します。

function getQuantity( o ) {
   // get the quantity from the database using ajax,
   // and set the quantity dropdown here.
}
于 2012-11-26T11:44:11.663 に答える