Codeigniter - >控制器内部有2个变量

时间:2014-07-18 01:14:11

标签: mysql codeigniter codeigniter-url codeigniter-routing

我正在尝试在我的网站上设置过滤器。在这里,我试图传递(2)变量(邻域和业务类别)。我的问题是只有(1)是真的而另一个是假的或者一个变量不存在。我正在尝试从我的网址中提取此数据

mydomain.com/controller/function/neighbrohood/biz-category

翻译

mydomain.com/ny/find/$neighborhood/$biz_filter

当我有两个变量时,就没有问题了。

如何解决只有2个变量中的1个的页面?

这是我的模特:

    public function search($neighborhood = null, $biz_filter = null) {

    $neighborhood = $this->uri->segment(3);
    $biz_filter = $this->uri->segment(4);

    // SELECT
    $this->db->select('*');

    // MAIN TABLE TO GRAB DATA
    $this->db->from('biz');

    // TABLES TO JOIN
    $this->db->join('city', 'city.city_id = biz.biz_cityID');
    $this->db->join('zip', 'zip.zip_id = biz.biz_zipID', 'zip.zip_cityID = city.city_id');
    $this->db->join('state', 'state.state_id = city.city_stateID');
    $this->db->join('neighborhood', 'biz.biz_neighborhoodID = neighborhood.neighborhood_id');
    $this->db->join('biz_filter', 'biz_filter.bizfilter_bizID = biz.biz_id');
    $this->db->join('biz_category', 'biz_filter.bizfilter_bizcategoryID = biz_category.bizcategory_id');

    // RETURN VARIABLES
    $this->db->where('neighborhood.neighborhood_slug', $neighborhood);      
    $this->db->where('biz_category.bizcategory_slug', $biz_filter);

    // ORDER OF THE RESULTS
    $this->db->order_by('biz_name asc');

    // RUN QUERY
    $query = $this->db->get();

    // IF MORE THAN 0 ROWS ELSE DISPLAY 404 ERROR PAGE
    if($query->num_rows() > 0){
        return $query;

    } else {
        show_404('page');

    }

}

实施例。我想在小意大利找一家餐馆:

网址= mydomain.com/ny/find/little-italy/restuarants

这部分,我可以正确解析查询并显示数据。问题是当没有社区或没有类别时,我无法弄清楚如何解决数据。

我是codeigniter的新手,也是一位自学成才的程序员,在我走的时候试图解决这个问题。任何帮助将不胜感激。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

首先,从uri

获取变量是可选的
$neighborhood = $this->uri->segment(3);
$biz_filter = $this->uri->segment(4);

你已经从函数参数中得到了它。

您可以查看$ neighborhood或$ biz_filter可用的条件,然后您可以在查询中使用条件。

像这样的东西

if($neighborhood) { // query for neighborhood } elseif($biz_filter) {}

由于

答案 1 :(得分:0)

首先,您应该从控制器获取变量值而不是模型,然后应该从模型中将这些值传递给控制器​​,这是一种错误的编码实践,允许您的视图与模型进行交互。

另外,如果你想要一个" - "为变量设置。你应该设置" - "作为从传递给控制器​​的参数的返回值。

你应该做的是转到你的控制器并给它两个参数,为它们设置默认值,同时转到你的模型并让它接收两个参数,从控制器调用时将参数传递给模型。如果还有其他错误,请回来。