مشاريع تطبيقية متكاملة في PHP
المشاريع التطبيقية المتكاملة هي أفضل طريقة لتطبيق المفاهيم المكتسبة في PHP وبناء مهارات عملية. في هذا القسم، سنناقش بناء مشروعين شائعين: نظام إدارة محتوى (CMS) ومتجر إلكتروني (E-commerce)، مع شرح موجز للخطوات الأساسية لكل مشروع.
المشروع الأول: نظام إدارة محتوى (CMS)
نظام إدارة المحتوى يسمح بإدارة الصفحات والمقالات ديناميكيًا من خلال لوحة تحكم.
1. إعداد قاعدة البيانات
ابدأ بإنشاء جداول لتخزين البيانات الخاصة بالمقالات والمستخدمين.
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, role ENUM('admin', 'editor') NOT NULL ); CREATE TABLE posts ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, content TEXT NOT NULL, author_id INT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (author_id) REFERENCES users(id) );
2. إنشاء تسجيل الدخول ولوحة التحكم
قم بإنشاء نظام تسجيل دخول للتحقق من هوية المستخدم وإعطاء صلاحيات بناءً على دوره.
<?php session_start(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = $_POST['username']; $password = $_POST['password']; $stmt = $conn->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $username); $stmt->execute(); $result = $stmt->get_result(); $user = $result->fetch_assoc(); if ($user && password_verify($password, $user['password'])) { $_SESSION['user'] = $user; header("Location: dashboard.php"); exit; } else { echo "Invalid credentials"; } } ?>
3. إدارة المقالات
قم بإنشاء واجهة لإضافة وتعديل وحذف المقالات.
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $title = $_POST['title']; $content = $_POST['content']; $author_id = $_SESSION['user']['id']; $stmt = $conn->prepare("INSERT INTO posts (title, content, author_id) VALUES (?, ?, ?)"); $stmt->bind_param("ssi", $title, $content, $author_id); $stmt->execute(); echo "Post added successfully!"; } ?>
4. عرض المقالات على الموقع
أنشئ صفحة تعرض المقالات ديناميكيًا:
<?php $result = $conn->query("SELECT posts.*, users.username FROM posts JOIN users ON posts.author_id = users.id"); while ($row = $result->fetch_assoc()) { echo "<h2>{$row['title']}</h2>"; echo "<p>{$row['content']}</p>"; echo "<small>By {$row['username']} on {$row['created_at']}</small>"; } ?>
المشروع الثاني: متجر إلكتروني (E-commerce)
المتجر الإلكتروني يوفر واجهة لعرض المنتجات وإدارة سلة التسوق وعمليات الشراء.
1. إعداد قاعدة البيانات
قم بإنشاء جداول لتخزين بيانات المنتجات والعملاء والطلبات.
CREATE TABLE products ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, description TEXT, price DECIMAL(10, 2) NOT NULL, stock INT DEFAULT 0 ); CREATE TABLE orders ( id INT AUTO_INCREMENT PRIMARY KEY, customer_name VARCHAR(255) NOT NULL, total_price DECIMAL(10, 2) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE order_items ( id INT AUTO_INCREMENT PRIMARY KEY, order_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, price DECIMAL(10, 2) NOT NULL, FOREIGN KEY (order_id) REFERENCES orders(id), FOREIGN KEY (product_id) REFERENCES products(id) );
2. عرض المنتجات
قم بإنشاء صفحة تعرض قائمة المنتجات المتوفرة.
<?php $result = $conn->query("SELECT * FROM products WHERE stock > 0"); while ($row = $result->fetch_assoc()) { echo "<h2>{$row['name']}</h2>"; echo "<p>{$row['description']}</p>"; echo "<p>Price: {$row['price']}</p>"; echo "<a href='add_to_cart.php?id={$row['id']}'>Add to Cart</a>"; } ?>
3. إدارة سلة التسوق
استخدم الجلسات لتخزين المنتجات في السلة.
<?php session_start(); if (!isset($_SESSION['cart'])) { $_SESSION['cart'] = []; } $product_id = $_GET['id']; $_SESSION['cart'][$product_id] = ($_SESSION['cart'][$product_id] ?? 0) + 1; header("Location: cart.php"); ?>
4. إتمام الطلب
قم بحفظ بيانات الطلب والمنتجات المرتبطة به في قاعدة البيانات.
<?php session_start(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $customer_name = $_POST['customer_name']; $total_price = array_sum(array_map(function($product) use ($products) { return $products[$product]['price'] * $_SESSION['cart'][$product]; }, array_keys($_SESSION['cart']))); $stmt = $conn->prepare("INSERT INTO orders (customer_name, total_price) VALUES (?, ?)"); $stmt->bind_param("sd", $customer_name, $total_price); $stmt->execute(); $order_id = $conn->insert_id; foreach ($_SESSION['cart'] as $product_id => $quantity) { $stmt = $conn->prepare("INSERT INTO order_items (order_id, product_id, quantity, price) VALUES (?, ?, ?, ?)"); $stmt->bind_param("iiid", $order_id, $product_id, $quantity, $products[$product_id]['price']); $stmt->execute(); } $_SESSION['cart'] = []; echo "Order placed successfully!"; } ?>
ملخص
بناء مشاريع تطبيقية متكاملة مثل نظام إدارة محتوى ومتجر إلكتروني يساعدك على تطبيق المفاهيم المكتسبة في PHP مثل إدارة قواعد البيانات، الجلسات، المصادقة، وعمليات CRUD (إنشاء، قراءة، تحديث، حذف). هذه المشاريع تُعد خطوة مهمة لفهم التحديات الحقيقية في تطوير تطبيقات الويب وإعدادك للعمل الاحترافي.