2012-10-09 67 views
0

我正在處理鏈式選擇下拉,從數據庫中提取數據以填充類別組合框,而子類別組合框填充選擇類別組合框中的選項時。類別下拉框從數據庫中提取數據沒有任何問題,但我有問題獲取子類別合成框從數據庫中選擇基於類別組合框中選擇的選項的「ID」的數據。任何幫助請問?下面是我的PHP代碼而顯示數據我該如何解決這個mysql搜索查詢

<?php 
    include ('../storescripts/connection.php'); 

     function ShowCategory(){ 
    $sql = "SELECT * FROM category"; 
    $res = mysql_query($sql) or die(mysql_error()); 
    $category = '<option value="0">Choose...</option>'; 
    while($row = mysql_fetch_array($res)) 
    { 
     $category .= '<option value = "'.$row['category_id'].'"> '.$row['category_name']. ' </option>'; 
     } 
     return $category; 
    } 

    function ShowSubCategory(){ 
     if (!isset($_POST['id'])) 
     { 
     //If not isset -> set with dumy value 
     $_POST['id'] = ""; 

      } 

     $sql1 = "SELECT * FROM subcategory WHERE category_id = '$_POST[id]'";  
     $res1 = mysql_query($sql1) or die(mysql_error()); 
     $subcategory = '<option value="0"> Choose...</option>'; 
     while($row = mysql_fetch_array($res1)){ 

      $subcategory .= '<option value="'.$row['subcategory_id'].'"> '.$row['subcategory_name'].' </option>'; 

      } 
      return $subcategory; 
     } 

?> 

// jQuery代碼

<script type="text/javascript"> 
$(document).ready(function() { 

$("select#category").change(function(){ 
var id = $("select#category option:selected").attr('value'); 
$.post("select_subcat.php", {id:id}, function(data){ 
    $("select#subcategory").html(data); 
    }); 
}); 

}); 
</script> 
+3

出於好奇:你是用這種方式格式化代碼嗎?你認爲它是可讀的嗎? – Gordon

+2

讓我給你介紹一個叫做[Bobby Tables]的朋友(http://bobby-tables.com/) – DaveRandom

+0

對不起Gordon我在這裏挺新的,所以我仍然在使用代碼格式。 – Unicornese

回答

2

嘗試jQuery代碼來縮小可能是什麼問題。當您進行選擇時,讓PHP將SQL語句打印到頁面上。

然後,您可以將精確的語句提供給MySQL(通過命令行或通過phpmyadmin),並查看是否得到您想要的結果。如果你這樣做,那麼問題就在後面。你看到了什麼?

我會同意以前的海報 - 如果$ _POST ID沒有設置,你填寫「」?這可能不會得到任何結果。

最後一個注意事項:至少在觸摸任何$ _POST或$ _GET變量之前使用mysql_real_escape_string()。否則,您正在打開您的網站達到多次SQL注入攻擊。

+0

我不確定填充$ _POST id的是什麼,因爲實際上我喜歡用類別組合框中選擇的category_id填充它,但我不確定如何解決這個問題。其次,sql語句不起作用我已經嘗試在頁面上打印它 – Unicornese

+0

請注意您現在已經意識到了'mysql_real_escape_string'。你在這裏玩火,你會被燒傷。 – tadman

+0

yes tadman我承認mysql_real_Escape_String – Unicornese