الجزء العاشر – مشاريع عملية في PHP: إنشاء نظام إدارة محتوى (CMS) ومتجر إلكتروني (E-commerce)- سلسلة FSWD – PHP

أولاً: مشروع نظام إدارة محتوى بسيط (CMS)
نظام إدارة المحتوى (CMS) هو تطبيق يتيح للمستخدمين إدارة المحتوى مثل المقالات، الصور، أو الصفحات على موقع الويب. في هذا المشروع، سنقوم ببناء CMS بسيط باستخدام PHP و MySQL.
المتطلبات:
-
قاعدة بيانات MySQL لتخزين المقالات.
-
واجهة مستخدم لإضافة وتعديل المقالات.
-
صفحة لعرض المقالات.
الخطوات:
1. إنشاء قاعدة البيانات:
أولاً، نحتاج إلى قاعدة بيانات لتخزين المقالات.
SQL لإنشاء قاعدة البيانات
CREATE DATABASE cms;
USE cms;
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. إعداد الاتصال بقاعدة البيانات:
سنبدأ بإنشاء ملف PHP للاتصال بقاعدة البيانات.
ملف db.php
<?php
$host = "localhost";
$dbname = "cms";
$username = "root"; // تأكد من أن اسم المستخدم وكلمة المرور لديك صحيحة
$password = "";
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
3. إضافة مقال جديد (Create):
ملف add_post.php
:
<?php
include 'db.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$title = $_POST['title'];
$content = $_POST['content'];
$sql = "INSERT INTO posts (title, content) VALUES (:title, :content)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':title', $title);
$stmt->bindParam(':content', $content);
if ($stmt->execute()) {
echo "تم إضافة المقال بنجاح!";
} else {
echo "حدث خطأ أثناء إضافة المقال.";
}
}
?>
<form method="POST">
<input type="text" name="title" placeholder="عنوان المقال" required><br>
<textarea name="content" placeholder="محتوى المقال" required></textarea><br>
<button type="submit">إضافة المقال</button>
</form>
4. عرض المقالات (Read):
ملف index.php
:
<?php
include 'db.php';
$sql = "SELECT * FROM posts ORDER BY created_at DESC";
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<h2>" . htmlspecialchars($row['title']) . "</h2>";
echo "<p>" . nl2br(htmlspecialchars($row['content'])) . "</p>";
echo "<hr>";
}
?>
5. تعديل المقال (Update):
ملف edit_post.php
:
<?php
include 'db.php';
if (isset($_GET['id'])) {
$id = $_GET['id'];
// استرجاع المقال
$sql = "SELECT * FROM posts WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
$post = $stmt->fetch(PDO::FETCH_ASSOC);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$title = $_POST['title'];
$content = $_POST['content'];
$sql = "UPDATE posts SET title = :title, content = :content WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':title', $title);
$stmt->bindParam(':content', $content);
$stmt->bindParam(':id', $id);
if ($stmt->execute()) {
echo "تم تحديث المقال بنجاح!";
} else {
echo "حدث خطأ أثناء تحديث المقال.";
}
}
}
?>
<form method="POST">
<input type="text" name="title" value="<?php echo htmlspecialchars($post['title']); ?>" required><br>
<textarea name="content" required><?php echo htmlspecialchars($post['content']); ?></textarea><br>
<button type="submit">تحديث المقال</button>
</form>
6. حذف المقال (Delete):
ملف delete_post.php
:
<?php
include 'db.php';
if (isset($_GET['id'])) {
$id = $_GET['id'];
// حذف المقال
$sql = "DELETE FROM posts WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id);
if ($stmt->execute()) {
echo "تم حذف المقال بنجاح!";
} else {
echo "حدث خطأ أثناء حذف المقال.";
}
}
?>
ثانيًا: مشروع متجر إلكتروني (E-commerce)
المتطلبات:
-
قاعدة بيانات MySQL لتخزين المنتجات، العملاء، والطلبات.
-
واجهات مستخدم لعرض المنتجات، إضافة سلة تسوق، وإتمام عملية الدفع.
الخطوات:
1. إنشاء قاعدة البيانات:
SQL لإنشاء قاعدة البيانات
CREATE DATABASE ecommerce;
USE ecommerce;
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
total_price DECIMAL(10, 2) NOT NULL,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
2. عرض المنتجات:
ملف products.php
:
<?php
include 'db.php';
$sql = "SELECT * FROM products";
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<h3>" . htmlspecialchars($row['name']) . "</h3>";
echo "<p>" . nl2br(htmlspecialchars($row['description'])) . "</p>";
echo "<p>السعر: " . $row['price'] . " جنيه</p>";
echo "<a href='add_to_cart.php?id=" . $row['id'] . "'>إضافة إلى السلة</a><br>";
}
?>
3. إضافة إلى السلة:
ملف add_to_cart.php
:
<?php
session_start();
if (isset($_GET['id'])) {
$product_id = $_GET['id'];
// إذا كانت السلة غير موجودة بعد، أنشئها
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = [];
}
// إضافة المنتج إلى السلة
$_SESSION['cart'][] = $product_id;
echo "تم إضافة المنتج إلى السلة!<br>";
echo "<a href='cart.php'>انتقل إلى السلة</a>";
}
?>
4. عرض سلة التسوق:
ملف cart.php
:
<?php
session_start();
include 'db.php';
if (isset($_SESSION['cart'])) {
$cart = $_SESSION['cart'];
$total = 0;
foreach ($cart as $product_id) {
$sql = "SELECT * FROM products WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $product_id);
$stmt->execute();
$product = $stmt->fetch(PDO::FETCH_ASSOC);
echo "<h3>" . htmlspecialchars($product['name']) . "</h3>";
echo "<p>" . nl2br(htmlspecialchars($product['description'])) . "</p>";
echo "<p>السعر: " . $product['price'] . " جنيه</p>";
$total += $product['price'];
}
echo "<h4>إجمالي المبلغ: " . $total . " جنيه</h4>";
echo "<a href='checkout.php'>إتمام الدفع</a>";
} else {
echo "سلة التسوق فارغة!";
}
?>
5. إتمام الدفع:
ملف checkout.php
:
<?php
session_start();
include 'db.php';
// تأكيد الطلب
if (isset($_SESSION['cart'])) {
$user_id = 1; // يجب أن يكون المستخدم مسجلاً لتحديد هويته
$total_price = 100; // مجموع السعر المحسوب مسبقًا
$sql = "INSERT INTO orders (user_id, total_price) VALUES (:user_id, :total_price)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':user_id', $user_id);
$stmt->bindParam(':total_price', $total_price);
if ($stmt->execute()) {
echo "تمت عملية الدفع بنجاح!";
unset($_SESSION['cart']);
} else {
echo "حدث خطأ أثناء الدفع.";
}
}
?>
الملخص:
-
نظام إدارة المحتوى (CMS): يشمل عمليات مثل إضافة المقالات، عرضها، تعديلها، وحذفها باستخدام PHP و MySQL.
-
المتجر الإلكتروني (E-commerce): يشمل إنشاء متجر بسيط باستخدام PHP و MySQL مع إمكانيات إضافة المنتجات إلى السلة وإتمام عملية الدفع.
💰 هل تبحث عن طريقة سهلة للربح من الإنترنت؟
ابدأ الآن واكسب أموالًا حقيقية من خلال خطوات بسيطة! 🌟
اضغط وابدأ الربح