I'm using Codeigniter on an Apache xampp set up and attempting to use foreach in a view for the first time and I just can't get it to work.
My Controller code:
class Test extends CI_Controller { public function index($page = 'testv') { if ( ! file_exists(APPPATH.'/views/'.$page.'.php')) { show_404(); } $this->load->model('testm'); $data['news'] = $this->testm->get_news(); $this->load->view('headder'); $this->load->view($page, $data); $this->load->view('footer'); } } My Model:
class Testm extends CI_Model { public function __construct() { parent::__construct(); } Public function get_news() { $query = $this->db->query('SELECT id, date, text FROM news'); foreach ($query->result_array() as $row) { echo $row['id']; echo $row['date']; echo $row['text']; } } } My View:
<main id='central_section'> <section id='logo_section'> <img src='<?php echo base_url(); ?>img/logo.png' id='small_logo' alt="Logo"> </section> <section id='content'> <p class="large_headding">News</p> <?php foreach($news as $news) { ?> <article class="article_text"> <p class="segment_headding"><?php echo $news->date; ?></p> <?php echo $news->text; ?> </article> <?php } ?> <div id="spacer"></div> </section> </main> At present I get the following warning message:
A PHP Error was encountered Severity: Warning Message: Invalid argument supplied for foreach() Filename: views/testv.php Line Number: 18 Backtrace: File: C:\xampp\htdocs\tsh\CI\application\views\testv.php Line: 18 Function: _error_handler File: C:\xampp\htdocs\tsh\CI\application\controllers\test.php Line: 16 Function: view File: C:\xampp\htdocs\tsh\public_html\index.php Line: 292 Function: require_once But the text from my database does appear at the top of the page outside of the headder so I know the database is connecting and the data from it is being collected. Can anyone tell me where I'm going wrong?