2013-02-22 72 views
0

林兩頁的search.php和load.php ......在search.php中我已經複選框和IM使用jquery傳遞複選框load.php查詢選擇複選框有

<div class="checkBoxes"> 
<input type="checkbox" name="art[]" value="1" >Digital Art <br /> 
<input type="checkbox" name="art[]" value="2" >Traditional Art <br /> 
<input type="checkbox" name="art[]" value="3">Photography <br /> 
</div> 


<script language="javascript"> 
$(document).ready(function(e) { 
    $(".btn_advancedsearch").click(function(){ 
     $('#content').fadeIn(1500); 
     $("#content").load("/search/advancedsearch.php?type="+ $("[name='type']:checked").val()+"&category="+$("input[type='checkbox']").val()); 
     window.scroll(0,0); 
    }); 
}); 
</script> 

在load.php即時通訊使用$category=$_REQUEST['category'];現在我想寫查詢獲取所有選擇的類別從複選框,但我不知道如何...我試過這個查詢,但它不工作$sql = "SELECT * FROM art WHERE categoryID IN (implode(',', $category))";

+0

看起來你需要記住動作使用SESSION,但我不喜歡這個解決方案。您可以使用函數來存儲和恢復數據,如設置/取消設置功能。你可以選擇2-3個複選框並在'var_dump($ _ REQUEST ['category'])''上顯示結果嗎? – 2013-02-22 02:06:23

+0

總是得到字符串(1)「1」 – John 2013-02-22 02:13:34

+0

如果您始終獲得「1」,則表示您沒有收到正確的數據。你應該收到一些轉儲數據... – 2013-02-22 02:17:10

回答

0

這是因爲$("[name='type']:checked").val()將返回數組對象,你不能直接通過這個作爲查詢字符串參數。執行以下步驟
1.獲取選定的複選框值,並將它們逗號分隔在一個變量中(使用單引號,這樣可以直接在查詢中使用)_eg。 '1','2','3'
2.通過查詢字符串傳遞此值
3.在您的選擇查詢中使用此值 - 因爲您使用的是in運算符,所以您可以直接將此值作爲select * from table name where col in (valueYouReceived)

代碼:
某處在JS - 當你點擊按鈕$(".btn_advancedsearch").click(function(){

... 
... 
var selectedValues = "'"; 
$('input[type=checkbox]').each(function() { 
    if($(this).prop('checked')) 
    { 
    selectedValues += $(this).val()+"',"; 
    } 
}); 
selectedValues = selectedValues.substring(0, selectedValues.length-1); // To remove last comma (,) 

只是 「警報()」 的值,看看你會得到什麼alert(selectedValues)

現在把這個變量作爲查詢參數

$("#content").load("/search/advancedsearch.php?type="+selectedValues+"&category="+$("input[type='checkbox']").val()); 

在PHP的一部分得到的值作爲你得到它

$category=$_REQUEST['category']; 

在使用SQL查詢該值

"SELECT * FROM art WHERE categoryID IN ($category)"; 

希望這有助於!

0

好的,找到解決方案。我不知道代碼,但你可以改變,有些把這個:

jQuery(document).ready(function($) { 
    $(":checkbox").bind("click", function(event) { 
    if ($(this).is(':checked')) { 
     var checked = $(this).val(); 
     $(".btn_advancedsearch").hide(); 
     $("#content").load('/search/advancedsearch.php?type=' + checked); 
     $('#content').fadeIn(1500); 
     window.scroll(0,0); 
    } 
    }); 
});​ 
+0

'var checked = $(this).val();' 這將只獲得第一個複選框的值。 – asifsid88 2013-02-22 05:00:04