سوالف اندرويد




العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > PHP
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الوسوم:

الرد على الموضوع
 
LinkBack أدوات الموضوع
Banned
#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

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


و كود البناء هو
كود:
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;
بهذا نكون انتهينا من بناء جداول قاعدة البيانات التى سيتم تسجيل المواضيع و الردود بها

يتبع ..






Mr.eslam is offline   قديم 12-05-2006, 04:47 PM
الرد مع إقتباس
Banned
#2  

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

ملف create_topic.php

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



كود الملف :
كود:
<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>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Submit2" value="Reset" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
و كود هذا الملف بسيط و هو عبارة عن نموذج إرسال عادى و لا يوجد به برمجة

يتبع ..






Mr.eslam is offline   قديم 12-05-2006, 04:53 PM
الرد مع إقتباس
Banned
#3  

كتابة الملف 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();
و أخيرا هذه الدالة التى تغلق الاتصال بقاعدة البيانات و هى خطوة مهمة جدا لأن ترك الاتصال مفتوحا دون غلق يكون عبئا على ذاكرة السيرفر

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

يتبع ..






Mr.eslam is offline   قديم 12-05-2006, 04:58 PM
الرد مع إقتباس
عضو نشيط جدا
#4  

مشكور قلبي واسنى التاابع






__________________
a @ des-t . Net

W w W . D e S - T . N e T
axalb is offline   قديم 12-05-2006, 04:59 PM
الرد مع إقتباس
Banned
#5  

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

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




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

كود:
<?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>
هذا الجزء هو نهاية جدول عرض المنتديات و تم وضع رابط اضافة موضوع جديد به و هو ليس به اى برمجة مجرد تصميم فقط

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

يتبع ..






Mr.eslam is offline   قديم 12-05-2006, 05:05 PM
الرد مع إقتباس
Banned
#6  

إقتباس:
المشاركة الأصلية بواسطة axalb
مشكور قلبي واسنى التاابع
ربنا يخليك اخى واتمنى انك تكون مستفيد






Mr.eslam is offline   قديم 12-05-2006, 05:08 PM
الرد مع إقتباس
Banned
#7  

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

هذا الملف هو الخاص بعرض الموضوع و الردود .. نموذج توضيحى للملف ..

هكذا يظهر فى المتصفح :



و هذا نموذج لجزء عرض الموضوع :



و هذا نموذج لجزء عرض الردود :



و هذا نموذج لجزء اضافة الردود :



كود الملف كاملا :

كود:
<?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 يحتوى على رقم الموضوع حتى يستخدم فى حفظ البيانات

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

يتبع ..






Mr.eslam is offline   قديم 12-05-2006, 05:12 PM
الرد مع إقتباس
Banned
#8  

كتابة ملف 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 يقوم بتعديل رقم الرد .. ثم فى النهاية دالة اغلاق الاتصال بقاعدة البيانات

تم الانتهاء من كتابة هذا الملف






Mr.eslam is offline   قديم 12-05-2006, 05:14 PM
الرد مع إقتباس
Banned
#9  

كده الدرس خلص و طبيعى جدا ان المنتدى ده يكون بسيط جدا و مفيهوش اعضاء او تسجيل و لكن الهدف من الدرس كان توضيح التعامل مع النماذج و قواعد البيانات من خلال php .. اما عن التسجيل و الاعضاء و تسجيل الدخول فا ده هيكون فى دروس تانية ان شاء الله

تحيـــاتى ..






Mr.eslam is offline   قديم 12-05-2006, 05:16 PM
الرد مع إقتباس
عضو نشيط جدا
#10  

مشكوووور قلبي
اتمنى طرح
التسجيل و الاعضاء و تسجيل الدخول






__________________
a @ des-t . Net

W w W . D e S - T . N e T
axalb is offline   قديم 12-05-2006, 06:29 PM
الرد مع إقتباس
Banned
#11  

قريبا اخى بأذن الله






Mr.eslam is offline   قديم 12-05-2006, 06:35 PM
الرد مع إقتباس
عضو نشيط جدا
#12  

مشكور أخوي






العاطفي is offline   قديم 12-05-2006, 08:36 PM
الرد مع إقتباس
مشرف
#13  

درس جميل، تم التثبيت في انتظار ان تقوم بتكملة باقي الدروس .. لانها بالفعل ستفيد العديد من الاعضاء.
تم إرسال نسخة من الموضوع الى قسم الـ PHP.






__________________
الحالة في سوالف : غير نشط


لاَ اِلَهَ اِلاَّ اَنْتَ سُبْحَانَكَ اِنِّي كُنْتُ مِنَ الظَّالِمِينَ

الألفاظ هي الثياب التي ترتديها أفكارنا، لذا ..يجب ألا تظهر أفكارنا في ثياب رثة بالية
محمود المسعودي is offline   قديم 12-05-2006, 09:29 PM
الرد مع إقتباس
عضو فعال
#14  

شرح جميل جدا جدا جدا ووافي






موقع روش is offline   قديم 13-05-2006, 05:03 PM
الرد مع إقتباس
عضو نشيط
#15  
يد الله مع الجماعة

السلام عليكم و رحمة الله و بركاته :--

انشاء برنامج منتدى مثل منتدى جون ليس امرا مستحيلا و لا حتى صعبا .. اذا اخذنا بعين الاعتبار عدة نقاط :

1- اننا نرى منتدى الفي بي في مرحلة النضوج ... نعم فهل تذكرون كيف كانت اول نسخة من الفي بي ؟؟.. من راى تلك النسخة سيعرف قصدي و من لم ير فليقم بتركيب في بي لايت 1 و يرى بنفسه
ان المنتدى كان بسيط جدا و لا يحتاج الى اي مهارات و اجزم ان اكثر الاعضاء هنا يستطيعون عمل سكربت مثله ...

2- اذا المسالة ليست مسالة برمجة المنتدى المسالة مسالة تطويره .... و هنا الفرق بيننا و بينهم حيث انهم يجيدون العمل الجماعي بخلافنا ... حسنا تطوير المنتدى كيف يكون ؟... هي مجرد اضافات بسيطة و افكار مفيدة و اجزم ايضا انه لا يوجد عضو هنا لا يستطيع ان يطور ما يسمى بالهاكات ...

3- حسنا سياتي الان من يقول اذا كنت تدعي ان الامر سهل فلم لا تطور منتدى مثل منتدى الفي بي فأقول ...:
ا- السبب الاول ان اخرج منتدى بنفس مواصفات الفي بي يحتاج الى تعب كثير على مبرمج واحد اذا جاء دفعة واحدة .
ب- و على فرض اني قمت بهذا الجهد فلا يخرج الامر عن حالتين ان اقوم ببيع المنتدى و في هذه الحالة عدنا من حيث بدانا او ان اطرحه مجانا و فيه هضم لتعب المبرمج و ربما تقاعس عن تطويره لاحقا.
ج- عندما يصبح احد البرامج قياسيا يصعب التحويل منه ... خذ مثلا التحويل من ويندوز للينكس للمستخدم المبتدء ... فما الذي يدعو اخواني العرب ان يستخدموا برنامجي بدلا عن الفي بي ... لانني عربي ربما ؟... لنكن واقعيين ...

و اخيرا اشكر اخوي مستر اسلام على هذا الدرس الرائع ....

SOURCER






sourcer is offline   قديم 13-05-2006, 06:31 PM
الرد مع إقتباس
عضو جديد
#16  

إقتباس:
المشاركة الأصلية بواسطة sourcer
فما الذي يدعو اخواني العرب ان يستخدموا برنامجي بدلا عن الفي بي ... لانني عربي ربما ؟... لنكن واقعيين ...

SOURCER
لانك عربي ؟ لا
الشيء الذي سيدعوهم لترك الفي بي واستخدام منتداك
هو الشي نفسه الذي جعل المستخدمين يتركون ال UBB سابقاً متجهين الى ال vb

والكل يبحث عن الافضل

ال vb عندما بدأت ، قامت بتغطية كل امتيازات ال UBB
+
إضافات أخرى وأهمها قواعد البيانات بدلا من ملفات الtxt
+
امكانية تحويل جميع المواضيع والمشاركات من ال UBB إلى ال VB بضغطة زر

بعد كل هذا
ما الذي يمنع المستخدم من استخدام ال vb بدلا من ال ubb ؟ لا شيء !!

يجب ان نبحث عن التميز ، وعن الافضل
كون المبرمج عربي ، فهذا لن يعني أي شيء يذكر !
ال vb تعتبر مكلفة نوعا ما لبعض اصحاب المواقع ، قد يكون مفتاح الحل هنا !
بالاضافة الى شروط اخرى بالطبع لابد ان تتوافر

وهكذا نصل الى الحل






IT_student is offline   قديم 13-05-2006, 10:42 PM
الرد مع إقتباس
مشرف أخبار الإنترنت والتقنية ومناقشتها
#17  

درس رائع جزاك الله خير .

ينقص العرب الوتوق بقدراتهم والأجتهاد للوصول الى اهدافهم






__________________
أنشئ البوم لصورك وشاركها في موقعك صور TNT


expertsniper - Fast سابقاً
أحمد خلف is offline   قديم 14-05-2006, 08:12 PM
الرد مع إقتباس
Banned
#18  

إقتباس:
المشاركة الأصلية بواسطة sourcer
السلام عليكم و رحمة الله و بركاته :--

انشاء برنامج منتدى مثل منتدى جون ليس امرا مستحيلا و لا حتى صعبا .. اذا اخذنا بعين الاعتبار عدة نقاط :

1- اننا نرى منتدى الفي بي في مرحلة النضوج ... نعم فهل تذكرون كيف كانت اول نسخة من الفي بي ؟؟.. من راى تلك النسخة سيعرف قصدي و من لم ير فليقم بتركيب في بي لايت 1 و يرى بنفسه
ان المنتدى كان بسيط جدا و لا يحتاج الى اي مهارات و اجزم ان اكثر الاعضاء هنا يستطيعون عمل سكربت مثله ...

2- اذا المسالة ليست مسالة برمجة المنتدى المسالة مسالة تطويره .... و هنا الفرق بيننا و بينهم حيث انهم يجيدون العمل الجماعي بخلافنا ... حسنا تطوير المنتدى كيف يكون ؟... هي مجرد اضافات بسيطة و افكار مفيدة و اجزم ايضا انه لا يوجد عضو هنا لا يستطيع ان يطور ما يسمى بالهاكات ...

3- حسنا سياتي الان من يقول اذا كنت تدعي ان الامر سهل فلم لا تطور منتدى مثل منتدى الفي بي فأقول ...:
ا- السبب الاول ان اخرج منتدى بنفس مواصفات الفي بي يحتاج الى تعب كثير على مبرمج واحد اذا جاء دفعة واحدة .
ب- و على فرض اني قمت بهذا الجهد فلا يخرج الامر عن حالتين ان اقوم ببيع المنتدى و في هذه الحالة عدنا من حيث بدانا او ان اطرحه مجانا و فيه هضم لتعب المبرمج و ربما تقاعس عن تطويره لاحقا.
ج- عندما يصبح احد البرامج قياسيا يصعب التحويل منه ... خذ مثلا التحويل من ويندوز للينكس للمستخدم المبتدء ... فما الذي يدعو اخواني العرب ان يستخدموا برنامجي بدلا عن الفي بي ... لانني عربي ربما ؟... لنكن واقعيين ...

و اخيرا اشكر اخوي مستر اسلام على هذا الدرس الرائع ....

SOURCER
حقا دعنا واقعين لماذا نحن العرب نقف صاميتن رغم ان الجميع يتحرك يحدث ضجة
ونحن واقفين نتفرج ننتظر ما سوف ينتج من هذا الصراح ثم نستخدمه نحن
لماذا لا نطور لا نفكر ونكتشف اما اننا لا نستحق
لماذا لا يقال هذا المنتدى ربى وهو منتشر فى معم المنتدات الاجنبية
دعنا نقف قليلا هل هذا حقا ما نستحقه دعونا نرجع للعرب عزته
لقد جاءتنا فكرة ابدا فريق للتطوير والبرمجة
تفضل ادخل هنا
وللجميع الموضوع مثبت فى منتدى برامج المنتديات
http://www.swalif.net/softs/showthread.php?t=157482
تابعوا هنا






Mr.eslam is offline   قديم 15-05-2006, 10:09 AM
الرد مع إقتباس
Banned
#19  

IT_student
حقا اخى نحن نبحث عن المتميز ولكن لا نبحث كيفية صنع المتميز

expertsniper

بارك الله فيك اخى ودعونا نقف وقفة بجد






Mr.eslam is offline   قديم 15-05-2006, 10:11 AM
الرد مع إقتباس
عضو نشيط
#20  

شكراً أخي وجزاك الله خيراً...






__________________
php-coder
php-coder is offline   قديم 15-05-2006, 11:09 AM
الرد مع إقتباس
عضو سوبر نشيط
#21  

بارك الله فيك أخوي Mr.eslam

وياريت يتم تنشيط هذا الموضوع من جديد واضافة المزيد .... انا متحمس لذلك






هكرز المنتديات is offline   قديم 30-05-2007, 01:43 PM
الرد مع إقتباس
عضو نشيط جدا
#22  

بارك الله فيك

واكيد بالمستقبل سيكون هناك برمجيات عربية تنافس الاجنبية

بل وتتفوق عليها باذن الله






__________________
شبكة البيت للتصميمات وبرمجة الاسكربتات الخاصة
http://www.Elbayt.NeT
الزواج - العقارات -الاخبار- مجلات خاصة - نيوك - منتديات - قروبات - مستعمل - الجوال - الوظائف - واى من الاسكربتات الخاصة
elbayt.net is offline   قديم 04-06-2007, 04:15 PM
الرد مع إقتباس
عضو فعال
#23  

طيب احنا ممكن نبتدي ممكن نقول ايه هيا الحاجات المفقودة في الvb و .........

لا مش ( و ) احنا نقول السلبيات بس

ده دلوقتي علي الاقل






__________________
أحمد أبو النصر
Junior php Developer
+20166196074
أحمد أبو النصر is offline   قديم 04-06-2007, 11:45 PM
الرد مع إقتباس
Banned
#24  
تعليق بسيط

السلام عليكم ورحمة الله وبركاتة

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

حضرتك فى كل صفحة تعمل استعلام عن قاعدة البيانات انا سوف اضيف شى بسيط فقط
صفحة :
config.php

كود:
<?
$host="localhost"; // Host name 
$username=""; // Mysql username 
$password=""; // Mysql password 
$db_name="test"; // Database name

// الاتصال بقاعدة البيانات.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
?>
اضف هذة الصفحة للملفات المستخدمة فى انشاء المنتدى
وفى كل صفحة من الصفحات اضف هذا الكود
كود:
include("config.php");
هكذا سوف يسهل عليك بدل من اضافة كود الاستعلام فى كل صفحة من الصفحات

واتمنى ان تقبل تعليقى
وملف ال
config
فى المرفقات

عمرو محمد






Any-Services is offline   قديم 07-06-2007, 01:34 AM
الرد مع إقتباس
عضو نشيط
#25  

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






__________________
webayu لحلول الإنترنت
www.webayu.net

لأول مرة في الإستضافات العربية.......الآن300000 ميغا بايت بسعر 6.99شهريا فقط ...
webayu is offline   قديم 24-06-2007, 03:50 PM
الرد مع إقتباس
الرد على الموضوع



أدوات الموضوع

قوانين المشاركات
لا يمكنك كتابة مواضيع جديدة
لا يمكنك إضافة ردود
لا يمكنك إرسال مرفقات
لا يمكنك تعديل مشاركاتك

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح



جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 07:57 PM.