موقع شكايات ب php و mysql الجزء الرابع


فهاد الجزء الرابع من موقع شكايات ب php و mysql غادي نشوفو ل backend يعني ل admin panel غادي نشوفو كيفاش نزيدو أدمن للموقع ديالنا هاد الأدمن غادي يمكنلو يعرض الشكايات ويعدل ويمسح الشكايات لي اختار كما غادي نشوفو كيفاش نعرضو الوضع ديال الشكاية واش تقادت ولا ترفضت ولا مازال قيد الدرس.

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

1- إضافة ال جدول admins

أول حاجة غادي نزيد table جديدة فقاعدة البيانات لي زدنا فالأجزاء السابقة نسميها admins فيها غادي يكونوا les admins لي غادي نزيدوا الكود باش تزيدها هو :


                                CREATE TABLE `admins` (
  `id` int(11) NOT NULL,
  `fullname` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `admins`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `admins`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=0;
                            

2- تعديل الملف Query.php

كنمشي للمجلد database فيه كاين الملف Query.php لي فيه كاين les fonctions ديالنا فكنزيد les fonctions لي غادي نحتاج فعندي ل fonction insert_admin لي كتمكن من إضافة أدمن جديد لقاعدة البيانات منبعد عندي fonction get_all لي كتمكني من استرجاع الشكايات لي عندي كاملين من بعد عندي ل fonction delete لي كتمكن من حدف شكاية بل id ديالها منبعد عندي ل fonction redirect لي كتوجه المستخدم للصفحة معينة منبعد عندي ل fonction update لي كتعدل شكاية باستعمال ل id ديالها منبعد عندي check_login لي كتحقق واش الأدمن مكونيكطي ثم كاين ل fonction logout لي كتديكونيكطي لأدمن منبعد كاين auth لي كتكونيكطيه باستعمال ل email ول mot de passe ديالو الكود لي غادي تزيد  للملف هو :

                                public function insert_admin($values = array()){
        global $database;
        $sql = "INSERT INTO admins (fullname,email,password) VALUES ('".implode("','",$values)."')";
        if($database->query($sql)){
            return $database->inserted_id();
        }else{
            return mysqli_error($database->connection);
        }
    }
public static function get_all(){
        global $database;
        $sql = "SELECT * FROM plaintes";
        $result = $database->query($sql);
        return $result;
    }
    public function delete($id){
        global $database;
        $id = $database->escape_string($id);
        $sql = "DELETE FROM plaintes WHERE id = $id";
        $database->query($sql);
        if($database->query($sql)){
            return true;
        }else{
            return mysqli_error($database->connection);
        }
    }
    public function redirect($page){
        header('location:'.$page);
    }
    public function update($id,$status){
        global $database;
        $sql = "UPDATE plaintes SET status='$status' WHERE id='$id'";
        $database->query($sql);
        return (mysqli_affected_rows($database->connection) == 1) ? true : false;
    }
    public function check_login(){
        if(!isset($_SESSION['admin_id']) && $_SESSION['admin'] == false){
            $this->redirect('log-admin.php');
        }
    }
    public function logout(){
        unset($_SESSION['admin_id']);
        $_SESSION['admin'] = false;
        session_destroy();
        $this->redirect("index.php");
    }
    public  function auth($passe,$email){
        global $database;
        $passe = sha1($passe);
        $sql = "SELECT * FROM admins WHERE password='$passe' AND email='$email'";
        $result = $database->query($sql);
        $admin = mysqli_fetch_assoc($result);
        if(!empty($admin)){
            $_SESSION['admin_id'] = $admin['id'];
            $_SESSION['admin'] = true;
            $this->redirect('admin.php');
        }else{
            return false;
        }
    }
                            

3- الملف admin.php

فالمجلد الرئيسي ديال ال projet غادي تزيد ملف جديد تسميه admin.php فيه غادي يكون الكود لي كيعرض les plaintes كاملين فأول حاجة كنتحقق واش الأدمن مكونيكطي ولا لا من بعد مكن créer l'objet من la classe Query وكنخدم بل fonction check_login باش كنتحقق منبعد كنخدم بل fonction get_all لي كنرجع بها الشكايات كاملين وكنعرض المعلومات كاملين فجدول فبالنسبة ل status غادي تزيد champ ف la table plaintes سميه status de type integer عطيه par défaut 0 ف status 0 كتعني الشكاية قيد الدرس status 1 كتعني بلي réglée و status 2 كتعني بلي الشكاية ترفضت وعندي ايضا les liens ديال التعديل والحدف ولي غادي نشوفو الملفات ديالهم من بعد الكود ديال الملف هو :

                                <?php
require('header.php');
$query = new Query();
$query->check_login();
?>
    <section class="list-plain">
        <div class="container">
            <h2>Liste plaintes</h2>
            <?php 
                if(isset($_GET['delete'])){
                    if($_GET['delete'] == 'success'){
                        echo '<div class="container alert-success">Plainte supprimée avec succés.</div>';
                    }else{
                        echo '<div class="container alert-danger">Une erreur est survenue réessayer plutard !</div>';
                    }
                }
            ?>  
            <table class="table">
                <thead class="thead">
                    <tr>
                        <th>Id</th>
                        <th>Nom & Prénom</th>
                        <th>Email</th>
                        <th>Catégorie</th>
                        <th>Ville</th>
                        <th>Titre</th>
                        <th>Déscription</th>
                        <th>Ajoutée</th>
                        <th>Status</th>
                        <th>Action</th>
                    </tr>
                </thead>
                <tbody>
                    <?php 
                        $query = new Query();
                        $results = $query->get_all();
                        while($row = mysqli_fetch_assoc($results)):
                    ?>  
                        <tr>
                            <td><?php echo $row['id'];?></td>
                            <td><?php echo $row['fullname'];?></td>
                            <td><?php echo $row['email'];?></td>
                            <td><?php echo $row['category'];?></td>
                            <td><?php echo $row['city'];?></td>
                            <td><?php echo $row['title'];?></td>
                            <td><?php echo $row['body'];?></td>
                            <td><?php echo $row['created'];?></td>
                            <td class="status">
                                <?php 
                                    if($row['status'] == 0){
                                        echo '<div class="info">En cours...</div>';
                                    }else if($row['status'] == 1){
                                        echo '<div class="success">Réglée </div>';
                                    }else{
                                        echo '<div class="failed">Rejetée </div>';
                                    }
                                ;?>
                            </td>
                            <td><a href="delete-plainte.php?id=<?php echo $row['id'];?>" class="trash"></a><a href="edit-plainte.php?id=<?php echo $row['id'];?>" class="edit"></a></td> 
                        </tr>
                    <?php 
                        endwhile;
                    ?>  
                </tbody>
            </table>
        </div>
    </section>
    <?php 
        $db = new Database();
    ?>
<?php require('footer.php');?>
                            

4- الملف edit-plainte.php

فالمجلد الرئيسي ديال ال projet غادي تزيد ملف جديد تسميه
edit-plainte.php  فيه غادي يكون الكود لي كيمكن الأدمن من تعديل plainte اختارها فعندي لفورم لي فيها select box فيه des options كتخص الشكاية فمنبعد مكن créer l'objet من la classe Query كنسترجع ل id ديال الشكاية لي جاني من admin.php والقيمة ديال select box لي جاتني من الفورم منبعد كنرسلهم لل fonction update لي كتعدل الشكاية وكنعرض رسالة النجاح أو الفشل الكود ديال الملف هو :

                                    <?php 
require('header.php');
$id = $_GET['id'];
$query = new Query();
?>
<div class="container">
    <article>
        <main class="container">
            <div class="add-plainte">
                <h1 class="head-one">
                   Modifier Plainte
                </h1>
                <?php
                    if(isset($_POST['submit'])){
                        $query = new Query();
                        $id =  $database->escape_string($_GET['id']);
                        $status = $database->escape_string($_POST['status']);
                        if($query->update($id,$status)){
                            echo '<div class="container alert-info">Plainte modifiée avec succés.</div>';
                        }else{
                            echo '<div class="container alert-danger">Aucune plainte trouvée!</div>';
                        }
                    }
                ?>
                <div>
                    <form method="post" action="edit-plainte.php?id=<?php echo $_GET['id'];?>">
                        <div class="form-group">
                            <label for="name" sr-only="">Status*
                            </label>
                            <select name="status" id="status" class="form-control" required="">
                                <option value="0">En cours</option>
                                <option value="1">Réglé</option>
                                <option value="2">Rejeté</option>
                            </select>
                        </div>
                        <div class="form-group">
                            <input type="submit" name="submit" class="btn-primary" value="Valider">
                        </div>
                    </form>
                </div>
            </div>
        </main>
    </article>
</div>
<?php 
    require('footer.php');
?>
                                

5- الملف delete-plainte.php

فالمجلد الرئيسي ديال ال projet غادي تزيد ملف جديد تسميه
delete-plainte.php  فيه غادي يكون الكود لي كيمكن الأدمن من مسح plainte  فمنبعد مكن créer l'objet من la classe Query كنسترجع ل id ديال الشكاية لي جاني من admin.php منبعد كنرسلو لل fonction delete لي كتمسح الشكاية وكنوجه المستخدم لل admin.php مع variable delete لي فيها واش نجح ولا فشل الحدف وبها كنعرض الميساج ديال النجاح او الفشل الكود ديال الملف هو :

                                    <?php 
require('database/Query.php');
$id = $_GET['id'];
$query = new Query();
if($query->delete($id)){
    $query->redirect('admin.php?delete=success');
}else{
    $query->redirect('admin.php?delete=failed');
}
?>
                                


بحث في الموقع


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