2015-09-03 167 views
3

我想從基於另一個組合框的組合框中的mysql中獲取數據。它根據選擇獲取數據。 但問題是我並沒有以適當的方式得到結果數據。組合框不是作爲組合框填充,但像文本

enter image description here

,另一個問題是,我想在頁面加載時要顯示的數據也不僅當我改變選擇。 當頁面加載時不顯示任何測試名稱但改變後顯示。 enter image description here

請大家幫忙。非常感謝

的.js代碼:

<script type="text/javascript"> 
$(document).ready(function() 
{ 
$(".country").change(function() 
{ 
var id=$(this).val(); 
var dataString = 'id='+ id; 

$.ajax 
({ 
type: "POST", 
url: "ajax_city.php", 
data: dataString, 
cache: false, 
success: function(html) 
{ 
$(".city").html(html); 
} 
}); 

}); 
}); 
</script> 

的index.php:

<html> 
<head> 
<script src="assets-global/js/getdata/jquery.min.js"></script> 
</head> 
<body> 
<select name="country" class="country" style="width:625px;"> 
     <?php 
     include('con_pick.php'); 
     $query = "select * from main_cats"; 
     $results = mysql_query($query); 

     while ($rows = mysql_fetch_assoc($results)) 
     { 
     $idc = $rows['id']; 
     $q_selected_cat = mysql_query("SELECT mcat_id FROM questions WHERE mcat_id='$mcat_id' "); 
     $category = mysql_fetch_assoc($q_selected_cat); 
     $selected_category = $category['mcat_id']; 
     if($idc == $selected_category){ 
     ?> 
      <option selected value="<?php echo $rows['id'];?>"><?php echo $rows['unique_name'];?></option> 
     <?php }else{ ?> 
     <option value="<?php echo $rows['id'];?>"><?php echo $rows['unique_name'];?></option> 
     <?php } } ?> 
</select> 
<select name="city" class="city"></select> 
</body> 
</html> 

ajax_city.php:

<?php 
include('con_pick.php'); 
if($_POST['id']) 
{ 
$id=$_POST['id']; 


$q_all_categories1 = mysql_query("SELECT * FROM tests where mcat_id=$id"); 
while ($all_categories1 = mysql_fetch_array($q_all_categories1)) 
{ 
    $category_id1 = $all_categories1['id']; 
    $categories_name1 = $all_categories1['unique_name']; 

    $q_selected_cat1 = mysql_query("SELECT test_id FROM questions WHERE test_id=$test_id and id =$cats_id "); 

    $selected1 = ""; 
    while ($category1 = mysql_fetch_array($q_selected_cat1)) 
    { 
     $selected_category1 = $category1['test_id']; 
     if($category_id1 == $selected_category1){$selected1 = "selected";} 
    } 
    print "<option class='' ".$selected1." value='".$category_id1."'>".$categories_name1."</option>"; 
    $selected1 = ""; 
} 

} 

?> 

回答

0

你的第一個問題: 你的截圖(約類別會談)似乎不符合代碼(談論國家)。 看來你缺少從index.php的「城市」,所以補充說:

<select name="city" class="city"></select> 

此外,我會在你的Ajax調用使用數據:

data: { 
    'id': id 
}, 

是否如預期般的東西不工作,嘗試console.log(你的結果)。它可能是PHP腳本發出警告或超時?

您的第二個問題: 加載頁面後,您可以調用change()事件 - 就好像用戶導致了更改。從這裏:https://api.jquery.com/change/

手動觸發事件,應用.change()不帶參數

另外: 您的ajax_city.php代碼不驗證其輸入,但把它變直SQL服務器。設想$ _POST ['id']是這樣的文本:「0; DROP TABLE測試;」 - 你會失去你的桌子。在$ _POST ['id']之前的一個簡單的(int)會阻止(但是在SQL注入中讀取)。

+0

抱歉錯誤沒有粘貼現在編輯的城市的其他選擇。 如果你編輯我的代碼並重新發布它,你會如此友善嗎? –

+1

你可以看看這個小提琴:https://jsfiddle.net/bubgym6e/ –

+0

@赫伯特範弗利特謝謝你的迴應。但我無法弄清楚,當我試圖用這與MySQL它沒有得到的數據。請看我的代碼,如果你可以配置一切與我的代碼,並儘可能工作,如果可能的話......非常感謝提前 –