簡體   English   中英

如何在php,mysqli中保存兩個動態依賴選擇框的值

[英]how to hold values of two dynamic dependent select boxes in php , mysqli

我正在為此構建一個新的Web應用程序,稱為存儲定位器,我需要通過從屬選擇框過濾單個表中包含的sql數據,並在表中顯示存儲地址。 問題是我無法同時為SQL查詢保存兩個選擇框的值

這是我的index.php代碼

    <?php
require 'dbconn/dbconfig.php';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<meta name="description" content="">
    <title>store SEARCH </title>
</head>
<body>
<form name="form1" action="" method="post">

<table>

<tr>
    <td>Select store</td>
    <td>
        <select id="storeid" onchange="change_store()">
            <option>Select store</option>
            <?php
            $res=mysqli_query($db,"SELECT DISTINCT `STORE` FROM `master` ORDER BY `STORE` ASC");
            while ($row=mysqli_fetch_array($res)) {
                ?>
                <option value="<?php echo $row['STORE']; ?>"><?php echo $row['STORE'];?></option>
                <?php



            }
            ?>

        </select>
    </td>
</tr>
<tr>
    <td>Select State</td>
    <td>
        <div onchange="change_state()">
        <select id="statedd" >
            <option>select State</option>

        </select>

        </div>
    </td>
</tr>
<tr>
    <td>Select District </td>
    <td>
        <div onchange="change_district()">
        <select id="districtdd">
            <option>select District</option>
        </select>

        </div>
    </td>
</tr>
<tr>
    <td>Select City </td>
    <td>
        <div onchange="change_city()">
        <select id="citydd">
            <option>select City</option>
        </select>

        </div>
    </td>
</tr>
<tr>
    <td>Select Branch </td>
    <td>
        <div>
        <select id="branchdd">
            <option>select Branch</option>
        </select>

        </div>
    </td>
</tr>
</table>

</form>




<script type="text/javascript">
    function change_store() {
        var xmlhttp=new XMLHttpRequest();
        xmlhttp.open("GET","ajax.php?store="+document.getElementById("storeid").value,false);

        xmlhttp.send(null);

        document.getElementById("statedd").innerHTML=xmlhttp.responseText;


    }
    function change_state() {
        var xmlhttp=new XMLHttpRequest();
        xmlhttp.open("GET","ajax.php?state="+document.getElementById("stateid").value,false);

        xmlhttp.send(null);

        document.getElementById("districtdd").innerHTML=xmlhttp.responseText;
        alert(xmlhttp.responseText);

    }
    function change_district() {
        var xmlhttp=new XMLHttpRequest();
        xmlhttp.open("GET","ajax.php?district="+document.getElementById("districtid").value,false);

        xmlhttp.send(null);

        document.getElementById("citydd").innerHTML=xmlhttp.responseText;


    }
    function change_city() {
        var xmlhttp=new XMLHttpRequest();
        xmlhttp.open("GET","ajax.php?city="+document.getElementById("cityid").value,false);

        xmlhttp.send(null);

        document.getElementById("branchdd").innerHTML=xmlhttp.responseText;


    }


</script>
</body>
</html>

這是我的ajax.php

    <?php
include 'dbconn/dbconfig.php';
?>
<?php
$store=$_GET["store"];
$state=$_GET["state"];

if($store!='')
{
$res=mysqli_query($db, "SELECT DISTINCT `STATE` FROM `master` WHERE `STORE`='$store' ORDER BY `STATE` ASC");
echo "<select id='stateid' onchange='change_state()'>";
while ($row=mysqli_fetch_array($res)) {


    echo "<option value=".$row['STATE'].">".$row['STATE']."</option>";
    }
echo "</select>";
}

if($state!='')
{
$res=mysqli_query($db, "SELECT DISTINCT `DISTRICT` FROM `master` WHERE `STATE` LIKE '$state%' AND `STORE`='$store' ORDER BY `DISTRICT` ASC");
echo "<select id='districtid' onchange='change_district()'>";
while ($row=mysqli_fetch_array($res)) {
    echo "<option value=".$row['DISTRICT'].">".$row["DISTRICT"]."</option>";

}
echo "</select>";

}

?>

這是我的輸出

在更改狀態時,它不處理選擇框控制台中的列表區域,顯示錯誤是

注意:未定義的索引:存儲在第5行的C:\\ xampp \\ htdocs \\ ifsctech \\ ajax.php中

問題是所選存儲值無法用於下一個查詢處理。 如何保存和發送兩個選擇框的動態值以處理查詢,請幫助

這似乎是問題所在

xmlhttp.open("GET","ajax.php?store="+document.getElementById("storeid").value,false);

不贊成在主線程上使用同步XMLHttpRequest,因為它會對最終用戶的體驗產生不利影響。 如需更多幫助,請訪問https://xhr.spec.whatwg.org/

甚至我也在同一個問題上掙扎。 我發現的內容也可能對您有所幫助。 我將分享對我有用的東西。 您可以參考它。

<?php
//index.php
function load_state()
{
    $connect = mysqli_connect("localhost", "root", "","state_city");
    $output = '';
    $sql = "SELECT * FROM state ORDER BY state_name";
    $result = mysqli_query($connect, $sql);
    while($row = mysqli_fetch_array($result))
        {
            $output .= '<option value="'.$row["state_id"].'">'.$row["state_name"].'</option>'; 
        }
        return $output;
}
?>
<!DOCTYPE html>
<html>
 <head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  <!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>-->
 </head>
 <body>
  <br /><br />
  <div class="container" style="width:600px;">
   <h2 align="center">Dependent Drop-Down using Ajax - for Testing</h2><br /><br />
   <select name="state" id="state" class="form-control action">
    <option value="">Select State</option>
    <?php echo load_state(); ?>
   </select>
   <br />
   <select name="city" id="city" class="form-control">
    <option value="">Select City</option>
   </select>
  </div>
 </body>
</html>

<script>  
$(document).ready(function(){               
  $('#state').change(function(){  
       var state_id = $(this).val();  
       $.ajax({  
            url:"fetch.php",  
            method:"POST",  
            data:{stateId:state_id},
            dataType:"text",
            success:function(data)
            {  
                 $('#city').html(data);  
            }  
       });  
    });  
});
</script>

PHP代碼

<?php
//fetch.php
$connect = mysqli_connect("localhost", "root", "", "state_city");
$output = '';
$sql = "SELECT * FROM city WHERE state_id = '".$_POST["stateId"]."' ORDER BY city_name";
$result = mysqli_query($connect, $sql);
$output = '<option value="">Select City</option>';
while($row = mysqli_fetch_array($result))
{
    $output .= '<option value="'.$row["city_id"].'">'.$row["city_name"].'</option>';
}
echo $output;
?>

需要考慮的幾點:

  • 對於本地主機,您的數據庫應具有所有依賴表(db = state_city和tb = state,在我的示例中為tb = city)。 如果您在本地主機上有不同的數據庫,它將無法正常工作。
  • 但是,此關系也適用於不同數據庫上的Apache Hosting Server。
  • tb =狀態[列= state_id,state_name] =>主鍵:state_id
  • tb =城市[列= city_id,state_id,city_name] =>主鍵:
    city_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM