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?
you just have issue in your model function foreach loop just replace that with:
$query = $this->db->query('SELECT id, date, text FROM news');
$result = $query->result_array();
return $result;