المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس الربع:برمجة php + MySQL


عاشق الحب
08-11-2007, 10:05 AM
السلام عليكم ...

حقيقه فكره راودتني ... فكره كنت اتمنى انها فعلا تحقق ...

وهي برمجة منتديات مثل الفي بي بس تكون عربيه ومن برمجة عرب ... يعني يجتمع المبرمجون يحاولن يسوونها عشان نستغني عن جون ونسخه ..

لازم نعمل شي احنا العرب ...
يكون مجاااني ..
نرتاح من التراخيص والهم ذا ...

فى هذا الدرس يتم شرح كيفية برمجة منتدى مصغر و هذا الشرح مفيد جدا بإذن الله لحديثى العهد بلغة PHP و من أهم فوائد الدرس شرح كيفية التعامل مع قواعد البيانات و ربط النماذج بالبرمجة و كيفية الدمج بين التصميم والبرمجة


نبدأ ... بسم الله

أولا تحديد الملفات التى سوف يتم كتابتها :
create_topic.php
add_topic.php
main_forum.php
view_topic.php
add_answer.php
ثانيا قاعدة البيانات و بنائها :

فى هذا الدرس سنحتاج فقط إلى جدولين و هما forum_question و forum_answer

و يكون بناءهم بهذا الشكل

http://www.phpeasystep.com/imgs/forum_db.gif

و كود البناء هو


رمز PHP:
]
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`)
[/COLOR]


رمز PHP:
) TYPE=MyISAM;




بهذا نكون انتهينا من بناء جداول قاعدة البيانات التى سيتم تسجيل المواضيع و الردود بها


ثالثا البدء فى كتابة الملفات :

ملف create_topic.php

و سيظهر فى المتصفح بهذا الشكل :

http://www.phpeasystep.com/imgs/forum_create_topic1.gif

كود الملف :



رمز PHP:
]<tr><font size="4"><div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">رمز PHP:</div>
<div class="alt2" dir="ltr" style="
margin: 0px;
padding: 6px;
border: 1px inset;
width: 640px;
height: 34px;
text-align: left;
overflow: auto">
<code style="white-space:nowrap">
<!-- php buffer start --><code><font color="#000000">
<font color="#0000BB"></font><font color="#007700"><</font><font color="#0000BB">table&nbsp;width</font><font color="#007700">=</font><font color="#DD0000">"400"&nbsp;</font><font color="#0000BB">border</font><font color="#007700">=</font><font color="#DD0000">"0"&nbsp;</font><font color="#0000BB">align</font><font color="#007700">=</font><font color="#DD0000">"center"&nbsp;</font><font color="#0000BB">cellpadding</font><font color="#007700">=</font><font color="#DD0000">"0"&nbsp;</font><font color="#0000BB">cellspacing</font><font color="#007700">=</font><font color="#DD0000">"1"&nbsp;</font><font color="#0000BB">bgcolor</font><font color="#007700">=</font><font color="#DD0000">"#CCCCCC"</font><font color="#007700">>&nbsp; </font><font color="#0000BB"></font>
</font>
</code><!-- php buffer end -->
</code>
</div>
</div></font>
]<[/COLOR]form id="form1" name="form1" method="post" action="add_topic.php">
]<[/COLOR]td>
]<[/COLOR]table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
]<[/COLOR]tr>
]<[/COLOR]td colspan="3" bgcolor="#E6E6E6"><strong>Create New Topic</strong> </td>
]</[/COLOR]tr>
]<[/COLOR]tr>
]<[/COLOR]td width="14%"><strong>Topic</strong></td>
]<[/COLOR]td width="2%">:</td>
]<[/COLOR]td width="84%"><input name="topic" type="text" id="topic" size="50" /></td>
]</[/COLOR]tr>
]<[/COLOR]tr>
]<[/COLOR]td valign="top"><strong>Detail</strong></td>
]<[/COLOR]td valign="top">:</td>
]<[/COLOR]td><textarea name="detail" cols="50" rows="3" id="detail"></textarea></td>
]</[/COLOR]tr>
]<[/COLOR]tr>
]<[/COLOR]td><strong>Name</strong></td>
]<[/COLOR]td>:</td>
]<[/COLOR]td><input name="name" type="text" id="name" size="50" /></td>
]</[/COLOR]tr>
]<[/COLOR]tr>
]<[/COLOR]td><strong>Email</strong></td>
]<[/COLOR]td>:</td>
]<[/COLOR]td><input name="email" type="text" id="email" size="50" /></td>
]</[/COLOR]tr>
]<[/COLOR]tr>
]<[/COLOR]td>&nbsp;</td>
]<[/COLOR]td>&nbsp;</td>
]<[/COLOR]td><input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Submit2" value="Reset" /></td>
]</[/COLOR]tr>
]</[/COLOR]table>
]</[/COLOR]td>
]</[/COLOR]form>
]</[/COLOR]tr>
]</[/COLOR]table>
[/COLOR]






و كود هذا الملف بسيط و هو عبارة عن نموذج إرسال عادى و لا يوجد به برمجة





كتابة الملف add_topic.php :


و هذا الملف هو المسئول عن نقل البيانات من صفحة كتابة الموضوع إلى جدول forum_question فى قاعدة البيانات و لا يظهر منه فى المتصفح شئ سوى رسالة تأكيد حفظ البيانات فى حالة نجاح حفظ البيانات او رسالة خطأ فى حالة حدوث خطأ

كود الملف :




رمز PHP:
$host="localhost"; // اسم المزود <font size="4"><div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">رمز PHP:</div>
<div class="alt2" dir="ltr" style="
margin: 0px;
padding: 6px;
border: 1px inset;
width: 640px;
height: 34px;
text-align: left;
overflow: auto">
<code style="white-space:nowrap">
<!-- php buffer start --><code><font color="#000000">
<font color="#0000BB"><?php</font>
</font>
</code><!-- php buffer end -->
</code>
</div>
</div></font>
$username=""; // اسم مستخدم قاعدة البيانات
$password=""; // كلمة سر قاعدة البيانات
$db_name="test"; // اسم قاعدة البيانات
$tbl_name="forum_question"; // اسم الجدول

//الأتصال بقاعدة البيانات
mysql_connect("$host", "$username", "$password")or die("فشل الاتصال بقاعدة البيانات"); [/size]
mysql_select_db("$db_name")or die("فشل الاتصال بقاعدة البيانات");[/size]

$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 [/COLOR]"<a href=main_forum.php>العودة إلى الصفحة الرئيسية</a>";
]}[/[/COLOR]size]
]else {[/[/COLOR]size]
]echo [/COLOR]"خطأ";
]}[/[/COLOR]size]
mysql_close();[/size]
?>[/COLOR]






تحليل أكواد الملف بالتفصيل :




<DIV align=center> رمز PHP:
[size=4]$username=""; // اسم مستخدم قاعدة البيانات <font size="4"><div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">رمز PHP:</div>
<div class="alt2" dir="ltr" style="
margin: 0px;
padding: 6px;
border: 1px inset;
width: 640px;
height: 34px;
text-align: left;
overflow: auto">
<code style="white-space:nowrap">
<!-- php buffer start --><code><font color="#000000">
<font color="#0000BB">$host</font><font color="#007700">=</font><font color="#DD0000">"localhost"</font><font color="#007700">;&nbsp;</font><font color="#FF8000">//&nbsp;اسم&nbsp;المزود&nbsp; </font><font color="#0000BB"></font>
</font>
</code><!-- php buffer end -->
</code>
</div>
</div></font>
$password=""; // كلمة سر قاعدة البيانات
$db_name="test"; // اسم قاعدة البيانات
[size=4]$tbl_name="forum_question"; // اسم الجدول




هذا الجزء هو الخاص بتحديد متغيرات سنستخدما فى الإتصال بقاعدة البيانات و كل متغير أمامه تعليق يوضح البيانات التى يحتوى عليها كل متغير




<DIV align=center> رمز PHP:
mysql_connect("$host", "$username", "$password")or die("فشل الاتصال بقاعدة البيانات"); <font size="4"><div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">رمز PHP:</div>
<div class="alt2" dir="ltr" style="
margin: 0px;
padding: 6px;
border: 1px inset;
width: 640px;
height: 34px;
text-align: left;
overflow: auto">
<code style="white-space:nowrap">
<!-- php buffer start --><code><font color="#000000">
<font color="#0000BB">&nbsp;</font><font color="#FF8000">//الأتصال&nbsp;بقاعدة&nbsp;البيانات&nbsp; </font><font color="#0000BB"></font>
</font>
</code><!-- php buffer end -->
</code>
</div>
</div></font>
mysql_select_db("$db_name")or die("فشل الاتصال بقاعدة البيانات




فى هذا الجزء يتم الإتصال بقاعدة البيانات باستخدام المتغيرات السابقة .. فى البداية يتم الاتصال بمزود قواعد البيانات باستخدام الدالة mysql_connect ثم بعد ذلك تحديد قاعدة البيانات باستخدام دالة mysql_select_db




رمز PHP:
$datetime=date("d/m/y h:i:s"); //تحديد تاريخ حفظ الموضوع






ى هذا الجزء تم استخدام دالة date و ذلك لتحديد الوقت الذى تم حفظ الموضوع فيه لتسجيل ذلك فى بيانات الموضوع



<DIV align=center> رمز PHP:
$result=mysql_query($sql);<font size="4"><div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">رمز PHP:</div>
<div class="alt2" dir="ltr" style="
margin: 0px;
padding: 6px;
border: 1px inset;
width: 640px;
height: 34px;
text-align: left;
overflow: auto">
<code style="white-space:nowrap">
<!-- php buffer start --><code><font color="#000000">
<font color="#0000BB">$sql</font><font color="#007700">=</font><font color="#DD0000">"INSERT&nbsp;INTO&nbsp;$tbl_name(topic,&nbsp;detail,&nbsp;name,&nbsp;email,&nbsp; datetime)VALUES('$topic',&nbsp;'$detail',&nbsp;'$name',&nbsp;'$em ail',&nbsp;'$datetime')"</font><font color="#007700">;&nbsp; </font><font color="#0000BB"></font>
</font>
</code><!-- php buffer end -->
</code>
</div>
</div></font>





فى هذا الجزء يتم استخدام أوامر Sql من اجل حفظ البيانات فى جدول forum_question .. تم حفظ أولا امر ال Sql فى متغير ثم استخدام هذا المتغير فى دالة mysql_query لتنفيذه




<DIV align=center> رمز PHP:
[size=4]echo " تم حفظ الموضوع بنجاح<BR>";<font size="4"><div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">رمز PHP:</div>
<div class="alt2" dir="ltr" style="
margin: 0px;
padding: 6px;
border: 1px inset;
width: 640px;
height: 34px;
text-align: left;
overflow: auto">
<code style="white-space:nowrap">
<!-- php buffer start --><code><font color="#000000">
<font color="#0000BB"></font><font color="#007700">if(</font><font color="#0000BB">$result</font><font color="#007700">){&nbsp; </font><font color="#0000BB"></font>
</font>
</code><!-- php buffer end -->
</code>
</div>
</div></font>
]echo "<a href=main_forum.php>العودة إلى الصفحة الرئيسية</a>";
]}[/[/COLOR]size]
]else {[/[/COLOR]size]
[size=4]echo "خطأ";
[size=4]}

[/COLOR]




تم استخدام اداة الشرط if و ذلك للتحقق من ان امر Sql قد تم تنفيذه ام لا و يتم اعطاء رسالة نجاح أو خطأ



<DIV align=center> رمز PHP:
mysql_close();


رمز PHP:





و أخيرا هذه الدالة التى تغلق الاتصال بقاعدة البيانات و هى خطوة مهمة جدا لأن ترك الاتصال مفتوحا دون غلق يكون عبئا على ذاكرة السيرفر


و بهذا نكون انتهينا من كتابة هذا الملف



كتابة ملف main_forum.php :


هذا الملف هو المسئول عن عرض قائمة المواضيع المخزنة فى قاعدة البيانات و النموذج التالى يوضح الملف أكثر

http://www.phpeasystep.com/imgs/forum_show.gif
http://www.phpeasystep.com/imgs/forum_show.gif

كود الملف بالكامل





رمز PHP:
[size=4]$host="localhost"; // المزود <font size="4"><div style="margin:20px; margin-top:5px">
<div class="smallfont" style="margin-bottom:2px">رمز PHP:</div>
<div class="alt2" dir="ltr" style="
margin: 0px;
padding: 6px;
border: 1px inset;
width: 640px;
height: 34px;
text-align: left;
overflow: auto">
<code style="white-space:nowrap">
<!-- php buffer start --><code><font color="#000000">
<font color="#0000BB"><?php</font>
</font>
</code><!-- php buffer end -->
</code>
</div>
</div></font>
$username=""; // اسم المستخدم
$password=""; // كلمة المرور
$db_name="test"; // اسم قاعدة البيانات
$tbl_name="forum_question"; // اسم الجدول

// الاتصال بقاعدة البيانات
mysql_connect("$host", "$username", "$password")or die("فشل الاتصال بالمزود");
[size=4]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
// نهاية حلقة التكرار
[size=4]}
mysql_close();
?>
<tr>
<td colspan="5" align="right" bgcolor="#E6E6E6"><a href="create_topic.php"><strong>اضافة موضوع جديد </a></td>
</tr>
</table>





توضيح الأكواد بالتفصيل

max man
09-19-2007, 04:02 PM
مشكوررررررررررررررررررررررررر