当前位置: 首页 > 知识库问答 >
问题:

在带有分页的Codeigniter中基于查询显示结果

丁正阳
2023-03-14

我有一张产品表。我需要展示所有的产品。我在不同的条件下获取结果。

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

所有结果都应以分页方式显示。如果我先得到结果就可以了。但是如果我使用分页链接,所有条件数据都将丢失,查询将不带任何条件地获取结果。我如何处理这种情况。请我不需要代码,我需要提示和建议。另一件事是我正在使用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();
}   

共有1个答案

景德海
2023-03-14

我强烈推荐这两个关于codeigniter分页的免费教程-
视频教程,工作示例代码(可能需要将代码更新到CI 2.1),甚至评论中的一些有用信息。

CodeIgniter from Scratch:显示

CodeIgniter from Scratch:没有查询字符串的搜索结果http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-search-results-without-query-strings-2/

 类似资料:
  • 问题内容: 模型内部的方法: 然后,我试图将这些数据传递给控制器​​。控制器上的方法: 当我尝试在视图中列出数据时,出现以下错误: “致命错误:无法将类型为stdClass的对象用作数组” 这是我要列出的方法: 查看文件: 我认为我在观点上做错了。也许我没有正确地将数据传递给视图。有人可以告诉我我做错了吗?谢谢! 问题答案: 应该: 结果集是一个对象,因此每个列名称都是该对象的属性。您正在将它们作

  • 问题内容: 我正在尝试从sql数据库中的php中显示结果,MySQL语句是正确的,并且可以在phpMyAdmin中执行我想要的操作,但是由于某种原因,我的代码在网页中中断了 这是代码 这就是我得到的 通常,我需要由表ID限制从最小值到最大值的随机数 问题答案: 您需要从查询获得的结果集中的每一行中获取数据。您可以为此使用。 将代码更改为此:

  • 这篇文章展示了对DB2中的数据进行分页的一些操作: 在MySQL中,我可以使用 若要获取总行数,请执行以下操作。第一部分很容易在DB2的最新版本中复制。我在Google上找不到任何与第二个查询相当的结果(我不想要临时表、子查询或其他荒谬的低效解决方案)。

  • 问题内容: 我有以下代码: 如果只有一个结果(因为我可以回显)就很好了,但是如果有很多结果,如何使它循环遍历并打印每一行? 我敢肯定这确实很简单,但是我不确定我需要在Google中搜索什么。 我正在寻找与之等效的东西: 问题答案: 只需将其替换为or :) 几乎所有功能都有相应的功能。

  • 我有两种型号: 用户 用户有很多帖子。帖子有很多评论,评论属于帖子。这很简单。 现在我想加载所有的帖子的认证用户与它的评论,如果帖子有评论今天创建。如果帖子今天没有评论,它将不会被加载。这些帖子也将被分页。如何建立查询在laravel雄辩? 我试过这样的方法:

  • 我试图使用查询字符串实现Codeigniter分页,但遇到了一些问题。我已经打开了 因此,使用查询字符串进行分页,但就我所知,当您使用查询字符串进行控制器和方法路由时,这确实是为了工作。然而,在我的情况下,我仍然使用URI段进行路由,但只是想使用查询字符串进行分页、过滤结果、搜索等。当我尝试使用http_build_query()重建的url与查询字符串发送通过它导致per_page(我已重命名为