1

codeIgniter を使うのは初めてで、単純な DB 駆動型アプリケーションを作成してみました。まずモデル:

class News_model extends CI_Model {

public function __construct()
{
    $this->load->database();
}

public function get_news()
   {

    $query = $this->db->get('news');
    return $query->result_array();

   }
   }

次にコントローラー

class News extends CI_Controller {

public function __construct()
{
parent::__construct();
$this->load->model('news_model');
}

public function index()
{
$data['news'] = $this->news_model->get_news();
$data['title'] = 'News archive';

$this->load->view('templates/header', $data);
$this->load->view('news/index', $data);
$this->load->view('templates/footer');
}

ビュー「インデックス」:

<?php foreach ($news as $news_item): ?>

 <h2><?php echo $news_item['title'] ?></h2>
 <div id="main">
    <?php echo $news_item['text'] ?>
 </div>
 <p><a href="news/<?php echo $news_item['slug'] ?>">View article</a></p>

<?php endforeach ?>

コードを実行すると、ヘッダーとフッターが表示されますが、データベース レコードは表示されません。foreach の外側のビューに print ステートメントを配置すると機能しますが、foreach の内側では機能しません。if($news) を使用して、クエリが結果を取得したかどうかを確認しましたが、結果は取得されませんでした。

DB から結果が取得されない理由を知るにはどうすればよいですか?

4

2 に答える 2

0

foreach 内で別の foreach を呼び出す必要があります。例:

foreach ($result as $row) {
        foreach ($row as $key => $val) {
            if ($key === "reservation_info") {
                $data['decoded'] = json_decode($val);
            } else {
                $data[$key] = $val;
            }
        }
    }

ビューで「$val」値を使用します。それらを変数として呼び出すだけで、

//in the view
echo $decoded
echo $firtname

... 等々

于 2013-08-30T17:02:19.897 に答える
0

new が空かどうかを確認するには、単に

print_r($news);

または、ビューを変更できます:

<?php if(!empty($new)): ?>
  <?php foreach ($news as $news_item): ?>

   <h2><?php echo $news_item['title'] ?></h2>
   <div id="main">
      <?php echo $news_item['text'] ?>
   </div>
   <p><a href="news/<?php echo $news_item['slug'] ?>">View article</a></p>

  <?php endforeach ?>
<?php else: ?>
  Empty news 
<?php endif; ?>
于 2013-12-30T04:52:24.627 に答える