我想知道最好做什么。现在我运行了一个查询,看看是否有任何结果返回,如果没有返回,我返回NULL。
在我的控制器上,我将结果集发送给我的表,无论它是对象还是NULL,它都会回显视图页面上的行。
对于我的表,我使用的是jquery datatables插件。我试图找出当发送的值为NULL时如何处理数据,这样当它到达我的foreach循环时它不会显示错误。
控制器:
$news_articles = $this->news_model->get_news_articles();
$this->data['news_articles'] = $news_articles;
型号:
/**
* Get news articles
*
* @return object
*/
function get_news_articles()
{
$query = $this->db->get($this->news_articles_table);
if ($query->num_rows() > 0) return $query->result();
return NULL;
}
查看:
$tmpl = array ( 'table_open' => '<table class="table" id="newsarticles-table">' );
$data = array('name' => 'newsarticles', 'class' => 'selectall');
$this->table->set_heading(form_checkbox($data), 'ID', 'Date', 'Title');
$this->table->set_template($tmpl);
foreach ($news_articles as $row)
{
$checkbox_data = array(
'name' => 'newsarticles',
'id' => $row->id
);
$this->table->add_row(form_checkbox($checkbox_data), $row->id, $row->date_posted, $row->article_title);
}
echo $this->table->generate();
答案 0 :(得分:2)
我通常使用JSON进行响应,然后添加“success”类型boolean,然后在尝试处理任何数据之前检查该值。如果出现问题,它还允许以简单的方式在响应中放置错误消息。
答案 1 :(得分:2)
只是另一个想法
<强>模型强>
function get_news_articles()
{
$query = $this->db->get($this->news_articles_table);
if ($query->num_rows() > 0) return $query->result();
return FALSE;
}
<强>控制器强>
$news_articles = $this->news_model->get_news_articles();
if(!$news_articles) $this->data['success'] = FALSE;
else
{
$this->data['news_articles'] = $news_articles;
$this->data['success'] = TRUE;
}
在视图中
if($success)
{
foreach ($news_articles as $row)
{
//....
}
}
else echo "No results found !";
答案 2 :(得分:1)
如果没有结果,只需从模型返回一个空数组。那样你的foreach就不会破坏。它不会循环任何东西。