i am a beginner in codeigniter,i am trying to make a crud website for learning website but i am facing this error.
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: posts
Filename: posts/index.php
Line Number: 2
Backtrace:
File: /opt/lampp/htdocs/codeigniter/application/views/posts/index.php
Line: 2
Function: _error_handler
File: /opt/lampp/htdocs/codeigniter/application/controllers/Posts.php
Line: 23
Function: view
File: /opt/lampp/htdocs/codeigniter/index.php
Line: 315
Function: require_once
my controller file is
<?php
class Posts extends CI_Controller{
public function index(){
$data['title']='Latest Posts';
$data['posts']=$this->Post_model->get_posts();
$this->load->view('templates/header');
$this->load->view('posts/index',$data);
$this->load->view('templates/footer');
}
public function view($slug=NULL)
{
$data['post']=$this->Post_model->get_posts($slug);
if(empty($data['post'])){
show_404();
}
$data['title']=$data['post']['title'];
print_r('$data');
$this->load->view('templates/header');
$this->load->view('posts/view',$data);
$this->load->view('templates/footer');
}
public function create(){
$data['title']='create post';
$this->form_validation->set_rules('title','Title','required');
$this->form_validation->set_rules('body','body','required');
if($this->form_validation->run()===false){$this->load->view('templates/header');
$this->load->view('posts/create',$data);
$this->load->view('templates/footer');
}
else{
$this->Post_model->create_post();
printr('$data');
redirect('posts');
}
}
public function delete($id)
{
$this->Post_model->delete_post($id);
redirect('posts');
}
public function edit($id)
{
$data['post']=$this->Post_model->get_posts($slug);
if(empty($data['post'])){
show_404();
}
$data['title']='edit post';
$this->load->view('templates/header');
$this->load->view('posts/index',$data);
$this->load->view('templates/footer');
}
public function update()
{
$this->Post_model->update_post();
redirect('posts');
}
}
my model file is
<?php
class Post_model extends CI_Model{
public function __construct(){
$this->load->database();
}
public function get_posts($slug=false){
if($slug===false){
$this->db->order_by('id','DESC');
$query=$this->db->get('posts');
return $query->result_array();
}
$query=$this->db->get_where('posts',array('slug'=>$slug));
return $query->row_array();
}
public function create_post(){
$slug=url_title($this->input->post('title'));
$data=array('title'=>$this->input->post('title'),
'slug'=>$slug,
'body'=>$this->input->post('body')
);
return $this->db->insert('posts',$data);
}
public function delete_post($id){
$this->db->where('id',$id);
$this->db->delete('posts');
return true;
}
public function update_post()
{
$slug=url_title($this->input->post('title'));
$data=array('title'=>$this->input->post('title'),
'slug'=>$slug,
'body'=>$this->input->post('body')
); $this->db->where('id',$this->input->post('id'));
return $this->db->update('posts',$data);
}
}
my index view is
<h2><?=$title?></h2>
<?php foreach($posts as $post)?>
<h3><?php echo $post['title'];?></h3>o
<small class="post-date">Posted on:<?php echo $post['created at'];?></small><br>
<?php echo word_limiter($post['body'],60);?>
<p><a class="btn btn-default" href="<?php echo site_url('/posts/' .$post['slug']);?>">read more</a></p>
<?php endforeach;?>
i am autoloaing my database in config.
plz someone help me out i am stuck.