我想创建一个动态过滤系统,使用与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