我想創建一個動態過濾系統,使用與CodeIgniter的AJAX & jQuery。CodeIgniter/jQuery數據庫過濾系統
我有一個從我的數據庫中拉出的項目列表,以及用於過濾這些項目的複選框列表。 我希望能夠選擇多個複選框,以允許使用各種過濾器。
當單擊過濾器複選框時,我會序列化表單,但我不確定如何將它傳遞給codeigniter以及如何處理它。 到目前爲止,我已經嘗試過,將查詢字符串中的序列化數據。
$('#filter input').bind('change', function(){
var f = $('#filter').serialize();
$('#list').load('http://localhost/testing/filter?'+f);
});
我的序列化表單返回以下內容,對應於過濾器複選框。
cat_0=1&cat_1=1
在CodeIgniter中,我可以很容易地創建這個sql查詢,查詢數據庫並返回與過濾器匹配的項目。
SELECT * FROM `items` WHERE `category` ='0' OR `category` ='1'
我想我的主要問題是從我的序列化表單獲取類別信息CodeIgniter。或者還有另一種更有效的過濾方法。 任何幫助將不勝感激。由於
編輯
我的問題是不接受查詢字符串,它是如何在CI處理。我最終這樣做了。這是非常混亂,所以如果任何人都可以看到改善,請讓我知道。謝謝
我剛剛建立一個SQL查詢使用收到的查詢字符串中的類別。
function filter(){
if($this->input->get('cat_0', true)) {
$a[] = " OR `category` = '0'";
}
if($this->input->get('cat_1', true)) {
$a[] = " OR `category` = '1'";
}
if($this->input->get('cat_2', true)) {
$a[] = " OR `category` = '2'";
}
if($this->input->get('cat_3', true)) {
$a[] = " OR `category` = '3'";
}
if($this->input->get('cat_4', true)) {
$a[] = " OR `category` = '4'";
}
if($this->input->get('cat_5', true)) {
$a[] = " OR `category` = '5'";
}
if($this->input->get('cat_6', true)) {
$a[] = " OR `category` = '6'";
}
if(!isset($a)){
echo "no items";
} else {
$sql = 'SELECT * FROM `items` WHERE ';
$a[0] = str_replace(" OR ", "", $a[0]); //remove 'OR' from first
foreach($a as $b){
$sql = $sql.$b;
}
echo "<pre>";
print_r($this->db->query($sql)->result());
echo "</pre>";
}
}
編輯部分II
我回來到這個問題,我現在需要用戶名檢查添加到查詢。我已經嘗試了以下機智,現在運氣。
function filter(){
$this->db->where('username', $this->ion_auth->profile()->username);
foreach($_GET as $key=>$value){
if($value == 1){
$key = explode('_', $key);
$this->db->or_where('cat', $key[1]);
}
}
print_r($this->db->get('items')->result());
}
這是我需要創建並在我的數據庫中工作的SQL語句。
SELECT * FROM `items` WHERE `username` = 'tmp_username' AND `cat` = '0' OR `cat` = '6';
因爲我沒有在該網址中看到index.php,我假設你正在運行.htaccess並將其從網址中刪除? – jondavidjohn 2011-01-27 02:35:25