2012-01-18 103 views
0

我想建立一種先進的mySQL搜索 - 在JQuery的幫助下 - 用戶通過選中複選框來查詢數據庫,並勾選複選框時立即更新DIV通過AJAX與結果。一種自動完成但帶有複選框。通過檢查多個複選框並自動更新來查詢MySQL

例如,我有兩個或更多的複選框,因爲這些:

<input type="checkbox" id="Windows" name="system"> Windows 
<input type="checkbox" id="Linux" name="system"> Linux 

如果用戶選中「窗口」 MySQL的立即做(不點擊任何提交按鈕)返回的Windows軟件的列表。如果用戶同時檢查,mySQL應立即返回一個Windows和Linux軟件列表。

下工作正常,一個選擇,但不是兩個:

<div id="update"></div> 

$('input[name=system]').click(function(){ 
    var id=$(this).attr('id'); 
    $.get("review.php", {param: id}, 
     function(data) { 
      $("div#update").html(data); 
     } 
    ); 
}); 

Review.php:

if (isset($_GET['param'])) { 
    $param = $_GET['param']; 
} 
$qry = mysql_query("SELECT * FROM reviews WHERE os = '".$param."' ") or die(mysql_error()); 

謝謝。

回答

1

試試這個:

$('input[name=system]').click(function(){ 

    var ids = []; 
    $('input[name=system]:checked').each(function() { 
     ids.push($(this).attr('id')); 
    }); 
    ids = ids.join(","); 

    $.get("review.php", {param: ids}, 
     function(data) { 
      $("div#update").html(data); 
     } 
    ); 
}); 

而在你的PHP:

if (isset($_GET['param'])) { 
    $param = "('" . str_replace(",", "','", $_GET['param']) . "')"; 
} 
$qry = mysql_query("SELECT * FROM reviews WHERE os IN $param") or die(mysql_error()); 
+0

好極了!它立即起作用。我絕不會自己動手。 – Nicero 2012-01-18 16:06:11

+0

很高興我能幫到你。如果答案對您有幫助,請點擊上方的勾號圖標,將其標記爲已接受的答案。 – techfoobar 2012-01-18 16:33:14

0

您需要爲這兩個檢查盒這將檢查這兩個(全部)值,並創建一個HTTP創建點擊功能請求,如?param=windows,linux

您還需要更新MySQL查詢條件,所以它會看起來像:

$params = explode(',', $param); 
// escape all params (mysql_real_escape_string) 
$condition = 'os IN("' . implode('", "', $params) . '")'; 
$qry = mysql_query("SELECT * FROM reviews WHERE $condition") or die(mysql_error());