بسم الله الرحمن الرحيم
الدرس الثالث سوف يكون محتواه كالتالي :-
1- تفصيل بنية قاعدة البيانات
2- تفصيل ملف الادمن بالكامل و بالشرح الممل
3- شرح و تفسير بعض الشياء الغير واضحة
بسم الله نبدأ
قاعدة البيانات و سوف نسميها "me" و هي عبارة عن جدولين فقط
الاول : section
الحقول :-
id,name,kind,rank
الثاني : subject
الحقول :-
id,title,post,sitefrom,section
و تستطيع انشائهم من تطبيق phpmyadmin
او من خلال الاوامر التالية :-
كود:
CREATE TABLE IF NOT EXISTS `section` (
`id` int(250) NOT NULL AUTO_INCREMENT,
`name` varchar(500) NOT NULL,
`kind` varchar(500) NOT NULL,
`rank` varchar(500) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
CREATE TABLE IF NOT EXISTS `subject` (
`id` int(50) NOT NULL AUTO_INCREMENT,
`title` varchar(500) COLLATE utf8_bin NOT NULL,
`section` varchar(500) COLLATE utf8_bin NOT NULL,
`post` varchar(5000) COLLATE utf8_bin NOT NULL,
`sitefrom` varchar(500) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=23 ;
الان قاعدة البيانات و الجداول موجودة و جاهزة و لكن فارغة .
الان انتهينا من القاعدة و ننتقل لملف الادمن ....
كود PHP:
<?PHP
session_start();
include ('../common.php');
if ($_GET['op']=='logout'){ session_unregister(admin); }
if(!session_is_registered(admin))
{
if (!$_POST['pass'] || $_POST['pass']=='')
{ ?>
<div align="center" dir="rtl">
<table border="0" width="90%" cellspacing="0" cellpadding="0">
<tr>
<td>
<table border="1" width="100%" id="table2" bordercolor="#C0C0C0" align="left">
<form action="?" method="post">
<tr>
<td colspan=2>
<input type=text name=name >:admin
</td>
</tr>
<tr>
<td><input type="password" name="pass" size="20" dir="rtl">:password </td>
</tr>
<tr>
<td colspan=2>
<input type="submit" value="ÏÎæá">
</td>
</tr>
</form>
</table>
</td>
</tr>
</table>
</div>
<?
exit;
}else{
$name = $_POST['name'];
$pass = $_POST['pass'];
if ( $name == $aname && $pass == $apass)
{
session_register(admin);
echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=?op=\">\n";
}else{
echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=?op=\">\n";
}
exit;
}
}
if ($_GET['op'] == null)
{
echo "<div dir=rtl><font align=center size=5><p align=center>بسم الله الرحمن الرحيم</p></font><br /><br />
<p>رجاءً اختر ما تريد عمله من القائمة التالية :-<p><br />
<li><a href='?op=2'>تحرير المقالات</a></li>
<li><a href='?op=3'>تحرير الاقسام</a></li>
<li><a href='../index.php'>الصفحة الرئيسية</a></li>
<li><a href='?op=logout'>خروج</a></li>
";
}
if ($_GET['op'] == 2)
{
echo "<center><a href=?op=>لوحة التحكم <br />|<a href=?op=2&s=1>اضافة مقال</a>|<a href=?op=2&s=2>تعديل مقال</a>|
|<a href=?op=2&s=3>حذف مقال</a>|</center>
";
if ($_GET['s'] == 1)
{
$que = mysql_query("select * from section");
if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE"))
echo "<script language=JavaScript src='../ed/editor.js'></script>";
else
echo "<script language=JavaScript src='../ed/moz/editor.js'></script>";
echo "
<script>
function submitForm()
{
document.forms.Form1.elements.post.value = oEdit1.getHTMLBody();
document.forms.Form1.submit()
}
</script>";
echo "<pre id=\"idTemporary\" name=\"idTemporary\" style=\"display:none\">";
if(isset($_POST["post"]))
{
$sContent=stripslashes($_POST['post']);
echo htmlentities($sContent);
}
echo "</pre>";
?>
<br /><div dir=rtl><p align=right>
<?
echo "
<form method=post action=?op=2&d=1 id=\"Form1\">";
?>
<font size=4 >العنوان: </font>
<input type="text" name="title" size="20"><br />
<font size=4 >الموضوع: </font><br />
<?
echo "
<script>
var oEdit1 = new InnovaEditor(\"oEdit1\");
oEdit1.RENDER(document.getElementById(\"idTemporary\").innerHTML);
</script>
<input type=\"hidden\" name=\"post\" id=\"post\">
";
?>
<br />
<font size=4 >مصدر المقال: </font>
<input type="text" name="sitefrom" value="http://" size="50">
<br /><br />
<?
echo "<select name=sec>";
while ($arr = mysql_fetch_array($que))
{
echo "
<option name=sec value=$arr[id]>$arr[name]</option>";
}
echo "</select>";
?>
<input type="submit" name="اضف" onclick=submitForm()>
</form>
</p></div>
<?
}
if ($_GET['d'] == 1)
{
$sent=mysql_query("insert into subject (id,title,post,sitefrom,section
) values ('','$title','$post','$sitefrom','$sec'
)");
if ("$sent") {echo "<p align=\"center\"><b><font color=\"#000000\" size=\"5\">لقد تم اضافة الخبر بنجاح</font></b></p>\n";
} else {
echo " لم تتم العملية بنجاح " ;
}
}
if ($_GET['s'] == 2)
{
$query = mysql_query("SELECT id,title FROM subject order by id desc");
echo "<table border='1' cellpadding='2' style='border-collapse: collapse' bordercolor='#111111' width='98%' id='AutoNumber1' dir='rtl'>
<tr>
<td width='86%'>
<p align='center'>االموضوع</td>
<td width='7%'><p align='center'>تعديل</p></td>
</tr>";
while($row = mysql_fetch_array($query))
{
echo "<tr>
<td width='86%'>$row[title]</td>
<td width='7%'><p align='center'><a href='?op=2&s=edit&id=$row[id]'>تعديل</a></p></td>
</tr>";
}
echo "</table>";
}
if ($_GET['s'] == "edit")
{
$result = mysql_query("select * from subject where id =".$id);
$result = mysql_fetch_array($result);
echo "<form method='POST' action='?op=2&s=done&id=$id'>
<input type='hidden' name='id' value='$result[id]'>
<div align='center'>
<center>
<table border='1' cellpadding='2' style='border-collapse: collapse' bordercolor='#111111' width='100%' dir='rtl'>
<tr>
<td width='30%'>العناون :</td>
<td width='70%'><input name='n_title' size='60' value='$result[title]'></td>
</tr>
<tr>
<td width='30%'>الموضوع :</td>
<td width='70%'><input name='n_post' size='60' value='$result[post]'></td>
</tr>
<tr>
<td width='100%' colspan='2' align='center'><input type='submit' value=' تعديل البيانات ' name='xxx'></td>
</tr>
";
}
if ($_GET['s'] == "done")
{
$id=$_GET['id'];
$title=$_POST[n_title];
$post=$_POST[n_post];
$DoUpdate=mysql_query("UPDATE subject SET title='$title' , post='$post' where id='$id' ");
if(!$DoUpdate)
{
echo"<br />هنالك مشكلة في تعديل المقال!!!!!";
}
else
{
echo"<br />تم التحديث بنجاح";
}
}
if ($_GET['s'] == 3 )
{
$query = mysql_query("SELECT id,title FROM subject order by id desc");
echo "<table border='1' cellpadding='2' style='border-collapse: collapse' bordercolor='#111111' width='98%' id='AutoNumber1' dir='rtl'>
<tr>
<td width='86%'>
<p align='center'>االموضوع</td>
<td width='7%'><p align='center'>حذف</p></td>
</tr>";
while($row = mysql_fetch_array($query))
{
echo "<tr>
<td width='86%'>$row[title]</td>
<td width='7%'><p align='center'><a href='?op=2&s=delete&id=$row[id]'>حــذف</a></p></td>
</tr>";
}
echo "</table>";
}
if ($_GET['s'] == "delete")
{
$id = intval($_GET['id']);
$query = mysql_query("DELETE FROM subject WHERE id = $id ");
echo "<div align='center'>تمت عملية حذف البيانات بنجاح</div>";
}
}
if ($_GET['op'] == 3)
{
echo "<center><a href=?op=>لوحة التحكم <br />|<a href=?op=3&s=1>اضافة قسم</a>|<a href=?op=3&s=2>تعديل قسم</a>|
|<a href=?op=3&s=3>حذف قسم</a>|</center>
";
if ($_GET['s'] == 1)
{
?>
<br /><div dir=rtl><p align=right>
<form method=post action=?op=3&d=1>
<font size=4 >اسم القسم: </font>
<input type="text" name="name" size="20"><br />
<font size=4 >فرعي/رئيسي: </font>
<input type="text" name="kind" size="20"><br />
<font size=4 >ترتيبه: </font>
<input type="text" name="rank" size="50">
<br /><br />
<input type="submit" name="اضف" value="اضف">
</form>
</p></div>
<?
}
if ($_GET['d'] == 1)
{
$sent=mysql_query("insert into section (id,name,rank,kind
) values ('','$name','$rank','$kind'
)");
if ("$sent") {echo "<p align=\"center\"><b><font color=\"#000000\" size=\"5\">لقد تم اضافة القسم بنجاح</font></b></p>\n";
} else {
echo " لم تتم العملية بنجاح " ;
}
}
if ($_GET['s'] == 2)
{
$query = mysql_query("SELECT id,name FROM section order by id desc");
echo "<table border='1' cellpadding='2' style='border-collapse: collapse' bordercolor='#111111' width='98%' id='AutoNumber1' dir='rtl'>
<tr>
<td width='86%'>
<p align='center'>القسم</td>
<td width='7%'><p align='center'>تعديل</p></td>
</tr>";
while($row = mysql_fetch_array($query))
{
echo "<tr>
<td width='86%'>$row[name]</td>
<td width='7%'><p align='center'><a href='?op=3&s=edit&id=$row[id]'>تعديل</a></p></td>
</tr>";
}
echo "</table>";
}
if ($_GET['s'] == "edit")
{
$result = mysql_query("select * from section where id =".$id);
$result = mysql_fetch_array($result);
echo "<form method='POST' action='?op=3&s=done&id=$id'>
<input type='hidden' name='id' value='$result[id]'>
<div align='center'>
<center>
<table border='1' cellpadding='2' style='border-collapse: collapse' bordercolor='#111111' width='100%' dir='rtl'>
<tr>
<td width='30%'>اسم القسم :</td>
<td width='70%'><input name='name' size='60' value='$result[name]'></td>
</tr>
<tr>
<td width='30%'>ترتيبه :</td>
<td width='70%'><input name='rank' size='60' value='$result[rank]'></td>
</tr>
<tr>
<td width='30%'>فرعي/رئيسي :</td>
<td width='70%'><input name='kind' size='60' value='$result[kind]'></td>
</tr>
<tr>
<td width='100%' colspan='2' align='center'><input type='submit' value=' تعديل البيانات ' name='xxx'></td>
</tr>
";
}
if ($_GET['s'] == "done")
{
$id=$_GET['id'];
$name=$_POST[name];
$kind=$_POST[kind];
$rank=$_POST[rank];
$DoUpdate=mysql_query("UPDATE section SET name='$name' , kind='$kind' , rank='$rank' where id='$id' ");
if(!$DoUpdate)
{
echo"<br />هنالك مشكلة في تعديل القسم!!!!!";
}
else
{
echo"<br />تم التحديث بنجاح";
}
}
if ($_GET['s'] == 3 )
{
$query = mysql_query("SELECT id,name FROM section order by id desc");
echo "<table border='1' cellpadding='2' style='border-collapse: collapse' bordercolor='#111111' width='98%' id='AutoNumber1' dir='rtl'>
<tr>
<td width='86%'>
<p align='center'>القسم</td>
<td width='7%'><p align='center'>حذف</p></td>
</tr>";
while($row = mysql_fetch_array($query))
{
echo "<tr>
<td width='86%'>$row[name]</td>
<td width='7%'><p align='center'><a href='?op=3&s=delete&id=$row[id]'>حــذف</a></p></td>
</tr>";
}
echo "</table>";
}
if ($_GET['s'] == "delete")
{
$id = intval($_GET['id']);
$query = mysql_query("DELETE FROM section WHERE id = $id ");
echo "<div align='center'>تمت عملية حذف البيانات بنجاح</div>";
}
}
?>
قبل كل شيء . طريقة عمل هذا الملف
1- يتأكد ان المتصفح هو نفسه مدير الموقع عن طريق ادخال اسم المستخدم و كلمة المرور
2- بسبب ان لوحة التحكم كلها في ملف واحد فقد تم الاعتماد على المتغيرات في الروابط
مثل :
www.XXX.com/admin/index.php?op=2
الان هذا الرابط يرسل لملف الادمن قيمة متغير و هي
المتغير "op" و قيمته هي 2
و يتم تعريف المتغير عن طريق الرابط بوضع علامة استفهام قبله
و هذا رابط يرسل متغيريين و قيمتيهما الى ملف الادمن
www.XXX.com/admin/index.php?op=2&s=1
المتغير الاول هو "op ==2" و المتغير الثاني "s == 1"
مع ملاحظة انه تم استبدال علامة الاستفهام ب & و هذا لانه ثاني متغير لنفس الرابط
فعندما يعطينا الرابط متغير op و يعطيني قيمة 1 فعندها ملف الادمن سوف يستلم هذه المتغيرات
و عند الشرط الذي يحدد هذه المتغيرات انها اذا كانت معطى او لها قيمة محددة يظهر لنا كود معين
3- عند شرط اذا كان المتغير المعطى هو نفسه المحدد لاضافة مقال عندها سوف تظهر لنا صفحة اضافة مقال
دون الصفحات الباقية لان الصفحات الباقية لم يتوفر الشرط الصحيح لها
و عندما نضيف مقال عن طريق الفورم سوف تدخل البيانات الى القاعدة و نفس الشيء مع الاقسام
الان اضفنا البيانات بقي لنا القدرة على التعديل عليها و حذفها و عرضها
و هذا ما سوف اشرحه الان ان شاء الله
كود PHP:
if ($_GET['op'] == null)
{
echo "<div dir=rtl><font align=center size=5><p align=center>بسم الله الرحمن الرحيم</p></font><br /><br />
<p>رجاءً اختر ما تريد عمله من القائمة التالية :-<p><br />
<li><a href='?op=2'>تحرير المقالات</a></li>
<li><a href='?op=3'>تحرير الاقسام</a></li>
<li><a href='../index.php'>الصفحة الرئيسية</a></li>
<li><a href='?op=logout'>خروج</a></li>
";
}
هذا مثال على كلامي
هنا يتم عرض هذه الصفحة اذا كان المتغير op لا قيمة له او غير معطى
و عندها سوف يظهر لنا روابط تحتوي على متغيرات
اي انه عندما تضغط على " تحرير المقالات " سوف يرسل قيمة المتغير و هي 2
عندها سوف تظهر صفحة تحرير المقالات دون غيرها مع انهم كلهم في نفس الملف
كود PHP:
if ($_GET['op'] == 2)
الان هذا شرط انه اذا كان المتغير المرسل op قيمته هي 2 فاعمل التالي :
كود PHP:
{
echo "<center><a href=?op=>لوحة التحكم <br />|<a href=?op=2&s=1>اضافة مقال</a>|<a href=?op=2&s=2>تعديل مقال</a>|
|<a href=?op=2&s=3>حذف مقال</a>|</center>
";
هذه الاكواد سوف تظهر طالما قيمة المتغير في الرابط 2 حتى لو كان هنالك متغير اضافي مثل s
فمثلا لو ان الرابط
www.XXX.com/admin.php?op=2&s=3
سوف تظهر محتويات الصفحة عند المتغير "s ==3" و ايضا سوف تظهر محتويات الصفحة عند "op==2"
و انتبهوا لم نغلق الشرط لانه هنالك تكمله و هي تعريف المتغير s في باقي الملف لتعدد الصفحات المراد استخدامها
كود PHP:
if ($_GET['s'] == 1)
{
$que = mysql_query("select * from section");
if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE"))
echo "<script language=JavaScript src='../ed/editor.js'></script>";
else
echo "<script language=JavaScript src='../ed/moz/editor.js'></script>";
echo "
<script>
function submitForm()
{
document.forms.Form1.elements.post.value = oEdit1.getHTMLBody();
document.forms.Form1.submit()
}
</script>";
echo "<pre id=\"idTemporary\" name=\"idTemporary\" style=\"display:none\">";
if(isset($_POST["post"]))
{
$sContent=stripslashes($_POST['post']);
echo htmlentities($sContent);
}
echo "</pre>";
?>
<br /><div dir=rtl><p align=right>
<?
echo "
<form method=post action=?op=2&d=1 id=\"Form1\">";
?>
<font size=4 >العنوان: </font>
<input type="text" name="title" size="20"><br />
<font size=4 >الموضوع: </font><br />
<?
echo "
<script>
var oEdit1 = new InnovaEditor(\"oEdit1\");
oEdit1.RENDER(document.getElementById(\"idTemporary\").innerHTML);
</script>
<input type=\"hidden\" name=\"post\" id=\"post\">
";
?>
<br />
<font size=4 >مصدر المقال: </font>
<input type="text" name="sitefrom" value="http://" size="50">
<br /><br />
<?
echo "<select name=sec>";
while ($arr = mysql_fetch_array($que))
{
echo "
<option name=sec value=$arr[id]>$arr[name]</option>";
}
echo "</select>";
?>
<input type="submit" name="اضف" onclick=submitForm()>
</form>
</p></div>
<?
}
if ($_GET['d'] == 1)
{
$sent=mysql_query("insert into subject (id,title,post,sitefrom,section
) values ('','$title','$post','$sitefrom','$sec'
)");
if ("$sent") {echo "<p align=\"center\"><b><font color=\"#000000\" size=\"5\">لقد تم اضافة الخبر بنجاح</font></b></p>\n";
echo "<p align=\"center\"><a href='http://localhost/wild/show.php'><font color=\"#000000\" size=\"4\">\n";
echo "<span style=\"text-decoration: none\">مشاهدة الموضوع</span></font></a></p>\n";
} else {
echo " لم تتم العملية بنجاح " ;
}
}
الان بدأنا بتعريف المتغير s
فإذا كان المتغير "s == 1" سوف يظهر صفحة لاضافة مقال
و إذا كان المتغير "s == 2" سوف يظهر صفحة لتعديل مقال
وإذا كان المتغير "s == 3" سوف يظهر صفحة لحذف اي مقال
و سوف اشرح هذه الجزئية فقط اما الباقي فهي نفس الاكواد تماما إلا تعديل اسم الجدول من subject الى section
و تعديل الفورمات للتوافق مع اضافة قسم و ليس اضافة مقال و هذه html فقط
كود PHP:
$que = mysql_query("select * from section");
متغير تم اعطائه قيمة و هي :
دالة استخراج البيانات من الجدول و تم تحديد الجدول هنا على انه section و السبب هو اننا نريد
وضع قائمة منسدلة يتم فيها عرض جميع الاقسام التي تمت اضافتها لتختار في اي قسم نريد وضع مقالتك
كود:
if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE"))
echo "<script language=JavaScript src='../ed/editor.js'></script>";
else
echo "<script language=JavaScript src='../ed/moz/editor.js'></script>";
echo "
<script>
function submitForm()
{
document.forms.Form1.elements.post.value = oEdit1.getHTMLBody();
document.forms.Form1.submit()
}
</script>";
echo "<pre id=\"idTemporary\" name=\"idTemporary\" style=\"display:none\">";
if(isset($_POST["post"]))
{
$sContent=stripslashes($_POST['post']);
echo htmlentities($sContent);
}
echo "</pre>";
?>
هذا الجزء ...
كود:
<?
echo "
<script>
var oEdit1 = new InnovaEditor(\"oEdit1\");
oEdit1.RENDER(document.getElementById(\"idTemporary\").innerHTML);
</script>
<input type=\"hidden\" name=\"post\" id=\"post\">
";
و هذا الجزء لا تحتاج فهمه لانه لادراج المحرر لادخال النص فيه بدل من textarea
كود PHP:
<br />
<font size=4 >مصدر المقال: </font>
<input type="text" name="sitefrom" value="http://" size="50">
<br /><br />
<?
echo "<select name=sec>";
while ($arr = mysql_fetch_array($que))
{
echo "
<option name=sec value=$arr[id]>$arr[name]</option>";
}
echo "</select>";
?>
<input type="submit" name="اضف" onclick=submitForm()>
</form>
</p></div>
<?
فورم عادي تكمله لبقية الفورم مع ملاحظة انه يحتوي على القائمة المنسدلة التي تستخرج الاقسام من قاعد البيانات و تعرضها
لاضافة المقالات فيها
ملاحظة : هذا الفورم يرسل البيانات لنفس الملف كما اقول دائما و لكن بزيادة متغير هذه المرة و هو d
فيصبح الرابط الذي سوف يتلقى الفورم هو
www.XXX.com/admin/index.php?op=2&s=1&d=1
و هذا هو الكود الذي سوف يتم تنفيذه عند تعريف المتغيرات كما ذكرت
كود PHP:
if ($_GET['d'] == 1)
{
$sent=mysql_query("insert into subject (id,title,post,sitefrom,section
) values ('','$title','$post','$sitefrom','$sec'
)");
if ("$sent") {echo "<p align=\"center\"><b><font color=\"#000000\" size=\"5\">لقد تم اضافة الخبر بنجاح</font></b></p>\n";
echo "<p align=\"center\"><a href='http://localhost/wild/show.php'><font color=\"#000000\" size=\"4\">\n";
echo "<span style=\"text-decoration: none\">مشاهدة الموضوع</span></font></a></p>\n";
} else {
echo " لم تتم العملية بنجاح " ;
}
}
الان هذا الكود سوف يضيف محتويات الفورم الى قاعدة البيانات
$sent=mysql_query("insert into subject (id,title,post,sitefrom,section
) values ('','$title','$post','$sitefrom','$sec'
)");
دالة ادخال البيانات الى الجدول
if ("$sent") {echo "<p align=\"center\"><b><font color=\"#000000\" size=\"5\">لقد تم اضافة الخبر بنجاح</font></b></p>\n";
} else {
echo " لم تتم العملية بنجاح " ;
}
}
هذا شرط انه اذا تمت العملية بنجاح ام لا
و انتظروا بقية الدرس في الجزء الثاني من الدرس الثالث
بقي لنا القليل و اذا فهمت هذه الجزئية فاحمد الله فلقد فهمت الجزء الكبير
و ارجوا وضع استفساراتكم و تعليقاتكم
و في النهاية دعوة لي و لوالدي لن تضرك بشي
تحياتي للجميع