2014-07-06 80 views
-1

基于上一个下拉选择可以从数据库获取数据吗?基于上一个选择的jquery下拉选项

例如:

<select id="paramscountries" class="chzn-done" style="display: none;" name="params[countries][]" multiple="true" size="10"> 
    <option value="1">Afghanistan</option> 
    <option value="2">Albania</option> 
    <option value="3">Algeria</option> 
    <option value="4">USA</option> 
</select> 

如果我从上面的列表中选择美国就会进行查询&得到所有国家的数据库名。例如来自states.php &将在另一个下拉选择中显示所有状态名称而不重新加载该页面。

+0

'是否有可能根据前面的下拉选择从数据库中获取数据?答案='是的# –

+0

谢谢,但我该如何做这样的列表? – jibon57

+0

在这里描述的方式太多了,我建议你学习AJAX,它可以在不重新加载页面的情况下与后端(PHP/MySQL)进行通信,然后使用jQuery/Javascript来处理返回的值并创建/填充第二阶段下拉列表。 –

回答

3

竟被你d需要使用Javascript或jQuery来使用它,并使用它发布到将返回结果的页面。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

<select id="paramscountries" class="chzn-done" style="display: block;" onchange="getNewList($(this).val());" name="params[countries][]" multiple="true" size="10"> 
    <option value="1">Afghanistan</option> 
    <option value="2">Albania</option> 
    <option value="3">Algeria</option> 
    <option value="4">USA</option> 
</select> 

<select name="states" id="states"> 
</select> 

<script type="text/javascript"> 
function getNewList(country) { 
    $.post('post.api.php', {'api': 'getStates', 'countries': country}, function(response) { 
     var obj = $.pareseJSON(response); 
     $('#states').html(obj.states); 
    }); 
} 

post.api.php页

<?php 

if(isset($_POST['api'])){ 

    if($_POST['api'] == 'getStates'){ 

     // sdet the countries array to a variable 
     $countries = $_POST['countries']; 

     // set a variable to hold the results 
     $results = array(); 

     // query your db 
     $stm = $db->prepare('SELECT * FROM `your_database` WHERE `country` IN("'.implode('","', $countries).'")'); 
     $stm->execute(); 
     if($stm->rowCount() > 0){ 
      foreach($stm->fetchAll(PDO::FETCH_ASSOC) as $row){ 
       $results['states'] .= '<option value="'.$row['stateName'].'">'.$row['stateName'].'</option>'; 
      } 
     }    
     echo json_encode($results); 
    } 

} 

我会做这样的事情。希望这里有足够的空间让你滚动。

+0

非常感谢。但是我已经有php文件了,发送JSON已经是这样了:{“222”:[{“virtuemart_state_id”:“65”,“virtuemart_vendor_id”:“1”,“virtuemart_country_id”:“222”,“virtuemart_worldzone_id”:“0 “ ”STATE_NAME“: ”英国“},{ ”virtuemart_state_id“: ”66“, ”virtuemart_vendor_id“: ”1“, ”virtuemart_country_id“: ”222“, ”virtuemart_worldzone_id“: ”0“, ”STATE_NAME“:” 北爱尔兰“}]}我想用virtmart_state_id&state_name进行下拉。 – jibon57

+0

您可以使用jQuery将json转换为对象。使用var obj = $ .parseJSON(response);如我上面的示例所示。那么你可以遍历该对象并访问你需要的2个字段$ .each(obj,function(i,v){console.log(v.virtuemart_state_id);}); –

1

尝试使用jquery ajax请求。像这样

jQuery的

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $('#paramscountries').change(function(){ 
     $.ajax({ 
      url: 'states.php' 
      ,data:{val: $(this).val()} 
      ,dataType:'json' 
      ,type: 'POST' 
      ,success:function(data){ 
       for(var i = 0; i < data.length; i++){ 
        var dropDownValue = '<option value="'+ data[i] +'">'+ data[i] +'</option>' 
        $('#secondDropDownList').append(dropDownValue); 
       } 
      } 
     }); 
    }); 
}); 
</script> 

在states.php

$con=mysqli_connect("localhost","user","password","db_Name"); 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
if(isset($POST['val'])){ 
$var = $_POST['val']; 
$result = mysqli_query($con,"SELECT * FROM table_name WHERE table_column_name = '$var'"); 
$arr = array(); 
while($row = mysqli_fetch_array($result)) { 
    $arr[] = $row['name']; 
} 
echo json_encode($arr); 
} 
mysqli_close($con); 

在HTML

<select id="secondDropDownList"></select> 
+0

谢谢。但是,如果格式如下所示,我如何检索virtmart_state_id和state_name:{“222”:[{“virtuemart_state_id”:“65”,“virtuemart_vendor_id”:“1”,“virtuemart_country_id”:“222”,“virtuemart_worldzone_id”: “0”, “STATE_NAME”: “英国”},{ “virtuemart_state_id”: “66”, “virtuemart_vendor_id”: “1”, “virtuemart_country_id”: “222”, “virtuemart_worldzone_id”: “0”, “STATE_NAME”: “Northern Ireland”}]} – jibon57

相关问题