كيفاش نسجل نعدل ونمسح المعلومات من قاعدة البيانات

فهاد الدرس من سلسلة codeigniter غادي نشوفو كيفاش يمكنا نديرو عمليات إضافة تعديل ومسح بيانات من قاعدة البيانات هاد الدرس غادي يعتمد على المشروع الأول ديال codeigniter authentification وغادي نكملو بنفس الصفحات لي قادينا من قبل.

نظرة سريعة بالفيديو


- ملف Post.php


أول حاجة غادي نديرو غادي نزيدو لModel لي غادي يمكنا من تسجيل المعلومات فقاعدة البيانات غادي نمشي للمجلد models وغادي نزيد ملف جديد نسميه Post.php لي غادي تكون فيه ل functions لي غادي نسجلو نعدلو ونمسحوا بها المعلومات من قاعدة البيانات الكود النهائي ديالو هو :

                                    
                                        <?php

class Post extends CI_Model {

    public function add_post(){
        $data = array(
            'title' => trim($this->input->post('title')),
            'categorie' => trim($this->input->post('categorie')),
            'post' => trim($this->input->post('post'))
        );
        $this->db->insert('posts',$data);
        return true;
    }
    public function get_posts(){
       $this->db->select('*');
       $this->db->from('posts');
       $query = $this->db->get();
       return $query->result();
    }
    public function update_post($id){
        $data = array(
            'title' => trim($this->input->post('title')),
            'categorie' => trim($this->input->post('categorie')),
            'post' => trim($this->input->post('post'))
        );
        $this->db->where('id',$id);
        $this->db->update('posts',$data);
        return true;
    }
    public function delete_post($id){
        $this->db->where('id',$id);
        $this->db->delete('posts');
        return true; 
    }
}

                                    
                                

- ملف Posts.php


من بعد غادي نزيدو لController لي غادي يمكنا من جلب المعلومات من قاعدة البيانات عن طريق لModel لي زدنا لي هو Post.php غادي نمشي للمجلد controllers وغادي نزيد ملف جديد نسميه Posts.php غادي تكون فيه مجموعة ديال ل functions لي غادي تقوم بالمهمة الكود النهائي ديالو :

                                    
                                        <?php

class Posts extends CI_Controller {

    public function create(){
        $this->load->view('posts/create');
    }
    public function store(){
        if(!$this->session->userdata("logged")){
           redirect(base_url().'home');
        } 
        $this->form_validation->set_rules('title','Titre','required|trim|min_length[10]');
        $this->form_validation->set_rules('categorie','Catégorie','required|trim');
        $this->form_validation->set_rules('post','Post','required|trim|min_length[3]|max_length[1000]');
            if($this->form_validation->run() == FALSE){
                $data = array(
                'requires' => validation_errors()
                );
                $this->session->set_flashdata($data);
                $this->load->view('posts/create',$data);
            }else{
                if($this->Post->add_post()){
                    $this->session->set_flashdata('registred','Post Ajouté avec succés');
                    redirect(base_url().'home');
                }
            }
    }
    public function update($id){
        if(!$this->session->userdata("logged")){
           redirect(base_url().'home');
        } 
        $this->form_validation->set_rules('title','Titre','required|trim|min_length[10]');
        $this->form_validation->set_rules('categorie','Catégorie','required|trim');
        $this->form_validation->set_rules('post','Post','required|trim|min_length[3]|max_length[1000]');
            if($this->form_validation->run() == FALSE){
                $data = array(
                'requires' => validation_errors()
                );
                $this->session->set_flashdata($data);
                $this->load->view('home',$data);
            }else{
                if($this->Post->update_post($id)){
                    $this->session->set_flashdata('registred','Post modifié avec succés');
                    redirect(base_url().'home');
                }
            }
    }
    public function delete($id){
        if($this->Post->delete_post($id)){
            $this->session->set_flashdata('registred','Post supprimé avec succés');
            redirect(base_url().'home');
        }
    }
}

                                    
                                

- ملف إضافة المعلومات create.php


باش تزيد المعلومات فقاعدة البيانات غادي تمشي لviews وتزيد مجلد وتسميه posts منبعد تزيد فيه ملف تسميه create.php هاد الملف هو ل Form ديالنا لي غادي تمكنا من إضافة المعلومات لقاعدة البيانات وغادي يكون الكود ديالو هو :

                                      
                                        <?php $this->load->view('includes/header');?>
<?php $this->load->view('includes/menu');?>
 <div class="container">
    <div class="row">
        <div class="col-md-6 col-md-offset-6">
            <?php echo validation_errors('<div class="alert alert-danger">','</div>');?>
            <h1 class="text-info">Créer un Post</h1>
            <form action="<?php echo base_url();?>posts/store" method="post">
                <div class="form-group">
                    <label for="title">Title</label>
                    <input type="text" name="title" id="title" placeholder="Titre" class="form-control" value="">
                </div>
                <div class="form-group">
                    <label for="categorie">Categorie</label>
                    <select name="categorie" id="category_select" class="form-control">
                            <option value="Education">Education</option>
                            <option value="Sport">Sport</option>
                            <option value="Cinema">Cinema</option>
                            <option value="Divers">Divers</option>
                    </select> 
                </div>
                <div class="form-group">
                    <label for="post">Post</label>
                    <textarea name="post" id="post" cols="30" rows="10" class="form-control"  placeholder="Post"></textarea>
                </div>
                <div class="form-group">
                    <button type="submit" class="btn btn-success">Créer Post</button>
                </div>
            </form>
        </div>
    </div>
</div>
<?php $this->load->view('includes/footer');?>
                                      
                                    

-تعديلات على الصفحة الرئيسية index.php


باش نعرضوا ل posts ديالنا لي زدنا فقاعدة البيانات غادي نديرو تعديلات على الصفحة الرئيسية ديالنا غادي نزيدو الكود لي غادي يمكنا من عرض كل post بوحدو كما غادي نزيدو ل form لي غادي تمكنا من تعديل ل post لي ختارينا او مسح ها الآخير الكود النهائي ديال الصفحة الرئيسية هو :

                                        
                                            <?php $this->load->view('includes/header');?>
  <body>
    <?php $this->load->view('includes/menu');?>
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <?php if($this->session->flashdata('registred')):?>
    <div class="alert alert-success">
    <?php echo $this->session->flashdata('registred');?>
    </div>
    <?php endif;?>
    <div class="container">
        <?php if($this->session->userdata('logged')):?>
          <p class="lead">Bienvenue <span class="label label-success"><?php echo $this->session->userdata("nom");?></span> Vous êtes connectés.</p>
        <?php endif;?>
    </div>
    <div class="row"> 
      <?php foreach($posts as $post):?>
        <div class="col-md-8 col-md-offset-1">
            <div class="panel panel-inverse">
                <div class="panel-heading"><?php echo $post->title;?></div>
                <div class="panel-body">
                   <p class="lead"><?php echo $post->post;?></p>
                </div>
                <div class="panel-footer">
                  <span class="label label-info"><?php echo $post->categorie; ?></span> <a href="#updatePost<?php echo $post->id;?>" class="label label-warning" data-toggle="modal">Modifier</a> <a href="#deletePost<?php echo $post->id;?>" class="label label-danger" data-toggle="modal">Supprimer</a>
                </div>
            </div>
        </div>
        <!--post update modal-->
        <div class="modal fade" id="updatePost<?php echo $post->id;?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
          <div class="modal-dialog" role="document">
            <div class="modal-content">
              <form action="<?php echo base_url();?>posts/update/<?php echo $post->id;?>" method="post">
                  <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
                    <h4 class="modal-title" id="myModalLabel"><input type="text" name="title" value="<?php echo $post->title;?>" class="form-control"></h4>
                  </div>
                  <div class="modal-body">
                    <div class="form-group">
                        <select name="categorie" id="category_select" class="form-control">
                            <option value="Education">Education</option>
                            <option value="Sport">Sport</option>
                            <option value="Cinema">Cinema</option>
                            <option value="Divers">Divers</option>
                        </select> 
                    </div>
                    <textarea name="post" id="" cols="100" rows="10" class="form-control"><?php echo $post->post;?></textarea>
                  </div>
                  <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Fermer</button>
                    <button type="submit" class="btn btn-primary">Modifier</button>
                  </div>
              </form>
            </div>
          </div>
        </div>
        <!--delete post modal-->
         <!--post update modal-->
        <div class="modal fade" id="deletePost<?php echo $post->id;?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
          <div class="modal-dialog" role="document">
            <div class="modal-content">
              <form action="<?php echo base_url();?>posts/delete/<?php echo $post->id;?>" method="post">
                  <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
                    <h4 class="modal-title text-danger" id="myModalLabel">Voulez vous vraiment supprimer ce post ?</h4>
                  </div>
                  <div class="modal-body">
                      <p class="lead"><?php echo $post->post;?></p>
                  </div>
                  <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Fermer</button>
                    <button type="submit" class="btn btn-danger">Supprimer</button>
                  </div>
              </form>
            </div>
          </div>
        </div>
      <?php endforeach;?>
    </div>
  </body>
<?php $this->load->view('includes/footer');?>

                                        
                                    

- تعديلات آخيرة


التعديلات الأخيرة لي غادي نزيدو هي لي غادي تمكنا من عرض ل posts ديالنا فالصفحة الرئيسية غادي نمشي ل controllers/Home.php وغادي ندير تعديل على function index من بعد غادي نمشي لincludes/menu.php وغادي نزيد الكود لي غادي يزيدنا الmenu ديال إضافة لposts فقاعدة البيانات ولي غادي تكون متاحة فقط للمستخدم لي داخل و أخيرا غادي نمشيو للconfig/autoload.php وغادي نزيد ل model Post فل autoload الكود النهائي هو :

                                        
                                            //Home.php code
  
public function index()
	{
		$data['posts'] = $this->Post->get_posts();
		$this->load->view('index',$data);
	}
}

//menu.php code

<nav class="navbar navbar-default">
    <div class="container-fluid">
        <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="<?php echo base_url();?>">Codeigniter Auth</a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
        <ul class="nav navbar-nav">
            <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Compte <span class="caret"></span></a>
            <ul class="dropdown-menu">
                <?php if($this->session->userdata('logged')):?>
                   <li><a href="<?php echo base_url();?>users/logout">Déconnexion</a></li>
                <?php else:?>
                   <li><a href="<?php echo base_url();?>users/create">Ajouter un compte</a></li>
                   <li><a href="<?php echo base_url();?>users/login">Connexion</a></li>
                <?php endif;?>
            </ul>
            </li>
        </ul>
        <?php if($this->session->userdata('logged')):?>
            <ul class="nav navbar-nav">
                <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Posts <span class="caret"></span></a>
                <ul class="dropdown-menu">
                    <li><a href="<?php echo base_url();?>posts/create">Ajouter un post</a></li>
                </ul>
                </li>
            </ul>
        <?php endif;?>
        </div><!--/.nav-collapse -->
    </div><!--/.container-fluid -->
 </nav>

//autoload.php code

$autoload['model'] = array('User','Post');
                                        
                                    

كلمات مفاتيح :