4

現在、Framework Codeigniter を使用してデータベースからデータを表示するチュートリアルに従っています。私が学んださまざまな方法があります。配列として表示するか、ビューファイルで「foreach」を使用するか、より現実的な方法はありますか? どんな意見も参考になります。

これは、2 つの方法を使用した私のコードです。

方法 1 モデル:

function getArticle(){
    $this->db->select('*');
    $this->db->from('test');
    $this->db->where('author','David');
    $this->db->order_by('id', 'DESC');
    $query=$this->db->get();

    if($query->num_rows() > 0) {
        foreach ($query->result() as $row) {
            $data[] = $row;
        }
        return $data;
    }$query->free_result();
}

}

方法 1 ファイルを表示:

 <?php foreach($article as $row){ ?>
        <h3><?php echo $row->title;  ?></h3>
        <p><?php echo $row->content;  ?></p>
        <p><?php echo $row->author;  ?></p>
        <p><?php echo $row->date; ?></p>
<?php } ?>

方法 2 モデル: class News_model extends CI_Model {

function getArticle(){
    $this->db->select('*');
    $this->db->from('test');
    $this->db->where('author', 'David');
    $this->db->order_by('id', 'DESC');
    $query=$this->db->get();

    if ($query->num_rows()>0) { 
        return $query->row_array();
    }
    $query->free_result();
}

方法 2 ファイルを表示:

    <?php echo '<h3>' .$article['title'].'</h3>' ?>
    <?php echo '<p>' .$article['content']. '</p>' ?>
    <?php echo '<p>' .$article['author']. '</p>' ?>
    <?php echo '<p>'. $article['date']. '</p>' ?>
4

1 に答える 1

15

私はそのようにします:

モデル

function getArticle() {
    $this->db->select('*');
    $this->db->from('test');
    $this->db->where('author','David');
    $this->db->order_by('id', 'DESC');
    return $this->db->get()->result();
}

}

コントローラ

function get_tests() {
    $data = array(
        'tests' => $this->mymodel->getArticle()
    }
    $this->load->view('myview', $data);
}

意見

<table>
    <?php foreach($tests as $test) { ?>
    <tr>
        <td><?php echo $test->title;?></td>
        <td><?php echo $test->content;?></td>
        <td><?php echo $test->author;?></td>
        <td><?php echo $test->date;?></td>
    </tr>
</table>

オブジェクトではなく配列を使用する場合は、モデル変更行で

return $this->db->get()->result();

return $this->db->get()->result_array();

とビューでエコーのように

<td><?php echo $test['title'];?></td>

PS

コードでは使用しますが、キーワードを使用するとその後のすべてが解析されない$query->free_result();ため、実行されません。returnとにかく結果を解放する必要はありません。

PS2。

あなたは使用しますif($query->num_rows() > 0) {が、その部分を持っていませんelse、それはそれも必要ではないことを意味します。ビューのforeachステートメントに行を返さない場合、エラーは発生しません。

于 2012-08-24T11:57:01.677 に答える