使用Code Igniter从MySql数据库显示多个结果

时间:2017-02-27 23:19:10

标签: php mysql codeigniter codeigniter-3

我目前正在使用以下代码从我的数据库加载新闻公告。

            <?php 
            $query = $this->db->query("SELECT * FROM news");
            foreach ($query->result() as $row)
            {
                if($row->active == 1)
                {
                    echo "<p>".$row->content."</p>";
                }
            }
        ?>

但是,我在CodeIgniter里面的模板文件中使用了这段代码。有没有更好的方法让我这样做,以便代码被分成模型和控制器文件,因为它应该是?

我在CodeIgniter文档站点上找到了文档,它告诉我要执行以下操作,但我真的想坚持框架的设计方式。

2 个答案:

答案 0 :(得分:0)

我做CodeIgniter已经有很长一段时间了,但是这里有一些东西。

<强>控制器

您可以在控制器中使用以下代码,以便将$data发送到特定视图。

$query = $this->db->query("SELECT * FROM news");
$data = array();
foreach ($query->result() as $row)
  {
    if($row->active == 1)
      {
        array_push($data, $row);
      }
  }
$this->load->view('your_view', $data);

查看

然后在您看来,将其称为your_view.php,您就可以访问$data进行循环播放。

 <?php foreach($data as $row) { ?>
   <p> <?php $row->content ?> </p>
 <?php } ?>

答案 1 :(得分:0)

查询后是否有IF语句的原因?

<强>模型

public function get_news() {
    $query = $this->db->query("SELECT * FROM news WHERE active = 1");
    if ($query->num_rows() > 0) { // Only return if there is data
        foreach($query->result() AS $row) {
            $array[] = get_object_vars($row); // Just dump the values into an array
        }
        return $array;
    }
}

<强>控制器

public function index() {
    $this->load->model('MODEL_NAME'); // Load the model that access the database
    $data['news'] = $this->MODEL_NAME->get_news(); // Assign the results of the function to the "news" index
    $this->load->view('view_page', $data); // Profit
}

查看

<?php
    foreach($news AS $row) {
        echo '<p>' . $row['content'] . '</p>';
    }
?>