0

どうするのがベストなのか悩んでいます。現在、クエリを実行して結果が返されるかどうかを確認しています。結果が返されない場合は 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(); 
4

3 に答える 3

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 !";
于 2012-06-16T00:31:55.717 に答える
2

私は通常、JSON を使用して応答し、「成功」型のブール値を追加して、データを処理する前にその値を確認します。また、何か問題が発生した場合に、応答にエラー メッセージを簡単に配置することもできます。

于 2012-06-16T00:12:53.863 に答える
1

結果がない場合は、モデルから空の配列を返すだけです。そうすれば、foreach は壊れません。それは何もループしません。

于 2012-06-16T00:18:34.727 に答える