[ درس ] برمجة منتدى صغير و بسيط, php + MySQL
صفحة 1 من اصل 1 • شاطر
[ درس ] برمجة منتدى صغير و بسيط, php + MySQL
السلام عليكم ...
حقيقه فكره راودتني ... فكره كنت اتمنى انها فعلا تحقق ...
وهي برمجة منتديات مثل الفي بي بس تكون عربيه ومن برمجة عرب ... يعني يجتمع المبرمجون يحاولن يسوونها عشان نستغني عن جون ونسخه ..
لازم نعمل شي احنا العرب ...يكون مجاااني ..نرتاح من التراخيص والهم ذا ...
فى هذا الدرس يتم شرح كيفية برمجة منتدى مصغر و هذا الشرح مفيد جدا بإذن الله لحديثى العهد بلغة PHP و من أهم فوائد الدرس شرح كيفية التعامل مع قواعد البيانات و ربط النماذج بالبرمجة و كيفية الدمج بين التصميم والبرمجة
الدرس منقول من http://www.phpeasystep.com و اضافة بعض التفصيلات من عندى لتعم الفائدة على الجميع كما قمت بالاستعانة ببعض افكار الاخ ميدو
نبدأ ... بسم الله
أولا تحديد الملفات التى سوف يتم كتابتها :
create_topic.php
add_topic.php
main_forum.php
view_topic.php
add_answer.php
ثانيا قاعدة البيانات و بنائها :
فى هذا الدرس سنحتاج فقط إلى جدولين و هما forum_question و forum_answer
و يكون بناءهم بهذا الشكل
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Forum_db](https://2img.net/h/www.phpeasystep.com/imgs/forum_db.gif)
بهذا نكون انتهينا من بناء جداول قاعدة البيانات التى سيتم تسجيل المواضيع و الردود بها
ثالثا البدء فى كتابة الملفات :
ملف create_topic.php
و سيظهر فى المتصفح بهذا الشكل :
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Forum_create_topic1](https://2img.net/h/www.phpeasystep.com/imgs/forum_create_topic1.gif)
و كود هذا الملف بسيط و هو عبارة عن نموذج إرسال عادى و لا يوجد به برمجة
كتابة الملف add_topic.php :
و هذا الملف هو المسئول عن نقل البيانات من صفحة كتابة الموضوع إلى جدول forum_question فى قاعدة البيانات و لا يظهر منه فى المتصفح شئ سوى رسالة تأكيد حفظ البيانات فى حالة نجاح حفظ البيانات او رسالة خطأ فى حالة حدوث خطأ
تحليل أكواد الملف بالتفصيل :
هذا الجزء هو الخاص بتحديد متغيرات سنستخدما فى الإتصال بقاعدة البيانات و كل متغير أمامه تعليق يوضح البيانات التى يحتوى عليها كل متغير
فى هذا الجزء يتم الإتصال بقاعدة البيانات باستخدام المتغيرات السابقة .. فى البداية يتم الاتصال بمزود قواعد البيانات باستخدام الدالة mysql_connect ثم بعد ذلك تحديد قاعدة البيانات باستخدام دالة mysql_select_db
فى هذا الجزء تم استخدام دالة date و ذلك لتحديد الوقت الذى تم حفظ الموضوع فيه لتسجيل ذلك فى بيانات الموضوع
فى هذا الجزء يتم استخدام أوامر Sql من اجل حفظ البيانات فى جدول forum_question .. تم حفظ أولا امر ال Sql فى متغير ثم استخدام هذا المتغير فى دالة mysql_query لتنفيذه
تم استخدام اداة الشرط if و ذلك للتحقق من ان امر Sql قد تم تنفيذه ام لا و يتم اعطاء رسالة نجاح أو خطأ
و أخيرا هذه الدالة التى تغلق الاتصال بقاعدة البيانات و هى خطوة مهمة جدا لأن ترك الاتصال مفتوحا دون غلق يكون عبئا على ذاكرة السيرفر .....و بهذا نكون انتهينا من كتابة هذا الملف
كتابة ملف main_forum.php :
هذا الملف هو المسئول عن عرض قائمة المواضيع المخزنة فى قاعدة البيانات و النموذج التالى يوضح الملف أكثر
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Forum_show](https://2img.net/h/www.phpeasystep.com/imgs/forum_show.gif)
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Forum_show](https://2img.net/h/www.phpeasystep.com/imgs/forum_show.gif)
كود الملف بالكامل
توضيح الأكواد بالتفصيل
هذا الجزء تم شرحه من قبل و هو الجزء الخاص بالاتصال بقاعدة البيانات و تنفيذ الاستعلام Query
هذا الجزء هو الخاص برأس الجدول الذى سيظهر فيه الموضوع و هو كود Html لا يوجد به اى برمجة
فى هذا الجزء تكون حلقة التكرار المسئولة عن تكرار الأوامر الخاصة بعرض المواضيع اسفل بعضها البعض باستخدام mysql_fetch_array و هذه الدالة تقوم بإدخال نتائج الاستعلام من قاعدة البيانات فى مصفوفة و يتم تكرار الاوامر مع كل موضوع حتى يصل الى اخر موضوع
هذا الجزء يجمع بين لغة html و ال php مثل هذا السطر
هنا نجد انه باستخدام ال html صنعنا وصلة و فى نهاية الوصلة تم اضافة
لإدخال ناتج من نتائج الاستعلام من قواعد البيانات فى نهاية الرابط لتصبح فى النهاية بهذا الشكل
ثم فى اغلقنا حلقة التكرار و الاتصال بقاعدة البيانات فى النهاية
هذا الجزء هو نهاية جدول عرض المنتديات و تم وضع رابط اضافة موضوع جديد به و هو ليس به اى برمجة مجرد تصميم فقط
و بهذا نكون انتهينا من كتابة هذا الملف
كتابة ملف view_topic.php :
هذا الملف هو الخاص بعرض الموضوع و الردود .. نموذج توضيحى للملف ..
هكذا يظهر فى المتصفح :
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Forum_create_topic](https://2img.net/h/www.phpeasystep.com/imgs/forum_create_topic.gif)
و هذا نموذج لجزء عرض الموضوع :
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Mockup_viewtopic_forum1](https://2img.net/h/www.phpeasystep.com/imgs/mockup_viewtopic_forum1.gif)
و هذا نموذج لجزء عرض الردود :
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Mockup_viewtopic_forum2](https://2img.net/h/www.phpeasystep.com/imgs/mockup_viewtopic_forum2.gif)
و هذا نموذج لجزء اضافة الردود :
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Mockup_viewtopic_forum3](https://2img.net/h/www.phpeasystep.com/imgs/mockup_viewtopic_forum3.gif)
كود الملف كاملا :
قبل الدخول فى تفصيل الكود .. فى الملف السابق وضعنا وصلة الموضوع بهذا الشكل
و قولنا ان # هى رقم الموضوع و اضافة id=# فى نهاية الرابط يعنى ان قيمة المتغير $id فى هذا الملف هى # و عن طريق هذا المتغير يتم الاستعلام من قاعدة البيانات
جزء مكرر و هو الاتصال بقاعدة البيانات و الاستعلام عن البيانات
جزء خاص بعرض الموضوع و تم استخدام نتائج الاستعلام فى عرض الموضوع مثل
و هو الخاص بعرض الموضوع نص الموضوع و هكذا مع باقى المتغيرات
هنا بداية حلقة التكرار التى سوف يتم استخدامها فى عرض الدروس باستخدام دالة mysql_fetch_array .. راجع المشاركة السابقة
هذا الجزء هو جسم حلقة التكرار و الذى سيتكرر حتى نهاية المصفوفة و هو يجمع بين التصميم و البرمجة .. يتم بناء الجدول بلغة html أما محتويات الجدول من بيانات فيتم وضعها بواسطة متغيرات مصفوفة الاستعلام التى نتجت من الدالة mysql_fetch_array
اما هذا الجزء فهو الخاص بتسجيل زيارات الموضوع لتسجيلها فى بيانات الموضوع .. فى البداية تم استخدام جملة الشرط if للتأكد من ان هناك قيمة سابقة فى خانة الزيارات ( views ) و اذا لم يوجد اى زيارات يتم تنفيذ امر sql يقوم بجعل عدد الزيارات = 1
فاذا لم يتحقق الشرط يكون هناك امر sql اخر يضيف الى القيمة السابقة من الزيارات رقم واحد ... ثم بعد ذلك غلق الاتصال بقاعدة البيانات
هذا الجزء بسيط جدا و هو عبارة عن نموذج ارسال موجه للملف add_answer.php لاضافة رد جديد فى الموضوع .. مع ملاحظة وجود حقل خفى hidden يحتوى على رقم الموضوع حتى يستخدم فى حفظ البيانات
و هكذا نكون انتهينا من هذا الملف
كتابة ملف add_answer.php :
هذا الملف يقوم بحفظ الردود الجديدة لا يظهر فى المتصفح منه الا رسالة تأكيد حفظ الرد او رسالة خطأ
كود الملف :
تفصيل الكود :
جزء خاص بالاتصال بقاعدة البيانات و تحديد تاريخ حفظ الرد
هذا الجزء يقوم بتحديد رقم اخر رد فى هذا الموضوع و هنا يأتى دور دالة الشرط if فاذا كان هناك ردود سابقة يضيف رقم 1 الى رقم اخر رد و يحفظها فى متغير Max_id اما اذا كان هذا اول رد يجعل قيمة max_id = 1 بعد ذلك تأتى اوامر sql لحفظ البيانات الجديدة الخاصة بالرد
فى هذا الجزء يتم التحقق من ان البيانات تم حفظها و يأتى برسالة تأكيد حفظ البيانات اما فى حالة الخطأ يظهر رسالة خطأ .. بالاضافة الى امر sql يقوم بتعديل رقم الرد .. ثم فى النهاية دالة اغلاق الاتصال بقاعدة البيانات
تم الانتهاء من كتابة هذا الملف
المقال منقول
حقيقه فكره راودتني ... فكره كنت اتمنى انها فعلا تحقق ...
وهي برمجة منتديات مثل الفي بي بس تكون عربيه ومن برمجة عرب ... يعني يجتمع المبرمجون يحاولن يسوونها عشان نستغني عن جون ونسخه ..
لازم نعمل شي احنا العرب ...يكون مجاااني ..نرتاح من التراخيص والهم ذا ...
فى هذا الدرس يتم شرح كيفية برمجة منتدى مصغر و هذا الشرح مفيد جدا بإذن الله لحديثى العهد بلغة PHP و من أهم فوائد الدرس شرح كيفية التعامل مع قواعد البيانات و ربط النماذج بالبرمجة و كيفية الدمج بين التصميم والبرمجة
الدرس منقول من http://www.phpeasystep.com و اضافة بعض التفصيلات من عندى لتعم الفائدة على الجميع كما قمت بالاستعانة ببعض افكار الاخ ميدو
نبدأ ... بسم الله
أولا تحديد الملفات التى سوف يتم كتابتها :
create_topic.php
add_topic.php
main_forum.php
view_topic.php
add_answer.php
ثانيا قاعدة البيانات و بنائها :
فى هذا الدرس سنحتاج فقط إلى جدولين و هما forum_question و forum_answer
و يكون بناءهم بهذا الشكل
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Forum_db](https://2img.net/h/www.phpeasystep.com/imgs/forum_db.gif)
- الكود:
CREATE TABLE `forum_question` (
`id` int(4) NOT NULL auto_increment,
`topic` varchar(255) NOT NULL default '',
`detail` longtext NOT NULL,
`name` varchar(65) NOT NULL default '',
`email` varchar(65) NOT NULL default '',
`datetime` varchar(25) NOT NULL default '',
`view` int(4) NOT NULL default '0',
`reply` int(4) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
CREATE TABLE `forum_answer` (
`question_id` int(4) NOT NULL default '0',
`a_id` int(4) NOT NULL default '0',
`a_name` varchar(65) NOT NULL default '',
`a_email` varchar(65) NOT NULL default '',
`a_answer` longtext NOT NULL,
`a_datetime` varchar(25) NOT NULL default '',
KEY `a_id` (`a_id`)
) TYPE=MyISAM;
بهذا نكون انتهينا من بناء جداول قاعدة البيانات التى سيتم تسجيل المواضيع و الردود بها
ثالثا البدء فى كتابة الملفات :
ملف create_topic.php
و سيظهر فى المتصفح بهذا الشكل :
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Forum_create_topic1](https://2img.net/h/www.phpeasystep.com/imgs/forum_create_topic1.gif)
- الكود:
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form id="form1" name="form1" method="post" action="add_topic.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3" bgcolor="#E6E6E6"><strong>Create New Topic</strong> </td>
</tr>
<tr>
<td width="14%"><strong>Topic</strong></td>
<td width="2%">:</td>
<td width="84%"><input name="topic" type="text" id="topic" size="50" /></td>
</tr>
<tr>
<td valign="top"><strong>Detail</strong></td>
<td valign="top">:</td>
<td><textarea name="detail" cols="50" rows="3" id="detail"></textarea></td>
</tr>
<tr>
<td><strong>Name</strong></td>
<td>:</td>
<td><input name="name" type="text" id="name" size="50" /></td>
</tr>
<tr>
<td><strong>Email</strong></td>
<td>:</td>
<td><input name="email" type="text" id="email" size="50" /></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Submit2" value="Reset" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
و كود هذا الملف بسيط و هو عبارة عن نموذج إرسال عادى و لا يوجد به برمجة
كتابة الملف add_topic.php :
و هذا الملف هو المسئول عن نقل البيانات من صفحة كتابة الموضوع إلى جدول forum_question فى قاعدة البيانات و لا يظهر منه فى المتصفح شئ سوى رسالة تأكيد حفظ البيانات فى حالة نجاح حفظ البيانات او رسالة خطأ فى حالة حدوث خطأ
- الكود:
<?php
$host="localhost"; // اسم المزود
$username=""; // اسم مستخدم قاعدة البيانات
$password=""; // كلمة سر قاعدة البيانات
$db_name="test"; // اسم قاعدة البيانات
$tbl_name="forum_question"; // اسم الجدول
//الأتصال بقاعدة البيانات
mysql_connect("$host", "$username", "$password")or die("فشل الاتصال بقاعدة البيانات");
mysql_select_db("$db_name")or die("فشل الاتصال بقاعدة البيانات");
$datetime=date("d/m/y h:i:s"); //تحديد تاريخ حفظ الموضوع
$sql="INSERT INTO $tbl_name(topic, detail, name, email, datetime)VALUES('$topic', '$detail', '$name', '$email', '$datetime')";
$result=mysql_query($sql);
if($result){
echo " تم حفظ الموضوع بنجاح<BR>";
echo "<a href=main_forum.php>العودة إلى الصفحة الرئيسية</a>";
}
else {
echo "خطأ";
}
mysql_close();
?>
تحليل أكواد الملف بالتفصيل :
- الكود:
$host="localhost"; // اسم المزود
$username=""; // اسم مستخدم قاعدة البيانات
$password=""; // كلمة سر قاعدة البيانات
$db_name="test"; // اسم قاعدة البيانات
$tbl_name="forum_question"; // اسم الجدول
هذا الجزء هو الخاص بتحديد متغيرات سنستخدما فى الإتصال بقاعدة البيانات و كل متغير أمامه تعليق يوضح البيانات التى يحتوى عليها كل متغير
- الكود:
//الأتصال بقاعدة البيانات
mysql_connect("$host", "$username", "$password")or die("فشل الاتصال بقاعدة البيانات");
mysql_select_db("$db_name")or die("فشل الاتصال بقاعدة البيانات");
فى هذا الجزء يتم الإتصال بقاعدة البيانات باستخدام المتغيرات السابقة .. فى البداية يتم الاتصال بمزود قواعد البيانات باستخدام الدالة mysql_connect ثم بعد ذلك تحديد قاعدة البيانات باستخدام دالة mysql_select_db
- الكود:
$datetime=date("d/m/y h:i:s"); //تحديد تاريخ حفظ الموضوع
فى هذا الجزء تم استخدام دالة date و ذلك لتحديد الوقت الذى تم حفظ الموضوع فيه لتسجيل ذلك فى بيانات الموضوع
- الكود:
$sql="INSERT INTO $tbl_name(topic, detail, name, email, datetime)VALUES('$topic', '$detail', '$name', '$email', '$datetime')";
$result=mysql_query($sql);
فى هذا الجزء يتم استخدام أوامر Sql من اجل حفظ البيانات فى جدول forum_question .. تم حفظ أولا امر ال Sql فى متغير ثم استخدام هذا المتغير فى دالة mysql_query لتنفيذه
- الكود:
if($result){
echo " تم حفظ الموضوع بنجاح<BR>";
echo "<a href=main_forum.php>العودة إلى الصفحة الرئيسية</a>";
}
else {
echo "خطأ";
}
تم استخدام اداة الشرط if و ذلك للتحقق من ان امر Sql قد تم تنفيذه ام لا و يتم اعطاء رسالة نجاح أو خطأ
- الكود:
mysql_close();
و أخيرا هذه الدالة التى تغلق الاتصال بقاعدة البيانات و هى خطوة مهمة جدا لأن ترك الاتصال مفتوحا دون غلق يكون عبئا على ذاكرة السيرفر .....و بهذا نكون انتهينا من كتابة هذا الملف
كتابة ملف main_forum.php :
هذا الملف هو المسئول عن عرض قائمة المواضيع المخزنة فى قاعدة البيانات و النموذج التالى يوضح الملف أكثر
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Forum_show](https://2img.net/h/www.phpeasystep.com/imgs/forum_show.gif)
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Forum_show](https://2img.net/h/www.phpeasystep.com/imgs/forum_show.gif)
كود الملف بالكامل
- الكود:
<?php
$host="localhost"; // المزود
$username=""; // اسم المستخدم
$password=""; // كلمة المرور
$db_name="test"; // اسم قاعدة البيانات
$tbl_name="forum_question"; // اسم الجدول
// الاتصال بقاعدة البيانات
mysql_connect("$host", "$username", "$password")or die("فشل الاتصال بالمزود");
mysql_select_db("$db_name")or die("فشل تحديد قاعدة البيانات");
$sql="SELECT * FROM $tbl_name ORDER BY id DESC";
// OREDER BY id DESC is order result by descending
$result=mysql_query($sql);
?>
<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td width="6%" align="center" bgcolor="#E6E6E6"><strong>#</strong></td>
<td width="53%" align="center" bgcolor="#E6E6E6"><strong>الموضوع</strong></td>
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>الزيارات</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>الردود</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>التاريخ</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){ // بدايةحلقة التكرار
?>
<tr>
<td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td>
<td bgcolor="#FFFFFF"><a href="view_topic.php?id=<? echo $rows['id']; ?>"><? echo $rows['topic']; ?></a><BR></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['view']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['reply']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['datetime']; ?></td>
</tr>
<?php
// نهاية حلقة التكرار
}
mysql_close();
?>
<tr>
<td colspan="5" align="right" bgcolor="#E6E6E6"><a href="create_topic.php"><strong>اضافة موضوع جديد </a></td>
</tr>
</table>
توضيح الأكواد بالتفصيل
- الكود:
<?php
$host="localhost"; // المزود
$username=""; // اسم المستخدم
$password=""; // كلمة المرور
$db_name="test"; // اسم قاعدة البيانات
$tbl_name="forum_question"; // اسم الجدول
// الاتصال بقاعدة البيانات
mysql_connect("$host", "$username", "$password")or die("فشل الاتصال بالمزود");
mysql_select_db("$db_name")or die("فشل تحديد قاعدة البيانات");
$sql="SELECT * FROM $tbl_name ORDER BY id DESC";
// OREDER BY id DESC is order result by descending
$result=mysql_query($sql);
?>
هذا الجزء تم شرحه من قبل و هو الجزء الخاص بالاتصال بقاعدة البيانات و تنفيذ الاستعلام Query
- الكود:
<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td width="6%" align="center" bgcolor="#E6E6E6"><strong>#</strong></td>
<td width="53%" align="center" bgcolor="#E6E6E6"><strong>الموضوع</strong></td>
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>الزيارات</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>الردود</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>التاريخ</strong></td>
</tr>
هذا الجزء هو الخاص برأس الجدول الذى سيظهر فيه الموضوع و هو كود Html لا يوجد به اى برمجة
- الكود:
<?php
while($rows=mysql_fetch_array($result)){ // بدايةحلقة التكرار
?>
<tr>
<td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td>
<td bgcolor="#FFFFFF"><a href="view_topic.php?id=<? echo $rows['id']; ?>"><? echo $rows['topic']; ?></a><BR></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['view']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['reply']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['datetime']; ?></td>
</tr>
<?php
// نهاية حلقة التكرار
}
mysql_close();
?>
فى هذا الجزء تكون حلقة التكرار المسئولة عن تكرار الأوامر الخاصة بعرض المواضيع اسفل بعضها البعض باستخدام mysql_fetch_array و هذه الدالة تقوم بإدخال نتائج الاستعلام من قاعدة البيانات فى مصفوفة و يتم تكرار الاوامر مع كل موضوع حتى يصل الى اخر موضوع
هذا الجزء يجمع بين لغة html و ال php مثل هذا السطر
- الكود:
<td bgcolor="#FFFFFF"><a href="view_topic.php?id=<? echo $rows['id']; ?>"><? echo $rows['topic']; ?></a><BR></td>
هنا نجد انه باستخدام ال html صنعنا وصلة و فى نهاية الوصلة تم اضافة
- الكود:
<? echo $rows['id']; ?>
لإدخال ناتج من نتائج الاستعلام من قواعد البيانات فى نهاية الرابط لتصبح فى النهاية بهذا الشكل
- الكود:
view_topic.php?id=#
ثم فى اغلقنا حلقة التكرار و الاتصال بقاعدة البيانات فى النهاية
- الكود:
<tr>
<td colspan="5" align="right" bgcolor="#E6E6E6"><a href="create_topic.php"><strong>اضافة موضوع جديد </a></td>
</tr>
</table>
هذا الجزء هو نهاية جدول عرض المنتديات و تم وضع رابط اضافة موضوع جديد به و هو ليس به اى برمجة مجرد تصميم فقط
و بهذا نكون انتهينا من كتابة هذا الملف
كتابة ملف view_topic.php :
هذا الملف هو الخاص بعرض الموضوع و الردود .. نموذج توضيحى للملف ..
هكذا يظهر فى المتصفح :
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Forum_create_topic](https://2img.net/h/www.phpeasystep.com/imgs/forum_create_topic.gif)
و هذا نموذج لجزء عرض الموضوع :
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Mockup_viewtopic_forum1](https://2img.net/h/www.phpeasystep.com/imgs/mockup_viewtopic_forum1.gif)
و هذا نموذج لجزء عرض الردود :
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Mockup_viewtopic_forum2](https://2img.net/h/www.phpeasystep.com/imgs/mockup_viewtopic_forum2.gif)
و هذا نموذج لجزء اضافة الردود :
![[ درس ] برمجة منتدى صغير و بسيط, php + MySQL Mockup_viewtopic_forum3](https://2img.net/h/www.phpeasystep.com/imgs/mockup_viewtopic_forum3.gif)
كود الملف كاملا :
- الكود:
<?php
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="forum_question"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="100%" border="0" cellpadding="3" cellspacing="1" bordercolor="1" bgcolor="#FFFFFF">
<tr>
<td bgcolor="#F8F7F1"><strong><? echo $rows['topic']; ?></strong></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><? echo $rows['detail']; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>By :</strong> <? echo $rows['name']; ?> <strong>Email : </strong><? echo $rows['email'];?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Date/time : </strong><? echo $rows['datetime']; ?></td>
</tr>
</table></td>
</tr>
</table>
<BR>
<?php
$tbl_name2="forum_answer"; // Switch to table "forum_answer"
$sql2="SELECT * FROM $tbl_name2 WHERE question_id='$id'";
$result2=mysql_query($sql2);
while($rows=mysql_fetch_array($result2)){
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td bgcolor="#F8F7F1"><strong>ID</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows['a_id']; ?></td>
</tr>
<tr>
<td width="18%" bgcolor="#F8F7F1"><strong>Name</strong></td>
<td width="5%" bgcolor="#F8F7F1">:</td>
<td width="77%" bgcolor="#F8F7F1"><? echo $rows['a_name']; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Email</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows['a_email']; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Answer</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows['a_answer']; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Date/Time</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows['a_datetime']; ?></td>
</tr>
</table></td>
</tr>
</table><br>
<?
}
$sql3="SELECT view FROM $tbl_name WHERE id='$id'";
$result3=mysql_query($sql3);
$rows=mysql_fetch_array($result3);
$view=$rows['view'];
// if have no counter value set counter = 1
if(empty($view)){
$view=1;
$sql4="INSERT INTO $tbl_name(view) VALUES('$view') WHERE id='$id'";
$result4=mysql_query($sql4);
}
// count more value
$addview=$view+1;
$sql5="update $tbl_name set view='$addview' WHERE id='$id'";
$result5=mysql_query($sql5);
mysql_close();
?>
<BR>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="add_answer.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td width="18%"><strong>Name</strong></td>
<td width="3%">:</td>
<td width="79%"><input name="a_name" type="text" id="a_name" size="45"></td>
</tr>
<tr>
<td><strong>Email</strong></td>
<td>:</td>
<td><input name="a_email" type="text" id="a_email" size="45"></td>
</tr>
<tr>
<td valign="top"><strong>Answer</strong></td>
<td valign="top">:</td>
<td><textarea name="a_answer" cols="45" rows="3" id="a_answer"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input name="id" type="hidden" value="<? echo $id; ?>"></td>
<td><input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Reset"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
قبل الدخول فى تفصيل الكود .. فى الملف السابق وضعنا وصلة الموضوع بهذا الشكل
- الكود:
view_topic.php?id=#
و قولنا ان # هى رقم الموضوع و اضافة id=# فى نهاية الرابط يعنى ان قيمة المتغير $id فى هذا الملف هى # و عن طريق هذا المتغير يتم الاستعلام من قاعدة البيانات
- الكود:
<?php
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="forum_question"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>
جزء مكرر و هو الاتصال بقاعدة البيانات و الاستعلام عن البيانات
- الكود:
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="100%" border="0" cellpadding="3" cellspacing="1" bordercolor="1" bgcolor="#FFFFFF">
<tr>
<td bgcolor="#F8F7F1"><strong><? echo $rows['topic']; ?></strong></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><? echo $rows['detail']; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>By :</strong> <? echo $rows['name']; ?> <strong>Email : </strong><? echo $rows['email'];?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Date/time : </strong><? echo $rows['datetime']; ?></td>
</tr>
</table></td>
</tr>
</table>
<BR>
جزء خاص بعرض الموضوع و تم استخدام نتائج الاستعلام فى عرض الموضوع مثل
- الكود:
$rows['detail']
و هو الخاص بعرض الموضوع نص الموضوع و هكذا مع باقى المتغيرات
- الكود:
<?php
$tbl_name2="forum_answer"; // Switch to table "forum_answer"
$sql2="SELECT * FROM $tbl_name2 WHERE question_id='$id'";
$result2=mysql_query($sql2);
while($rows=mysql_fetch_array($result2)){
?>
هنا بداية حلقة التكرار التى سوف يتم استخدامها فى عرض الدروس باستخدام دالة mysql_fetch_array .. راجع المشاركة السابقة
- الكود:
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td bgcolor="#F8F7F1"><strong>ID</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows['a_id']; ?></td>
</tr>
<tr>
<td width="18%" bgcolor="#F8F7F1"><strong>Name</strong></td>
<td width="5%" bgcolor="#F8F7F1">:</td>
<td width="77%" bgcolor="#F8F7F1"><? echo $rows['a_name']; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Email</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows['a_email']; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Answer</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows['a_answer']; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Date/Time</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows['a_datetime']; ?></td>
</tr>
</table></td>
</tr>
</table><br>
هذا الجزء هو جسم حلقة التكرار و الذى سيتكرر حتى نهاية المصفوفة و هو يجمع بين التصميم و البرمجة .. يتم بناء الجدول بلغة html أما محتويات الجدول من بيانات فيتم وضعها بواسطة متغيرات مصفوفة الاستعلام التى نتجت من الدالة mysql_fetch_array
- الكود:
<?
}
$sql3="SELECT view FROM $tbl_name WHERE id='$id'";
$result3=mysql_query($sql3);
$rows=mysql_fetch_array($result3);
$view=$rows['view'];
// if have no counter value set counter = 1
if(empty($view)){
$view=1;
$sql4="INSERT INTO $tbl_name(view) VALUES('$view') WHERE id='$id'";
$result4=mysql_query($sql4);
}else{
// count more value
$addview=$view+1;
$sql5="update $tbl_name set view='$addview' WHERE id='$id'";
$result5=mysql_query($sql5);
}
mysql_close();
?>
اما هذا الجزء فهو الخاص بتسجيل زيارات الموضوع لتسجيلها فى بيانات الموضوع .. فى البداية تم استخدام جملة الشرط if للتأكد من ان هناك قيمة سابقة فى خانة الزيارات ( views ) و اذا لم يوجد اى زيارات يتم تنفيذ امر sql يقوم بجعل عدد الزيارات = 1
فاذا لم يتحقق الشرط يكون هناك امر sql اخر يضيف الى القيمة السابقة من الزيارات رقم واحد ... ثم بعد ذلك غلق الاتصال بقاعدة البيانات
- الكود:
<BR>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="add_answer.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td width="18%"><strong>Name</strong></td>
<td width="3%">:</td>
<td width="79%"><input name="a_name" type="text" id="a_name" size="45"></td>
</tr>
<tr>
<td><strong>Email</strong></td>
<td>:</td>
<td><input name="a_email" type="text" id="a_email" size="45"></td>
</tr>
<tr>
<td valign="top"><strong>Answer</strong></td>
<td valign="top">:</td>
<td><textarea name="a_answer" cols="45" rows="3" id="a_answer"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input name="id" type="hidden" value="<? echo $id; ?>"></td>
<td><input type="submit" name="Submit" value="Submit"> <input type="reset" name="Submit2" value="Reset"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
هذا الجزء بسيط جدا و هو عبارة عن نموذج ارسال موجه للملف add_answer.php لاضافة رد جديد فى الموضوع .. مع ملاحظة وجود حقل خفى hidden يحتوى على رقم الموضوع حتى يستخدم فى حفظ البيانات
و هكذا نكون انتهينا من هذا الملف
كتابة ملف add_answer.php :
هذا الملف يقوم بحفظ الردود الجديدة لا يظهر فى المتصفح منه الا رسالة تأكيد حفظ الرد او رسالة خطأ
كود الملف :
- الكود:
<?php
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="forum_answer"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$datetime=date("d/m/y H:i:s");
// Find highest answer number.
$sql="SELECT MAX(a_id) AS Maxa_id FROM $tbl_name WHERE question_id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
// add + 1 to highest answer number and keep it in variable name "$Max_id". if there no answer yet set it = 1
if ($rows) {
$Max_id = $rows['Maxa_id']+1;
}
else {
$Max_id = 1;
}
// Insert answer
$sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')";
$result2=mysql_query($sql2);
if($result2){
echo "Successful<BR>";
echo "<a href='view_topic.php?id=".$id."'>View your answer</a>";
// If added new answer, add value +1 in reply column
$tbl_name2="forum_question";
$sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'";
$result3=mysql_query($sql3);
}
else {
echo "ERROR";
}
mysql_close();
?>
تفصيل الكود :
- الكود:
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="forum_answer"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$datetime=date("d/m/y H:i:s");
جزء خاص بالاتصال بقاعدة البيانات و تحديد تاريخ حفظ الرد
- الكود:
// Find highest answer number.
$sql="SELECT MAX(a_id) AS Maxa_id FROM $tbl_name WHERE question_id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
// add + 1 to highest answer number and keep it in variable name "$Max_id". if there no answer yet set it = 1
if ($rows) {
$Max_id = $rows['Maxa_id']+1;
}
else {
$Max_id = 1;
}
// Insert answer
$sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')";
$result2=mysql_query($sql2);
هذا الجزء يقوم بتحديد رقم اخر رد فى هذا الموضوع و هنا يأتى دور دالة الشرط if فاذا كان هناك ردود سابقة يضيف رقم 1 الى رقم اخر رد و يحفظها فى متغير Max_id اما اذا كان هذا اول رد يجعل قيمة max_id = 1 بعد ذلك تأتى اوامر sql لحفظ البيانات الجديدة الخاصة بالرد
- الكود:
if($result2){
echo "Successful<BR>";
echo "<a href='view_topic.php?id=".$id."'>View your answer</a>";
// If added new answer, add value +1 in reply column
$tbl_name2="forum_question";
$sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'";
$result3=mysql_query($sql3);
}
else {
echo "ERROR";
}
mysql_close();
?>
فى هذا الجزء يتم التحقق من ان البيانات تم حفظها و يأتى برسالة تأكيد حفظ البيانات اما فى حالة الخطأ يظهر رسالة خطأ .. بالاضافة الى امر sql يقوم بتعديل رقم الرد .. ثم فى النهاية دالة اغلاق الاتصال بقاعدة البيانات
تم الانتهاء من كتابة هذا الملف
المقال منقول
مدونة وليدوف التطويرية- ...
- تاريخ التسجيل : 22/11/2011
المساهمات : 32
النقاط : 48
التقيم : 4
الدولة :
الجنس :
رد: [ درس ] برمجة منتدى صغير و بسيط, php + MySQL
جميل منك كل هذا الجهد اخى الكريم ....جزاكم الله خيرا
ذوكا- .....
- تاريخ التسجيل : 26/05/2013
المساهمات : 92
النقاط : 156
التقيم : 12
الدولة :
الجنس :
رد: [ درس ] برمجة منتدى صغير و بسيط, php + MySQL
والله رائع ...نرجوا المزيد
VB.NET- المراقبين
- تاريخ التسجيل : 18/02/2011
المساهمات : 121
النقاط : 189
التقيم : 6
الدولة :
الجنس :
رد: [ درس ] برمجة منتدى صغير و بسيط, php + MySQL
جزاكم الله خيرا اخى الكريم
م/موسي- الاشراف
- تاريخ التسجيل : 18/02/2011
المساهمات : 178
النقاط : 346
التقيم : 12
الدولة :
الجنس :
رد: [ درس ] برمجة منتدى صغير و بسيط, php + MySQL
اشكركم على المرور ايها الافاضل
مدونة وليدوف التطويرية- ...
- تاريخ التسجيل : 22/11/2011
المساهمات : 32
النقاط : 48
التقيم : 4
الدولة :
الجنس :
رد: [ درس ] برمجة منتدى صغير و بسيط, php + MySQL
رااااااااااااائع جداااااااااا
جزاك الله عنا كل خييرر نرجو منك المزيد لتععم الفائدة
جزاك الله عنا كل خييرر نرجو منك المزيد لتععم الفائدة
Programmer_78- .
- تاريخ التسجيل : 12/08/2014
المساهمات : 3
النقاط : 3
التقيم : 0
الدولة :
الجنس :
| |
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
» شركة تنظيف مسابح بالرياض
» "بروتين بعد التكميم فوائد البروتين بعد التكميم بروتين بودر بعد التكميم"
» اشهر نسخ واتساب بلس 2023 whatsapp plus
» متجر مجوهرات دير: إشراقة الذهب الخالص
» صراف صينى مقاس57*40
» فلاي تورز: اكتشف عالمًا من السفر والسياحة المثيرة
» متجر yallaa kids : مصدر الإبداع والتعلم للأطفال
» افضل تمويل
» "اقوي عروض المساج "