1

商品の表があります。すべての商品を表示する必要があります。さまざまな条件で結果を取得しています。

create table `products` (
    `id` double ,
    `category_id` double ,
    `subcategory_id` double ,
    `product_name` varchar (765),
    `product_description` varchar (765),
    `product_viewed` varchar (765),
    `sale_wanted` tinyint (2),
    `added_date` datetime ,
    `updated_date` datetime ,
); 

このような結果を表示する必要があります

1. The latest products (use of added date)
2. Most Wanted (Sorting by sale_wanted 1 for sale , 2 for wanted)
3. Most Viewed (Sorting by product_viewed)
4. Sorting by Specific Subcategory

すべての結果がページネーション付きで表示されます。最初に結果が得られれば、これで問題ありません。しかし、ページネーション リンクを使用すると、すべての条件データが失われ、クエリは条件なしで結果を取得します。どうすればこの状況を管理できますか。ヒントや提案が必要なコードは必要ありません。もう 1 つは、Codeigniter のページネーション クラスを使用していることです。

編集済み

ここに私が使用している私のモデルメソッドがあります

public function getProductsList($per_page=5,$page=0)
{
    $info   =   $this->input->post();

    if(isset($info['type']))
    {
        $type   =   $info['type'];

        if($type == 'most_wanted'){
            $where      =   " AND sale_wanted = 1";
            $order_by   =   " ORDER BY ldc.added_date desc";
        }else if($type == 'most_viewed'){
            $where      =   " ";
            $order_by   =   " ORDER BY ldc.product_viewed desc";            
        }else{
            $where      =   " ";
            $order_by   =   " ORDER BY ldc.added_date desc";                
        }
    }else if(isset($info['sale_wanted'])   AND isset($info['subcategory_id'])){
        $sale_wanted        =   $info['sale_wanted'];
        $subcategory_id =   $info['subcategory_id'];
        $where      =   " AND sale_wanted = $sale_wanted AND ldc.subcategory_id = $subcategory_id";
        $order_by   =   " ORDER BY  ldc.added_date desc";   
    }else if(isset($info['keyword'])){
            $keyword    =   $info['keyword'];
            $search_type    =   $info['search_type'];
            $where      =   " AND ldc.$search_type like '$keyword%'";
            $order_by   =   " ";        
    }else{
            $where      =   " ";
            $order_by   =   " ";            
    }           

    $num    =   0;

    if($page != 0){
        $num    =   ($page * $per_page) - $per_page;
    }


    $sql_query  =   "
                SELECT 
                    ldc.id,
                    ldc.product_name,
                    ldc.product_viewed,
                    DATE_FORMAT(ldc.added_date, '%m/%d/%Y') as added_date,
                    ifnull(dc.name,'Unknown') as category,
                    dpi.product_image           
                FROM default_products AS ldc
                LEFT JOIN default_manufacturers as dm ON dm.id = ldc.manufacturer
                LEFT JOIN default_category as dc ON dc.category_id = ldc.category_id
                LEFT JOIN ((select product_id , product_image from default_product_images group by product_id) as dpi)
                    ON dpi.product_id = ldc.id
                WHERE   approved = 1
                $where
                $order_by
                LIMIT $num,$per_page
        ";

    $query  =   $this->db->query($sql_query);
    return  $query->result();
}   
4

1 に答える 1

1

codeigniter のページネーションに関するこれら 2 つの無料チュートリアル -
ビデオ チュートリアル、実際のサンプル コード (コードを CI 2.1 に更新する必要がある場合があります)、およびコメント内のいくつかの役立つ情報を強くお勧めします。

スクラッチからの CodeIgniter: 表形式データの表示と並べ替え http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-displaying-sorting-tabular-data/

CodeIgniter from Scratch: クエリ文字列なしの検索結果 http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-search-results-without-query-strings-2/

于 2012-11-20T18:29:29.333 に答える