Site d'annonces ب codeigniter الجزء الثاني


فهاد الجزء الثاني من Site d'annonces ب codeigniter غادي نكملو الملفات لي غادي يمكنونا من إضافة ل controller home ولي غادي يمكنا من استرجاع les annonces لي عندنا فقاعدة البيانات وغادي نعرضهم فالصفحة الرئيسية من بعد غادي نشوفوا الملفات الخاصين ب les annonces ولي غادي يمكنوا من إضافة تعديل مسح وعرض les annonces ديال المستخدمين ديالنا.

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

1- الملف Home.php

ف Application/Controllers غادي تزيد ملف جديد سميه Home.php لي غادي يكون فيه ل fonction index لي كتسترجع les annonces لي عندنا فقاعدة البيانات بواسطة
fonction get_annonces لي كاينة فل model Ads_model لي غادي نزيدوه من بعد وهاد les annonces كيمشيو للملف home.php ولي غادي نزيدوه حتى هو منبعد الكود ديال الملف هو :

                                <?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Home extends CI_Controller {
	public function index()
	{
		$data['annonces'] = $this->Ads_model->get_annonces(15,0);
		$this->load->view('home',$data);
	}
}
                            

2- الملف Ads_model.php

ف Application/modelsغادي تزيد ملف جديد سميه Ads_model.php لي غادي يكون فيه ل fonction register_annonce لي كتزيد annonce جديدة  من بعد كاين upload_image لي كتدير ل upload ديال ل image ديال ل annonce وكتحطها ف dossier uploads منبعد عندي get_annonce_by_category لي كترجع les annonces على حساب ل categorie  منبعد عندي delete_annonce لي كتمسح annonce  منبعد عندي user_annonces  لي كتمسح les annonces  ديال مستخدم  منبعد عندي get_annonces_with_annonce_by_categorie_and_ville_and_title لي كترجع les annonces بل category لمدينة و titre منبعد كاين get_annonce_info لي كترجع المعلومات الخاصة ب annonce اختارها المستخدم  منبعد كاين  get_next_annonce لي كترجع annonce suivante وget_last_annonce لي كترجع ل annonce précédente منبعد كاين get_annonces لي كترجعنا les annonces فواحد ل interval لي كنحددوه منبعد عندي get_all_annonces لي كترجع les annonces كاملين الكود ديال الملف هو :

                                <?php
 
/**
 *
 */
class Ads_model extends CI_Model
{
    function register_annonce(){
        $file = $this->upload_image();
        $files = $this->security->sanitize_filename($file);
        if($files == "image_not_supporetd"){
            $this->session->set_flashdata('type_not_supported','Le type d\'image que vous tentez de télécharger n\'est pas autorisé');
            redirect('ads/add');
        }elseif($files == "size_excced"){
            $this->session->set_flashdata('size_excced','Le fichier téléchargé dépasse la taille maximale autorisée');
            redirect('ads/add');
        }else{
            $data = array(
                    'user_id' =>  $this->session->userdata('user_id'),
                    'categorY' => $this->input->post('cat'),
                    'city' => $this->input->post('city'),
                    'title' => $this->input->post('title'),
                    'body' => $this->input->post('body'),
                    'image' =>$files,
                    'created' => date("Y-m-d H:s:m"),
                );
            $insert = $this->db->insert('ads',$data);
            return $insert;
        }
    }
    public function upload_image(){
        $target_dir = "./assets/uploads/";
        $target_file = $target_dir.basename($_FILES["photo"]["name"]);
        $FileType = pathinfo($target_file,PATHINFO_EXTENSION);
        $allowed = array('png','jpg','jpeg');
        if(empty($_FILES["photo"]["size"])){
            return "camera.png";
        }elseif(!in_array($FileType,$allowed)){
            return "image_not_supporetd";
        }elseif($_FILES["photo"]["size"] > 2000000){
            return "size_excced";
        }else{
            move_uploaded_file($_FILES["photo"]["tmp_name"], $target_file);
            return $_FILES["photo"]["name"];
        }
    }
    public function get_annonce_by_category($category){
        $this->db->select('*');
        $this->db->from('ads');
        $this->db->where(array('category'=>$category));
        $annonces = $this->db->get();
        return $annonces->result();
    }
    public function get_annonce_by_city($city){
        $this->db->select('*');
        $this->db->from('ads');
        $this->db->where(array('city'=>$city));
        $annonces = $this->db->get();
        return $annonces->result();
    }
    public function delete_annonce($id){
        $this->db->where(array('id'=>$id));
        $this->db->delete('ads');
        return true;
    }
    public function user_annonces($id){
        $this->db->where(array('user_id'=>$id));
        $this->db->delete('ads');
        return true;
    }
    public function get_annonces_with_annonce_by_categorie_and_ville_and_title($title,$city,$category){
        $this->db->select('*');
        $this->db->from('ads');
        if($title != null){
            $this->db->like('title',$title);
        }
        if($category != null){
            $this->db->where(array('category'=>$category));
        }
        if($city != null){
            $this->db->where(array('city'=>$city));
        }
        $annonces = $this->db->get();
        return $annonces->result();
    }
    public function get_annonce_info($id){
        $this->db->select('a.*,u.*');
        $this->db->from('ads as a');
        $this->db->join('users as u','u.id = a.user_id');
        $this->db->where(array('a.id'=>$id));
        $query = $this->db->get();
        return $query->row();
    }
    public function get_next_annonce($limit,$start)
    {
        $this->db->where('id >',$start);
        $this->db->limit($limit);
        $this->db->order_by('id');
        $query = $this->db->get('ads');
        if ($query->num_rows() > 0) {
            $row = $query->row();
            return $row;
        }else{
            return false;
        }
    }
    public function get_last_annonce($limit,$start)
    {
        $this->db->where('id',$start-=1);
        $this->db->limit($limit);
        $this->db->order_by('id');
        $query = $this->db->get('ads');
        if ($query->num_rows() > 0) {
            $row = $query->row();
            return $row;
        }else{
            return false;
        }
    }
    function get_annonces($limit,$start){
        $this->db->select('*');
        $this->db->from('ads');
        $this->db->order_by('created','desc');
        $this->db->limit($limit,$start);
        $annonces = $this->db->get();
        return $annonces->result();
    }
    function get_all_annonces(){
        $this->db->select('*');
        $this->db->from('ads');
        $this->db->order_by('created','desc');
        $annonces = $this->db->get();
        return $annonces->result();
    }
}
?>
                            

3- الملف Ads.php

ف Application/Controllers غادي تزيد ملف جديد سميه Ads.php لي غادي يكون فيه ل fonction index لي كسترجع les annonces لي عندنا فقاعدة البيانات بواسطة fonction get_all_annonces لي كاينة فل Ads_model لي شفنا من قبل ثم كاين ل fonction category لي كترجع les annonces selon la catégorie بواسطة  fonction get_annonce_by_category لي  حتى هي فل Ads_model ثم كاين fonction city لي كترجع les annonces selon la ville fonction بواسطة get_annonce_by_category منبعد كاين add لي كتزيد annonce من بعد مكتحقق بلي حتى شي حقل ما خاوي من بعد كاين view لي كتمكن من مشاهدة annonce اختارها المستخدم منبعد كاين find لي كتدير البحث على des annonces بحث عليهم المستخدم بل categorie ل ville ولا titre منبعد كاين delete لي كتمسح annonce اختارها الأدمن وكل المعلومات لي كيرجعونا كنخزنوهم ونصيفطوهم لل views لي غادي نزيدو منبعد الكود ديال الملف هو :

                                <?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Ads extends CI_Controller {
	public function index()
	{	
		$data['annonces'] = $this->Ads_model->get_all_annonces();
		$this->load->view('ads/index',$data);
	}
	public function category()
	{	
		$data['annonces'] = $this->Ads_model->get_annonce_by_category($this->uri->segment(3));
		$this->load->view('ads/by-category',$data);
	}
	public function city()
	{	
		$data['annonces'] = $this->Ads_model->get_annonce_by_city($this->uri->segment(3));
		$this->load->view('ads/by-city',$data);
    }
	public function add(){
		$this->form_validation->set_rules('cat','Catégorie','required|trim');
		$this->form_validation->set_rules('city','Ville','required|trim');
		$this->form_validation->set_rules('title','Titre','required|trim');
		$this->form_validation->set_rules('body','Description','required|trim');
		if($this->form_validation->run() == FALSE){
			$data = array(
				'requires' => validation_errors()
			);
			$this->session->set_flashdata($data);
			$this->load->view('ads/add',$data);
		}else{
			$this->Ads_model->register_annonce();
			$this->session->set_flashdata('annonce_added','Annonce ajoutée avec succés Merci!');
			redirect('/');
		}
	}
	public function view(){
		$id = $this->uri->segment(3);
		$data['annonce'] = $this->Ads_model->get_annonce_info($id);
		if(empty($data['annonce'])){
			redirect('/');
		}
		$data['next'] = $this->Ads_model->get_next_annonce(1,$id);
		$data['last'] = $this->Ads_model->get_last_annonce(1,$id);
		$this->load->view('ads/view',$data);
	}
	public function find(){
		$city = $this->input->post('city');
		$category = $this->input->post('cat');
		$title = $this->input->post('search');
		$data['annonces']= $this->Ads_model->get_annonces_with_annonce_by_categorie_and_ville_and_title($title,$city,$category);
		$this->load->view('ads/search-ad',$data);
	}
	public function delete($id){
		$this->Ads_model->delete_annonce($id);
		$this->session->set_flashdata('deleted','Supression effectuée avec succés');
		redirect(base_url().'admin');
	}
}
                            

4- الملف ads/index.php

ف dossier views كنزيد dossier جديد كنسميه ads فيه كانزيد ملف جديد كنسميه index.php فيه كنعرض les annonces لي كيجيوني من ل  fonction index ديال controller Ads.php وهنا كنخدم ب foreach باش كنعرض المعلومات وعندي ايضا les catégories و les villes ولي كمكنو من استرجاع les annonces selon les villes et les catégories ولي شفنا les fonctions ديالهم قبل  الكود ديال الملف هو :

                                    <?php $this->load->view('layouts/header');?>
<div class="container">
    <div class="jumbotron">
         <div class="row">
            <form action="<?php echo base_url();?>ads/find" method="post">
                <div class="col-md-3">
                    <input type="text" name="search" placeholder="Que Cherchez Vous?" class="form-control">
                </div>
                <div class="col-md-4">
                    <select  name="cat" class="form-control">
                        <option selected disabled>Veuillez choisir une catégorie</option>
                        <option value="Informatique & Téchnologie">Informatique</option>
                        <option value="Immobilier">Immobilier</option>
                        <option value="Emplois">Emplois</option>
                        <option value="Animaux">Animaux</option>
                        <option value="Vente Divers">Vente Divers</option>
                        <option value="Véhicules">Véhicules</option>
                    </select>
                </div>
                <div class="col-md-4">
                    <select  name="city" class="form-control">
                        <option selected disabled>Veuillez choisir une ville</option>
                        <option value="Casablanca">Casablanca</option>
                        <option value="Rabat">Rabat</option>
                        <option value="Fes">Fes</option>
                        <option value="Taza">Taza</option>
                        <option value="Agadir">Agadir</option>
                        <option value="Tanger">Tanger</option>
                        <option value="Oujda">Oujda</option>
                        <option value="Meknés">Meknés</option>
                    </select>
                </div>
                <div class="col-md-1">
                    <button type="submit" name="submit" class="btn btn-success"><i class="fa fa-search"></i></button>
                </div>
            </form>
        </div>
    </div>
    <div class="row">
        <div class="col-md-8">
            <div class="panel">
                <h3 class="text-default" style="padding:10px;">Toutes les annonces <span class="badge"><?php echo count($annonces);?></span></h3>
                <hr>
                <div class="row" style="padding:10px;">
                    <?php foreach($annonces as $annonce):?>
                        <div class="col-sm-12">
                            <div class="media">
                                <div class="media-left">
                                    <a href="<?php echo base_url();?>ads/view/<?php echo $annonce->id;?>">
                                        <img class="media-object thumbnail" width="237" src="<?php  echo base_url();?>/assets/uploads/<?php echo $annonce->image;?>" height="150" alt="...">
                                    </a>
                                </div>
                                <div class="media-body">
                                    <h4 class="media-heading"><?php echo $annonce->title;?></h4>
                                    <p><?php echo $annonce->body;?></p>
                                    <p><a href="<?php echo base_url();?>ads/view/<?php echo $annonce->id;?>" class="btn btn-link">Voir <i class="fa fa-arrow-right"></i></a></p>
                                </div>
                                <div class="media-footer" align="right">
                                    <span class="label label-success"><i class="fa fa-tag"></i><?php echo $annonce->category;?></span>
                                    <span class="label label-default"><i class="fa fa-user"></i> Belasri imad</span>
                                    <span class="label label-warning"><i class="fa fa-calendar"></i> <?php echo $annonce->created;?></span>
                                </div>
                            </div>
                            <hr>
                        </div>
                    <?php endforeach;?>
                </div>
            </div>
        </div>
        <div class="col-md-4">
            <h3 class="text-default">Choisissez une ville</h3>
            <hr>
            <ul class="list-group">
                <li class="list-group-item">
                    <a href="<?php echo base_url();?>ads/city/Casablanca" class="text-info"><i class="fa fa-chevron-right"></i> Casablanca</a>
                </li>
                <li class="list-group-item">
                    <a href="<?php echo base_url();?>ads/city/Rabat" class="text-info"><i class="fa fa-chevron-right"></i> Rabat</a></li>
                <li class="list-group-item">
                    <a href="<?php echo base_url();?>ads/city/Fes" class="text-info"><i class="fa fa-chevron-right"></i> Fes</a>
                </li>
                <li class="list-group-item">
                    <a href="<?php echo base_url();?>ads/city/Méknes" class="text-info"><i class="fa fa-chevron-right"></i> Méknes</a>
                </li>
                <li class="list-group-item">
                    <a href="<?php echo base_url();?>ads/city/Tanger" class="text-info"><i class="fa fa-chevron-right"></i> Tanger</a>
                </li>
                <li class="list-group-item">
                    <a href="<?php echo base_url();?>ads/city/Taza" class="text-info"><i class="fa fa-chevron-right"></i> Taza</a>
                </li>
                <li class="list-group-item">
                    <a href="<?php echo base_url();?>ads/city/Oujda" class="text-info"><i class="fa fa-chevron-right"></i> Oujda</a>
                </li>
                <li class="list-group-item">
                    <a href="<?php echo base_url();?>ads/city/Agadir" class="text-info"><i class="fa fa-chevron-right"></i> Agadir</a>
                </li>
            </ul>
        </div>
    </div>
</div>
<?php $this->load->view('layouts/footer');?>
                                

5- الملف ads/add.php

دائما ف ads كنزيد ملف جديد سميه add.php لي فيه الكود لي كيمكن المستخدم من إضافة annonce جديدة فكيدخل المعلومات الخاصة بها فل form ثم كترسل لل fonction add لي كاينة فل controller Ads.php الكود ديال الملف هو :

                                    <?php 
if(!$this->session->userdata("logged")){
    redirect(base_url().'user/login');
} 
$this->load->view('layouts/header');
?>
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <?php echo validation_errors('<div class="alert alert-danger">','</div>');?>
            <?php if($this->session->flashdata('type_not_supported')):?>
                <div class="alert alert-danger">
                    <?php echo $this->session->flashdata('type_not_supported');?>
                </div>
            <?php endif;?>
            <?php if($this->session->flashdata('size_excced')):?>
                <div class="alert alert-danger">
                    <?php echo $this->session->flashdata('size_excced');?>
                </div>
            <?php endif;?>
            <div class="panel panel-default">
                <h4 class="panel-heading text-default" style="padding:10px;margin-top:-1px;">Déposer une annonce</h4>
                <div class="row" style="padding:10px;">
                    <div class="col-md-8 col-md-offset-2">
                        <form action="#" method="post" enctype="multipart/form-data">
                            <div class="form-group">
                                <label for="cat">Catégorie*</label>
                                <select  name="cat" class="form-control">
                                    <option selected disabled>Veuillez choisir une catégorie</option>
                                    <option value="Informatique & Téchonologie">Informatique & Téchonologie</option>
                                    <option value="Immobilier">Immobilier</option>
                                    <option value="Emplois">Emplois</option>
                                    <option value="Vente Divers">Vente Divers</option>
                                    <option value="Animaux">Animaux</option>
                                    <option value="Véhicules">Véhicules</option>
                                </select>
                            </div>
                            <div class="form-group">
                                <label for="city">Ville*</label>
                                <select  name="city" class="form-control">
                                    <option selected disabled>Veuillez choisir une ville</option>
                                    <option value="Casablanca">Casablanca</option>
                                    <option value="Rabat">Rabat</option>
                                    <option value="Fes">Fes</option>
                                    <option value="Méknes">Méknes</option>
                                    <option value="Oujda">Oujda</option>
                                    <option value="Taza">Taza</option>
                                    <option value="Agadir">Agadir</option>
                                    <option value="Tanger">Tanger</option>
                                </select>
                            </div>
                            <div class="form-group">
                                <label for="title">Titre*</label>
                                <input type="text" name="title" class="form-control" placeholder="Titre">
                            </div>
                            <div class="form-group">
                                <label for="body">Déscription</label>
                                <textarea name="body" id="" cols="30" rows="10" class="form-control" placeholder="Déscription"></textarea>
                            </div>
                            <div class="form-group">
                                <label for="photo">Photo*</label>
                                <input type="file" name="photo" class="form-control">
                            </div>
                            <div class="form-group">
                                <input type="submit" class="btn btn-default" name="submit" value="Valider">
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<?php $this->load->view('layouts/footer');?>
                                


إشترك في قناتنا على اليوتيوب

بحث في الموقع


إشترك للتوصل بالجديد