site ecommerce php mvc & pdo الجزء الخامس

imadbelasri PHP
PH

فهاد الجزء الخامس من site ecommerce php mvc & pdo غادي نكملوا l'affichage ديال les produits فالصفحة الرئيسية من بعد غادي نشوفوا كيفاش نعرضوا المعلومات الخاصة ب produit ضغطنا عليه أيضا غادي نشوفوا كيفاش نزيدوه فل panier.


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


1- إضافة الملف index.php

ف dossier ديال ل projet ديالنا غادي نزيدو fichier index.php فيه les pages ديالنا لي غادي نزيدهم ف array وغادي ن tester يلا كان عندي الأدمن connecté غادي نخليه يدخل ل les pages الخاصين به يلا مكنش أدمن غادي نوجهوا للصفحة لي بغا أيضا غادي نتحقق واش ل page لي مشالها المستخدم كاينة يلا مكنتش غادي نعرض 404 أيضا الصفحة غير موجودة.

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

                                                    
                                                        <?php
require_once './autoload.php';
require_once("./views/includes/header.php");

$home = new HomeController();

$pages = [
        'home','cart','dashboard','updateProduct','deleteProduct',
        'addProduct','emptycart','show','cancelcart','register',
        'login','checkout','logout','products','orders','addOrder'
    ];

if(isset($_GET['page'])){
    if(in_array($_GET['page'],$pages)){
        $page = $_GET['page'];
        if($page === "dashboard" || $page === "deleteProduct"
            || $page === "addProduct"  || $page === "updateProduct" || $page === "products" ||
            $page === "orders"){
                if(isset($_SESSION['admin']) && $_SESSION['admin'] == true){
                    $admin = new AdminController();
                    $admin->index($page);
                }else{
                    include('views/includes/404.php');
                }
        }else{
            $home->index($page);
        }
    }else{
        include('views/includes/404.php');
    }
}else{
    $home->index("home");
}

require_once("./views/includes/footer.php");
                                                    
                                                

2- إضافة الملف home.php

ف dossier views زيد fichier home.php هادي هي الصفحة الرئيسية ديالنا لي فيها الكود لي كنسترجع به les produits و les catégories أيضا عندي form لي فاش كنضغط على رابط مشاهدة produit كتديني للصفحة show لي غادي نزيدو من بعد بكود javascript لي غادي نزيدوه من بعد.

نفس الشي يلا ضغطت على شي catégorie كنسترجع les produits الخاصين بها وكنعرضهم فنفس الصفحة.

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

                                                        
                                                            <?php
    $categories = new CategoriesController();
    $categories = $categories->getAllCategories();
    if(isset($_POST["cat_id"])){
        $products = new ProductsController();
        $products = $products->getProductsByCategory($_POST['cat_id']);
    }else{
        $data = new ProductsController();
        $products = $data->getAllProducts();
    }
?>
<div class="container">
    <div class="row my-5">
        <div class="col-md-8">
            <div class="row">
                <?php
                    if(count($products) > 0) :
                ?>
                <?php
                    foreach($products as $product) :
                ?>  
                <div class="col-md-6 mb-2">
                    <div class="card h-100 bg-white rounded p-2">
                        <div class="card-header bg-light">
                            <form id="form" method="post" action="<?php echo BASE_URL;?>show">
                                <input type="hidden" name="product_id" id="product_id">
                            </form>
                            <h3 onclick="submitForm(<?php echo $product["product_id"];?>)" class="card-title">
                                <?php
                                    echo $product['product_title'];
                                ?>  
                            </h3>  
                        </div>
                        <div class="card-img-top">
                            <img src="./public/uploads/<?php echo $product["product_image"];?>" alt="" class="img-fluid">
                        </div>
                        <div class="card-body">
                            <p class="card-text">
                                <?php
                                    echo $product['short_desc'];
                                ?>
                            </p>
                        </div>
                        <div class="card-footer">
                            <span class="badge badge-danger p-2">
                                <?php
                                    echo $product['product_price'];
                                ?>dh
                            </span>
                             <span class="badge badge-dark p-2">
                                <strike>
                                    <?php
                                        echo $product['old_price'];
                                    ?>dh
                                </strike>
                            </span>
                        </div>
                    </div> 
                </div>
                <?php
                    endforeach;
                ?>
                <?php
                    else :
                ?>
                <div class="alert alert-info">
                    aucun produit trouvé
                </div>
                <?php
                    endif;
                ?>
            </div>
        </div>
        <div class="col-md-4">
            <h3 class="text-secondary m-3 text-center">
                Catégories
            </h3>
            <ul class="list-group">
                <?php
                    foreach($categories as $category) :
                ?> 
                    <li class="list-group-item text-center">
                        <form id="catPro" method="post" action="<?php echo BASE_URL;?>">
                            <input type="hidden" name="cat_id" id="cat_id">
                        </form>
                        <a onclick="getCatProducts(<?php echo $category['cat_id'];?>)" class="btn btn-link text-secondary" style="text-decoration:none;font-size:24px;cursor:pointer">
                            <?php
                                echo $category['cat_title'];
                            ?> 
                            (<?php
                                $productsByCat = new ProductsController();
                                $productsByCat = $productsByCat->getProductsByCategory($category['cat_id']);
                                echo count($productsByCat);
                            ?>)
                        </a>
                    </li>
                <?php
                    endforeach;
                ?>
            </ul>
        </div>
    </div>
</div>
                                                        
                                                    

3- إضافة الملف main.js

ف dossier public زيد dossier js فيه زيد fichier main.js لي فيه غادي يكون الكود لي فيه داك les fonctions لي زدنا ف home.php فاش كنضغط على les liens أيضا فيه fonction deleteForm لي غادي نحتاجوها فحذف produit فاش نوصلوا للجزء الخاص بالأدمن.

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

                                                        
                                                            function getCatProducts($id) {
  const input = document.querySelector("#cat_id");
  const form = document.querySelector("#catPro");
  input.value = $id;
  form.submit();
}

function submitForm($id) {
  const input = document.querySelector("#product_id");
  const form = document.querySelector("#form");
  input.value = $id;
  form.submit();
}

function deleteForm($id) {
  const input = document.querySelector("#delete_product_id");
  const form = document.querySelector("#delete_form");
  input.value = $id;
  form.submit();
}
                                                        
                                                    

4- إضافة الملف show.php

دائما ف views زيد fichier show.php لي فيه غادي يكون الكود لي كيمكن من إسترجاع ل produit من la base de données ودائما بإستعمال les fonctions لي سبق وزدنا فل controller ProductsController.

أيضا عندي الفورم لي كتمكني باش نزيد ل produit فل panier ولي كتديني ل la page checkout ولي غادي نزيدوها من بعد.

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

                                                        
                                                            <?php
    $data = new ProductsController();
    $product = $data->getProduct();
?>
<div class="container">
    <div class="row my-5">
        <div class="col-md-8">
            <div class="row">
                <div class="col-md-12 mb-2">
                    <div class="card h-100 bg-white rounded p-2">
                        <div class="card-header bg-light">
                            <h3 class="card-title">
                                <?php
                                    echo $product->product_title;
                                ?>  
                            </h3>  
                        </div>
                        <div class="card-img-top">
                            <img width="100%" 
                            src="./public/uploads/<?php echo $product->product_image;?>" alt="" class="img-fluid rounded">
                        </div>
                        <div class="card-body">
                            <p class="card-text">
                                <?php
                                    echo $product->short_desc;
                                ?>
                            </p>
                        </div>
                        <div class="card-footer">
                            <span class="badge badge-danger p-2">
                                <?php
                                    echo $product->product_price;
                                ?>dh
                            </span>
                             <span class="badge badge-dark p-2">
                                <strike>
                                    <?php
                                        echo $product->old_price;
                                    ?>dh
                                </strike>
                            </span>
                        </div>
                    </div> 
                </div>
            </div>
        </div>
        <div class="col-md-4">
            <h3 class="text-secondary m-3 text-center">
                Qté : 
            </h3>
            <form method="post" action="<?php echo BASE_URL;?>checkout">
                <div class="form-group">
                    <input type="number" name="product_qte" id="product_qte" class="form-control" value="1">
                    <input type="hidden" name="product_title" value="<?php echo $product->product_title;?>">
                    <input type="hidden" name="product_id" value="<?php echo $product->product_id;?>">
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-primary" value="Ajouter au panier">
                </div>
            </form>
        </div>
    </div>
</div>
                                                        
                                                    

5- إضافة الملف checkout.php

دائما ف views زيد fichier checkout.php لي فيه غادي يكون الكود لي كيمكن من إضافة ال produit لي اختارينا ل panier اول حاجة كنتحقق واش كاين فل panier يلا كان كنعرض رسالة بانه déja فل panier مكانش كنتحقق من الكمية لي كاينة ف stock يلا كانت قل من داكشي لي طلبنا كنعرض رسالة بأن الكمية المتوفرة غير كافية كان كلشي هو هذاك كنزيد ل produit ف session وكنوجه المستخدم ل cart.php لي غادي نزيدوها من بعد.

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

                                                        
                                                            <?php
if(isset($_POST["product_id"])){
    $id = $_POST["product_id"];
    $data = new ProductsController();
    $product = $data->getProduct();

    if($_SESSION["products_".$id]["title"] == $_POST["product_title"]){
        Session::set("info","Vous avez déja ajouté ce produit au panier");
        Redirect::to("cart");
    }else{
        if($product->product_quantity < $_POST["product_qte"]){
            Session::set("info","La quantité disponible est : $product->product_quantity");
            Redirect::to("cart");
        }else{
            $_SESSION["products_".$product->product_id] = array(
                "id" => $product->product_id,
                "title" => $product->product_title,
                "price" => $product->product_price,
                "qte" => $_POST["product_qte"],
                "total" => $product->product_price * $_POST["product_qte"],
            );
            $_SESSION["totaux"] += $_SESSION["products_".$product->product_id]["total"];
            $_SESSION["count"] += 1;
            Redirect::to("cart");
        }
    }
}else{
    Redirect::to("cart");
}
                                                        
                                                    

دروس ذات صلة

PH

كيفاش تزيد المعلومات فقاعدة البيانات بإستعمال Ajax

فهاد الدرس غادي نقادو واحد المشروع بسيط لي عبارة عن chatbox الهدف هنا ماشي هو نديرو chat ولكن الهدف...


PH

كيفاش تصاوب إختبار بإستعمال PHP الجزء الأول

فهاد الدرس غادي نشوفو كيفاش نديرو نصاوبو واحد الإختبار بسيط هاد الإختبار غادي يطرح الاسئلة على المست...


PH

كيفاش تصاوب إختبار بإستعمال PHP الجزء الثاني

فهاد الدرس لي هو الجزء الثاني ديال كيفاش نقاد إختبار بإستعمال ل php غادي نكملو باقي الصفحات لي غادي...


PH

كيفاش نصاوب blog بل php الجزء الأول

فهاد المشروع غادي نشوفو كيفاش نقادو blog بإستعمال php كما غادي نشوفو كيفاش نسجلو المعلومات ديالنا فق...


PH

كيفاش نصاوب blog بل php الجزء الثاني

فهاد الجزء الثاني من هاد المشروع غادي نشوفو كيفاش نسجلو المعلومات ديالنا فقاعدة البيانات و كيفاش ند...


PH

كيفاش نصاوب blog بل php الجزء الثالث

فهاد الجزء الثالث من هاد المشروع غادي نكملو الملفات الخاصة بالأدمن وغادي نقادو الصفحات الرئيسية لي...


PH

كيفاش نصاوب blog بل php الجزء الرابع

فهاد الجزء الرابع غادي نشوفو كيفاش نزيدو système d'authentification لي غادي يمكن المستخدم من التسجيل...


PH

مشروع Photos Gallery بل PHP الجزء الأول

فهاد الدرس غادي نشوفو كيفاش نصاوبو واحد المشروع لي عبارة عن موقع للصور المستخدم كيدخل كيشاهد الصور و...


PH

مشروع Photos Gallery بل PHP الجزء الثاني

فهاد الجزء الثاني غادي نقادو الملفات لي غادي يمكننا من ربط الإتصال بقاعدة البيانات وغادي نزيدو الملف...


PH

مشروع Photos Gallery بل PHP الجزء الثالث

فهاد الجزء الثالث من المشروع ديالنا غادي نكملو الملفات لي غادي يمكنو من التعامل مع المعلومات الخاصة...