Application de gestion d'employés ب PHP MVC و PDO الجزء الاول


فهاد ال projet الجديد القديم  لي سبق وشفناه قبل ولي هو application de gestion d'employés ب php لكن الجديد فهاد التحديث هو أننا غادي نخدموا ب structure MVC غادي نحولوا ل projet ديالنا ل projet خدام ب structure model vue controller.

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

1- إضافة قاعدة البيانات

غادي تزيد قاعدة بيانات جديدة سميها employes من بعد غادي تنفذ هاد الكود باش ت importer la base لعندك :

                                //


SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Base de données :  `employes`
--

-- --------------------------------------------------------

--
-- Structure de la table `employes`
--

CREATE TABLE `employes` (
  `id` int(11) NOT NULL,
  `nom` varchar(255) NOT NULL,
  `prenom` varchar(255) NOT NULL,
  `matricule` int(11) NOT NULL,
  `depart` varchar(100) NOT NULL,
  `poste` varchar(100) NOT NULL,
  `date_emb` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `statut` tinyint(4) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf32;

-- --------------------------------------------------------

--
-- Structure de la table `users`
--

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `fullname` varchar(200) NOT NULL,
  `username` varchar(200) NOT NULL,
  `password` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf32;

--
-- Index pour les tables déchargées
--

--
-- Index pour la table `employes`
--
ALTER TABLE `employes`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `users`
--
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT pour les tables déchargées
--

--
-- AUTO_INCREMENT pour la table `employes`
--
ALTER TABLE `employes`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT pour la table `users`
--
ALTER TABLE `users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
                            

2- الإتصال بقاعدة البيانات

منبعد زيد dossier جديد ف serveur ديالك سميه لي بغيتي فيه زيد dossier database فيه زيد fichier سميه DB.php فيه غادي يكون الكود ديال ل connexion مع قاعدة البيانات:

                                //
<?php

class DB
{

    static public function connect()
    {
        $db = new PDO("mysql:host=localhost;dbname=employes", "root", "");
        $db->exec("set names utf8");
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
        return $db;
    }
}
                            

3- إضافة ل model Employes.php

منبعد زيد dossier models فيه زيد fichier سميه Employes.php هادا هو ل model ديالنا لي غادي يكونوا فيه les fonctions لي عندهم علاقة بقاعدة البيانات.

عندي les fonctions ديال إسترجاع المستخدمين واسترجاع مستخدم بل id ديالو والبحث و الإضافة والتعديل والحذف.

الكود ديال الملف هو :

                                //
<?php

class Employes{

    /**
     * return @void
     */

    static public function getAll(){
        $stmt = DB::connect()->prepare("SELECT * FROM employes");
        $stmt->execute();
        return $stmt->fetchAll();
        $stmt->close();
        $stmt = null;
    }

    public function getEmploye($data)
    {
        $id = $data['id'];
        try {
            $query = "SELECT * FROM employes WHERE id=:id";
            $statement = DB::connect()->prepare($query);
            $statement->execute(array(":id" => $id));
            $employe = $statement->fetch(PDO::FETCH_OBJ);
            return $employe;
        } catch (PDOException $ex) {
            echo 'erreur' . $ex->getMessage();
        }
    }

    public function searchEmploye($data)
    {
        $search = $data['search'];
        try {
            $query = "SELECT * FROM employes WHERE nom LIKE ?
                OR prenom LIKE ?
            ";
            $statement = DB::connect()->prepare($query);
            $statement->execute(array('%'.$search.'%', '%' . $search . '%'));
            $employes = $statement->fetchAll();
            return $employes;
        } catch (PDOException $ex) {
            echo 'erreur' . $ex->getMessage();
        }
    }

    static public function add($data)
    {
        $stmt = DB::connect()->prepare("INSERT INTO employes(nom,prenom,matricule,depart,poste,date_emb,statut) VALUES 
                (:nom,:prenom,:matricule,:depart,:poste,:date_emb,:statut)");
        $stmt->bindParam(':nom', $data['nom'], PDO::PARAM_STR);
        $stmt->bindParam(':prenom', $data['prenom'], PDO::PARAM_STR);
        $stmt->bindParam(':matricule', $data['matricule'], PDO::PARAM_STR);
        $stmt->bindParam(':depart', $data['depart'], PDO::PARAM_STR);
        $stmt->bindParam(':poste', $data['poste'], PDO::PARAM_STR);
        $stmt->bindParam(':date_emb', $data['date_emb'], PDO::PARAM_STR);
        $stmt->bindParam(':statut', $data['statut'], PDO::PARAM_STR);
        if ($stmt->execute()) {
            return 'ok';
        } else {
            return 'error';
        }
        $stmt->close();
        $stmt = null;
    }
    static public function update($data)
    {
        $stmt = DB::connect()->prepare("UPDATE employes SET nom = :nom,prenom = :prenom,
                    matricule = :matricule,depart = :depart,poste = :poste,
                    date_emb = :date_emb,statut = :statut WHERE id = :id");
        $stmt->bindParam(':id', $data['id'], PDO::PARAM_STR);
        $stmt->bindParam(':nom', $data['nom'], PDO::PARAM_STR);
        $stmt->bindParam(':prenom', $data['prenom'], PDO::PARAM_STR);
        $stmt->bindParam(':matricule', $data['matricule'], PDO::PARAM_STR);
        $stmt->bindParam(':depart', $data['depart'], PDO::PARAM_STR);
        $stmt->bindParam(':poste', $data['poste'], PDO::PARAM_STR);
        $stmt->bindParam(':date_emb', $data['date_emb'], PDO::PARAM_STR);
        $stmt->bindParam(':statut', $data['statut'], PDO::PARAM_STR);
        if ($stmt->execute()) {
            return 'ok';
        } else {
            return 'error';
        }
        $stmt->close();
        $stmt = null;
    }
    static public function delete($data)
    {
        $id = $data['id'];
        try {
            $query = "DELETE FROM employes WHERE id=:id";
            $statement = DB::connect()->prepare($query);
            $statement->execute(array(":id" => $id));
            if ($statement->execute()) {
                return 'ok';
            } else {
                return 'error';
            }
            $statement->close();
            $statement = null;
        } catch (PDOException $ex) {
            echo 'erreur' . $ex->getMessage();
        }
    }
}
                            

4- إضافة ل controller EmployesController.php

منبعد زيد dossier controllers فيه زيد fichier سميه EmployesController.php هادا هو ل controller ديالنا لي غادي يكونوا فيه نفس les fonctions لي زدنا فل model Employes فقط هنا كنستقبلوا المعلومات لي جاونا من الفورم وكنعطيهم ل les fonctions ديال ل model.

عندي les fonctions ديال إسترجاع المستخدمين واسترجاع مستخدم بل id ديالو والبحث و الإضافة والتعديل والحذف.

الكود ديال الملف هو :

                                    //
<?php


class EmployesController
{

    public function getAllEmployes(){
        $employes = Employes::getAll();
        return $employes;
    }

    public function getOneEmploye()
    {
        if (isset($_POST['id'])) {
            $data = array(
                'id' => $_POST['id'],
            );
            $employe = Employes::getEmploye($data);
            return $employe;
        }
    }

    public function findEmployes()
    {
        if (isset($_POST['search'])) {
            $data = array(
                'search' => $_POST['search'],
            );
            $employes = Employes::searchEmploye($data);
            return $employes;
        }
    }

    /**
     * return @void
     */

    public function addEmploye()
    {
        if (isset($_POST['submit'])) {
            $data = array(
                'nom' => $_POST['nom'],
                'prenom' => $_POST['prenom'],
                'matricule' => $_POST['mat'],
                'depart' => $_POST['dept'],
                'poste' =>  $_POST['poste'],
                'date_emb' =>  $_POST['dateem'],
                'statut' =>  $_POST['statut']
            );
            $result = Employes::add($data);
            if ($result === 'ok') {
                Session::set('success','Epmployé Ajouté');
                Redirect::to('home');
            }else{
                echo $result;
            }
        }
    }

    /**
     * return @void
     */

    public function updateEmploye()
    {
        if (isset($_POST['submit'])) {
            $data = array(
                'id' => $_POST['id'],
                'nom' => $_POST['nom'],
                'prenom' => $_POST['prenom'],
                'matricule' => $_POST['mat'],
                'depart' => $_POST['dept'],
                'poste' =>  $_POST['poste'],
                'date_emb' =>  $_POST['dateem'],
                'statut' =>  $_POST['statut']
            );
            $result = Employes::update($data);
            if ($result === 'ok') {
                Session::set('success', 'Epmployé Modifié');
                Redirect::to('home');
            } else {
                echo $result;
            }
        }
    }
    /**
     * return @void
     */

    public function deleteEmploye()
    {
        if (isset($_POST['id'])) {
            $data['id'] = $_POST['id'];
            $result = Employes::delete($data);
            if ($result === 'ok') {
                Session::set('success', 'Epmployé Supprimé');
                Redirect::to('home');
            } else {
                echo $result;
            }
        }
    }
}
                                

5- إضافة ل class Redirect

يلا شفتي ف les fonctions ديال ل controller غادي تلقى خدامين ب static function لي سميتها to ولي هي ديال ل class Redirect.

غادي نزيدو dossier نسميوه app فيه نزيدو dossier نسميوه classes فيه نزيدو fichier نسميوه Redirect لي هو ل class لي فيها ل fonction to لي كتاخد إسم ديال الصفحة وكتوجه المستخدم ليها.

الكود ديال الملف هو :

                                    //
<?php

class Redirect{

    /**
     * redirect to a page 
     */
    static public function to($page){
        header("location:$page");
    }

}
                                


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

بحث في الموقع


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