2012-06-16 1 views
0

Мне интересно, что лучше всего делать. Прямо сейчас у меня есть запрос, чтобы проверить, вернулись ли какие-либо результаты, и если они не возвращены, я возвращаю NULL.Возврат 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

В подобных ситуациях я взял возвращающиеся пустые коллекции. Сохраняет всю нулевую проверку. – Marvo

+0

Не могли бы вы показать мне пример из моего кода. –

+1

В get_news_articles вместо возврата NULL попробуйте вернуть новый массив(). Это вернет пустой массив, цикл foreach не будет итерации, а затем ... ну, вы находитесь во власти таблиц данных в этот момент. Я не знаю, что он будет делать без данных. – Marvo

ответ

1

Просто верните пустой массив из модели, если результатов нет. Таким образом, ваш прорыв не сломается. Он просто ничего не зациклится.

2

я обычно реагируют с помощью JSON, а затем добавить "успеха" логического типа, а затем проверить, что значение прежде чем пытаться обрабатывать любые данные. Он также позволяет легко разместить сообщение об ошибке в ответе, если что-то пойдет не так.

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 !";