私は、CodeIgniter & jQueryでajaxを使用して動的フィルタシステムを作成しようとしています。CodeIgniter/jQueryデータベースフィルタシステム
私のデータベースから取得したアイテムのリストと、これらのアイテムをフィルタするためのチェックボックスのリストがあります。 複数のチェックボックスを選択して、さまざまなフィルタを使用できるようにしたいと考えています。
フィルターチェックボックスをクリックすると、フォームをシリアル化しますが、これをコードシグニチャーに渡す方法と対処方法がわかりません。 これまで、私はこれを試して、シリアル化されたデータをクエリ文字列に渡しました。
$('#filter input').bind('change', function(){
var f = $('#filter').serialize();
$('#list').load('http://localhost/testing/filter?'+f);
});
私のシリアル化されたフォームは、フィルタのチェックボックスに対応して以下を返します。 CodeIgniterので
cat_0=1&cat_1=1
私は簡単にデータベースを照会し、フィルタに一致する項目を返し、このSQLクエリを作成することができます。
SELECT * FROM `items` WHERE `category` ='0' OR `category` ='1'
私の主な問題は、シリアル化されたフォームからCodeIgniterにカテゴリ情報を取得していることでしょう。または、フィルタリングのもう1つの効率的な方法があります。 ご協力いただければ幸いです。私の問題は、クエリ文字列を受け取っていなかったおかげで
EDIT
は、それは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>";
}
}
EDIT PART 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';
、私はあなたが.htaccessファイルを実行すると、URLからそれを削除していると仮定していますか? – jondavidjohn