sql >> データベース >  >> RDS >> Mysql

州の複数選択リストボックスが別のリストボックス(Php、mysql、ajax)のすべての都市を表示していない

    これは、mysqlクエリが間違っているためです。単純な等しい数で複数の数値を提供します。

    それは次のようになります:

    $g = $_GET['g'];    
    $sql="SELECT * FROM city WHERE state_id IN (".$g.")";
    $result = mysqli_query($con,$sql);
    

    $ gが数字のコンマ区切りリストである場合。そうでない場合は、そうする必要があります。

    したがって、$ gが配列の場合は、その配列に対してimplode()を実行する必要があり、クエリで使用するよりも

    $g = $_GET['g'];    
    $g = implode(',', $g);
    $sql="SELECT * FROM city WHERE state_id IN (".$g.")";
    $result = mysqli_query($con,$sql);
    

    文字列で、スペースをコンマに置き換えるよりも、数字がスペースで区切られているとしましょう。

    $g = $_GET['g'];    
    $g = str_replace(' ', ',', $g);
    $sql="SELECT * FROM city WHERE state_id IN (".$g.")";
    $result = mysqli_query($con,$sql);
    

    したがって、あなたの場合、MySQLクエリは次のようになります:

    $sql="SELECT * FROM state WHERE country_id = '".$q."'";
    $result = mysqli_query($con,$sql);
        echo "<select name='try[]' onchange='showSecondUser(this)' multiple>";
        //                            there is a change here ^
        while($row = mysqli_fetch_array($result)){
           echo "<option value='".$row['id']."'>".$row['state_name']."</option>";
        }
        echo" </select>";
    /*######################################################*/
    $g = $_GET['g'];    
    $sql="SELECT * FROM city WHERE state_id IN (".$g.")";
    $result = mysqli_query($con,$sql);
    

    そして、JavaScriptは次のようになります:

    function showSecondUser(str){
        var xmlhttp;
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
                document.getElementById("txtHint2").innerHTML = xmlhttp.responseText;
            }
        }
    
        var values = new Array();
        for (var i=0; i < str.options.length; i++) {
            cur = sel.options[i];
            if (cur.selected) {
                values.push(cur.value);
            }
        }
        if (values.length) {
            values = values.join(",");
        } else {
            values = null;
        }
    
        xmlhttp.open("GET","loadData.php?g="+values,true);
        xmlhttp.send();
    }
    



    1. Pythonプログラムを実行するたびに新しい列を追加する方法

    2. GiSTとGINインデックスの違い

    3. mysqli ::query():mysqliをフェッチできませんでした

    4. NULL値との比較