我正在尝试在我的网站上设置过滤器。在这里,我试图传递(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的新手,也是一位自学成才的程序员,在我走的时候试图解决这个问题。任何帮助将不胜感激。
提前谢谢。
答案 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)
首先,您应该从控制器获取变量值而不是模型,然后应该从模型中将这些值传递给控制器,这是一种错误的编码实践,允许您的视图与模型进行交互。
另外,如果你想要一个" - "为变量设置。你应该设置" - "作为从传递给控制器的参数的返回值。
你应该做的是转到你的控制器并给它两个参数,为它们设置默认值,同时转到你的模型并让它接收两个参数,从控制器调用时将参数传递给模型。如果还有其他错误,请回来。