首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我选择视图中的链接时,codeigniter分页链接不起作用?

当我选择视图中的链接时,codeigniter分页链接不起作用?
EN

Stack Overflow用户
提问于 2017-09-22 12:27:58
回答 1查看 249关注 0票数 0

当我单击视图中的链接时,它没有显示任何页面found.can any one help me?还要告诉我为什么这些链接不起作用?数据的显示是可以的。但是用于转到表格的其他页面的链接不起作用。当我点击"1,2,3“页面时找不到。它仍然在同一个地方..我猜是开机自检还是出现问题?

这是我的控制器。

代码语言:javascript
复制
<?PHP
/**
* 
*/
class Search extends MY_Controller
{

    public  function index ()

    {   
        if  ($this->form_validation->run('search') == FALSE)

       {


            $this->load->model('City');
           $deals=$this->City->default_city();
           foreach ($deals as $key) 
           {

                   $city_id=$key->city_id;
                   $city_name=$key->city_name;
                   $city_status=$key->city_status;

           } 



        }

        else

       {


            $city_name=$this->input->post('city_name');
            $this->load->model('City');
            $city_id=$this->City->other_city($city_name);


            foreach ($city_id as $row)

            {
                    $city_id= $row->city_id;
                    $city_name=$row->city_name;
                    $city_status=$row->city_status;


            }
        }   

            $deal_name=$this->input->post('deal_name');
            $data['city_id']=$city_id;
            $data['city_name']=$city_name;
            $data['city_status']=$city_status;
            $this->load->model('Deals');
            $total_deals=$this->Deals->total_deals();
            $config=[
            'base_url' => base_url().'Search',
            'per_page' => 3,
            'total_rows' => $this->Deals->number_rows($deal_name,$city_id,$city_status),
            'uri_segment'=> 2,
            ];
            $this->pagination->initialize($config);

            $user_search=$this->Deals->user_search($deal_name,$city_id,$city_status,$config['per_page'],$this->uri->segment(2));
            $data['links']=$this->pagination->create_links();
            $data['deals']=$user_search;

            $data['total_deals']=$total_deals;
            $total_categories=$this->Deals->total_categories();
            $data['total_categories']=$total_categories;
            for($i=1;$i<=$total_categories;$i++)

            {
                $deals_by_categories[]=$this->Deals->deals_by_categories($i);
            }
            $category_name=$this->Deals->categories();
            //$category_name = json_decode(json_encode($category_name), true);
            $data['category_name']=$category_name;
            $data['deals_by_categories']=$deals_by_categories;
            $this->load->view('page-search',$data);








    }
}
?>

这是我的模型函数

代码语言:javascript
复制
public function user_search($deal_name,$city_id,$city_status,$limit,$offset)  

    {  

           $query= $this->db->select('merchants.merchant_logo,deals.deal_title,deals.deal_description,deals.start_date,deals.end_date,deal_id')
           ->from('deals')
           ->join('merchants_branches', 'deals.branch_id=merchants_branches.branch_id', 'inner')
           ->join('merchants', 'merchants_branches.merchant_id=merchants.merchant_id', 'inner')
           ->join('cities','cities.city_id=merchants_branches.city_id','inner')
           ->where('merchants_branches.city_id',$city_id)
           ->where('cities.city_status',$city_status)
           ->where('deal_status', 1)
           ->like('deals.deal_name',$deal_name)
           ->limit($limit,$offset)
           ->get();
           return $query->result();

    }

     public function number_rows($deal_name,$city_id,$city_status)  

    {  

           $query= $this->db->select('merchants.merchant_logo,deals.deal_title,deals.deal_description,deals.start_date,deals.end_date,deal_id')
           ->from('deals')
           ->join('merchants_branches', 'deals.branch_id=merchants_branches.branch_id', 'inner')
           ->join('merchants', 'merchants_branches.merchant_id=merchants.merchant_id', 'inner')
           ->join('cities','cities.city_id=merchants_branches.city_id','inner')
           ->where('merchants_branches.city_id',$city_id)
           ->where('cities.city_status',$city_status)
           ->where('deal_status', 1)
           ->like('deals.deal_name',$deal_name)
           ->get();
           return $query->num_rows();

    }

这是我的观点

代码语言:javascript
复制
<?php 
                    if(count($deals)):
                    foreach ($deals as $deals) : 
                    date_default_timezone_set("Asia/Dubai");
                    $date=date('Y-m-d H:i:s');
                    $enddate=$deals->end_date;

                    $date = new DateTime($date);

                    $enddate = new DateTime($enddate);

// The diff-methods returns a new DateInterval-object...
                    $diff = $date->diff($enddate);
                    if($date<$enddate):
// Call the format method on the DateInterval-object


                 ?>

                        <a class="col-md-4 model-1" href="<?php echo base_url(); ?>DealDescription/<?php echo $deals->deal_id  ?>/<?php echo $city_status?>">
                            <div class="product-thumb model-2">
                                <header class="product-header">
                                    <img src="<?php echo base_url(); ?>img/logos/<?php echo $deals->merchant_logo ?>" alt="Image Alternative text" title="Food is Pride" />
                                </header>
                                <div class="product-inner">
                                    <h5 class="product-title"><?php echo $deals->deal_title ?></h5>
                                    <p class="product-desciption"><?php echo $deals->deal_description ?></p>
                                    <div class="product-meta"><span class="product-time"><i class="fa fa-clock-o"></i> <?php echo $diff->format('%a Day and %h hours');?></span>
                                        <ul class="product-price-list">
                                            <li><span class="product-price">$118</span>
                                            </li>
                                            <li><span class="product-old-price">$227</span>
                                            </li>
                                            <li><span class="product-save">Save 52%</span>
                                            </li>
                                        </ul>
                                    </div>
                                    <p class="product-location"><i class="fa fa-map-marker"></i> <?php echo $city_name;?></p>
                                </div>
                            </div>
                        </a>


                    <?php else: header('location:'.base_url().'SearchError'); endif; endforeach;?>
                         <?php else: header('location:'.base_url().'SearchError');

                    endif; 
                    ?>
                    <?php echo $links; ?>
EN

回答 1

Stack Overflow用户

发布于 2017-09-22 12:48:40

由于CodeIgniter的工作方式,以及您确实不能在控制器的索引方法中包含URI段的事实,您需要将搜索移动到不同的方法。如果你这样做,这是非常简单的:

代码语言:javascript
复制
public function index()
{
    $this->results();
}

public function results( $page = 1 )
{
     // your code
}

请注意,现在您实际上在URI段3中有了一个页面变量。这一点很重要,因为CodeIgniter将根据配置查找该页面:

代码语言:javascript
复制
$config['uri_segment'] = 3; // You can't use 2!

此外,在CodeIgniter中,使用site_url而不是base_url作为分页base_url是很重要的:

代码语言:javascript
复制
$config['base_url'] = site_url('search/results'); // Do not uppercase "search"

此外,如果你想要一个自然的页面用户体验,你应该使用页码:

代码语言:javascript
复制
$config['use_page_numbers'] = TRUE;

采用这种方法,您仍然需要确定查询偏移量是什么,因为它显然不是页码:

代码语言:javascript
复制
$offset = ( $page * $config['per_page'] ) - $config['per_page'];

此外,请务必阅读有关分页的用户指南页面,因为它非常有用:https://www.codeigniter.com/userguide3/libraries/pagination.html

这应该会让你在任何时间内分页。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46356875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档