site ecommerce php mvc & pdo الجزء الأول

فهاد التحديث الجديد ل projet site ecommerce ب php و mysql غادي نقادو نفس ال projet السابق لي هو site ecommerce لكن هاد المرة مع تحيين الكود بإستعمال PHP MVC و PDO وغادي نديرو أيضا تحديث للدفع ب paypal لي كان فيه إشكال من قبل مع إضافة الجزء الخاص بالأدمن.

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

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


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


غادي تزيد قاعدة بيانات جديدة سميها لي بغيتي أنا سميتها phpstore ولي غادي يكونوا فيها 4 ديال les tables لي هما products, orders, users, categories ولي structure ديالهم هي هادي :

                                    
                                        CREATE TABLE `categories` (
  `cat_id` int(11) NOT NULL,
  `cat_title` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE `orders` (
  `id` int(11) NOT NULL,
  `fullname` varchar(250) NOT NULL,
  `product` varchar(250) NOT NULL,
  `qte` int(11) NOT NULL,
  `price` float NOT NULL,
  `total` int(11) NOT NULL,
  `done_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf32;


CREATE TABLE `products` (
  `product_id` int(11) NOT NULL,
  `product_title` varchar(255) NOT NULL,
  `product_category_id` int(11) NOT NULL,
  `product_price` float NOT NULL,
  `old_price` float NOT NULL,
  `product_quantity` int(11) NOT NULL,
  `product_description` text NOT NULL,
  `short_desc` text NOT NULL,
  `product_image` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE `users` (
  `user_id` int(11) NOT NULL,
  `fullname` varchar(255) NOT NULL,
  `username` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `admin` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

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

--egories`
  ADD PRIMARY KEY (`cat_id`);

--
-- Index pour la table `categories`
--
ALTER TABLE `cat
-- Index pour la table `orders`
--
ALTER TABLE `orders`
  ADD PRIMARY KEY (`id`);

--
-- Index pour la table `products`
--
ALTER TABLE `products`
  ADD PRIMARY KEY (`product_id`);

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

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

--
-- AUTO_INCREMENT pour la table `categories`
--
ALTER TABLE `categories`
  MODIFY `cat_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT pour la table `orders`
--
ALTER TABLE `orders`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT pour la table `products`
--
ALTER TABLE `products`
  MODIFY `product_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT pour la table `users`
--
ALTER TABLE `users`
  MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;
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 جديد فيه زيد dossier database لي فيه غادي تكون ل class لي غادي تدير la connexion مع la base de données ولي كيف قلنا خدمنا ب pdo.

إذن غادي تزيد fichier سميه DB.php ف dossier database ولي فيه الكود التالي :

                                    
                                        <?php

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

3- إضافة الملف autoload.php


ف dossier الرئيسي زيد fichier سميه autoload.php هاد الملف غادي يكون فيه الكود لي كيمكن باش نخدم بالملفات لي غادي نزيدو من بعد يعني ل models ول controllers و باقي ل classes بلا منحتاج كل مرة ندير include لكل fichier.


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

                                      
                                        <?php
session_start();

require_once("./bootstrap.php");

spl_autoload_register('autoload');

function autoload($class_name){
    $array_path = array(
        'database/',
        'app/classes/',
        'models/',
        'controllers/'
    );
    $parts = explode('\\',$class_name);
    $name = array_pop($parts);
    
    foreach($array_path as $path){
        $file = sprintf($path.'%s.php',$name);
        if(is_file($file)){
            include_once $file;
        }
    }
}
                                      
                                    

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


دائما ف dossier الرئيسي زيد fichier سميه bootstrap.php هاد الملف غادي يكون فيه ل url de base ديالنا ولي هو الرابط ديال ل projet باش بلا منبقاو كل مرة كنكتبوا نفس الرابط يدويا.


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

                                        
                                            <?php

define('BASE_URL','http://localhost/php-store-channel/');
                                        
                                    

5- إضافة الملف htaccess.


دائما ف dossier الرئيسي زيد fichier سميه htaccess. لي غادي يكون فيه الكود لي كيمكن من إعادة كتابة الروابط ديالنا فحنا باش نعرضوا les pages غادي نخدموا بها الطريقة index.php?page=home وهاد الملف غادي يخلني نعاودوا نكتبوا الرابط بهاد الطريقة localhost/nom-projet/home.

متنساش تبدل le-nom-de-votre-projet لي كاينة فالكود بإسم ل projet ديالك.

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

                                        
                                            Options All -Indexes

RewriteEngine On

RewriteBase /le-nom-de-votre-projet

RewriteRule ^([-a-zA-Z0-9]+)$ index.php?page=$1
                                        
                                    

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