قمت ببرمجة موقع ووضعت فيه ان المستخدم يستطيع ان يضع اميله والباسورد ويكتب كومنت لنا انا مبتدئ لا ادري كم جدول احتاج في database in mysql ولازلت لا اعرف php لكن لدي وقت قصير للتعلم يقدر بأسبوع لسي هدفي التعلم الان لأنني سوف استعرض المشروع وبعدها في الوقت اخر اتعلم ارجو ان تفيدوني مادا افعل ادري ان chat gbt يستطيع ان يعطيني الكثير من الاكواد الجاهزة لكن اريد ان اعرف انا مادا افعل خطوة بخطوة
اريد الباك اند لتسجيل الدخول ووضع تعليق
يجب تعلم أساسيات PHP وSQL خلال تلك الفترة، حتى تستطيع شرح الأمر بشكل يوضح أنك مستوعب على الأقل، وليس حفظ وصف للمشروع وسرده، حيث ستحدث مشكلة في حال تم سؤالك عن الخطوات ولماذا قمت بأمر معين.
في اليوم الأول والثاني قم بالتالي:
أولاً يجب تهيئة البيئة للتطوير على نظام، وذلك بتثبيت بيئة تطوير وهي Laragon وستوفر لك PHP وmySQL وخادم Apache وتقنيات أخرى بشكل جاهز.
بعد التثبيت قم بتشغيل Laragon بالضغط على start ثم انقر بزر الفأرة الأيمن على واجهة البرنامج واختر mysql ثم اختر phpMyAdmin وهي أداة لإدارة قواعد البيانات ومن خلال تستطيع إنشاء الجداول واستعراض البيانات والتعديل وخلافه، بدلاً من كتابة كود SQL.
الآن قبل أي شيء، يجب تعلم أساسيات PHP وهي التالي:
- كيفية كتابة كود PHP (علامات <?php ... ?>).
- المتغيرات $variableName.
- أنواع البيانات الأساسية String, Integer, Boolean.
- الـ Arrays.
- الشروط if, else, elseif.
- الحلقات التكرارية for, while.
- الدوال function.
- كيف يستقبل PHP البيانات من نماذج HTML أي متغيرات $_POST أو $_GET.
- دالة echo أو print لعرض المخرجات.
ثم بعد ذلك في اليوم الثالث:
ستقوم بإنشاء قاعدة البيانات والجداول وذلك من خلال phpMyAdmin، تستطيع رؤية شرح على اليوتيوب لكيفية استخدامها ومن المفترض في كورسات PHP ستجد أنه يتم استخدامها في دروس قواعد البيانات، ويوجد كورسات مجانية كثيرة لـ PHP.
أنشئ قاعدة بيانات جديدة، سمّها php_basics
وداخلها أنشئ الجدولين users و comments بالتصميم التالي عن طريق واجهة phpMyAdmin:
جدول المستخدمين users لتخزين معلومات كل مستخدم سيحتوي على الأعمدة التالية:
- user_id: رقم تعريفي فريد لكل مستخدم (خصائص العمود هي Primary Key, INT, AUTO_INCREMENT).
- email: البريد الإلكتروني للمستخدم (خصائص العمود هي VARCHAR, UNIQUE - لمنع تكرار الإيميلات).
- password_hash: مهم جداً: لا تخزن كلمة المرور كما هي أبداً، الصحيح أننا نخزن hash بمعنى تجزئة لكلمة المرور بدلاً من ذلك لأسباب أمنية (خصائص العمود هي VARCHAR).
- created_at: تاريخ ووقت إنشاء الحساب (خصائص العمود هي TIMESTAMP, default CURRENT_TIMESTAMP) وهو عمود اختياري لكن مفيد.
جدول التعليقات comments لتخزين التعليقات وربطها بالمستخدم الذي كتبها، وسيحتوي على الأعمدة:
- comment_id: رقم تعريفي فريد لكل تعليق (Primary Key, INT, AUTO_INCREMENT).
- user_id: رقم المستخدم الذي كتب التعليق (Foreign Key referencing users.user_id, INT). هذا هو الرابط بين الجدولين.
- comment_text: نص التعليق نفسه (TEXT or LONGTEXT).
- created_at: تاريخ ووقت كتابة التعليق (TIMESTAMP, default CURRENT_TIMESTAMP).
وللتوضيح استخدمنا جدولين، لأنّ المستخدم الواحد يستطيع أن يكتب عدة تعليقات، ولو وضعت كل شيء في جدول واحد، ستكرر الإيميل والباسورد مع كل تعليق، وذلك سيء جداً للتخزين والأداء والأمان.
أيضًا فصل المستخدمين عن التعليقات يجعل إدارة البيانات أسهل، فمثلاً تحديث إيميل المستخدم مرة واحدة فقط في حقل واحد فقط أي في مكان واحد فقط.
أو تستطيع إنشاء الجداول بكتابة أوامر SQL التالية في تبويب SQL في phpMyAdmin:
CREATE TABLE users ( user_id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(255) NOT NULL UNIQUE, password_hash VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE comments ( comment_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, comment_text TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE -- إذا حذف المستخدم، تحذف تعليقاته );
باقي الأمور ستصبح سهلة بعد تعلم الأساسيات ولديك الوقت لذلك، في حال لديك تعامل سابق مع البرمجة، لو أردت شرح خطوات أخرى أخبرني.
هل لديك خبرة مسبقة في البرمجة عموما ؟ أو كنت تعمل على لغة برمجة أخرى ؟
إن وقت إسبوع جيد إلى حد ما إذا لم تكن لديك خبرة مسبقة في البرمجة سيتوجب عليك أولا دراسة الأساسيات بشكل سريع ومحاولة فهمها جيدا.
إليك الرابط التالي لموسوعة حسوب يمكنك دراسة php من خلالها :
وإليك المقالات والدرس التالي في موقع أكاديمية حسوب يمكنك الإطلاع عليها والبحث عن ما تريده هناك :
ولقد قمت بتجميع الأساسيات الأولية التي يجب عليك أولا دراستها قبل البدء في كتابة المشروع :
تعرف على لغة PHP :
البدء مع PHP والتعرف على أنواع البيانات فيها :
المتغيرات والثوابت في PHP :
المصفوفات (Arrays) في PHP:
بنى التحكم والحلقات التكرارية في PHP :
الأصناف (Classes) والكائنات (Objects) في PHP :
الجلسات وملفات تعريف الارتباط:
أو يمكنك قراءة هذا المقال الملخص لجميع ما سبق ولكنه بالطبع ليس به كل المعلومات التي تريدها ويمكنك النظر إليه لضيق الوقت لديك :
بعد ذلك يمكنك إستخدام الجداول التي وضحها الأستاذ مصطفي في الإجابة السابقة وإذا أردت إضافة خاصية مثلا الرد على ال comment نفسه سيتوجب عليك إضافة حقل جديد يسمى comment_id لجدول comments.
وإليك الكود التالي لتتمكن من استخدام MySQL في موقعك باستخدام PHP يجب أن تتعلم كيفية الاتصال بقاعدة البيانات. إليك كود بسيط للاتصال بقاعدة البيانات:
<?php
$servername = "localhost";
$username = "root"; // اسم المستخدم بقاعدة البيانات
$password = ""; // كلمة مرور قاعدة البيانات
$dbname = "your_database_name"; // إسم قاعدة البيانات لديك
// إنشاء الاتصال
$conn = new mysqli($servername, $username, $password, $dbname);
// التحقق من الاتصال
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
بما أنك تقول أنك أنشأت بالفعل تسجيل الدخول إليك إذا كيفية إضافة التعليق :
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
session_start(); // تأكد من أنك قد قمت بتسجيل الدخول
$user_id = $_SESSION['user_id'];
$comment = $_POST['comment'];
// الاتصال بقاعدة البيانات
$conn = new mysqli("localhost", "root", "", "your_database_name");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// إدخال التعليق في قاعدة البيانات
$stmt = $conn->prepare("INSERT INTO comments (user_id, comment) VALUES (?, ?)");
$stmt->bind_param("is", $user_id, $comment);
$stmt->execute();
$stmt->close();
echo "Comment added successfully!";
}
?>
<form method="POST" action="">
<textarea name="comment" required placeholder="Write your comment"></textarea>
<button type="submit">Post Comment</button>
</form>
ويفضل كما وضحت لك دراسة الأساسيات أولا حتى تكون فهمت معظم أو أغلب الأكواد المكتوبة ويمكنك شرحها إذا تم سؤالك فيها وأيضا يمكنك إضافة أو تعديل الأكواد بنفسك.
التعليقات