السلام عليكم ورحمة الله و بركاته
اخوتي وزملائي كيف حلكم جميعا
ان شاء الله بخير وصحه

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

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

وان شاء الله لما ربنا يقدرني واني الشرح سأقوم بوضع العمل كاملا

الان نحن نتكلم عن عمل صفحات اضافيه للموقع
اذن يلزمنا جدول جديد في قاعدة البيانات وبنيته تكون كالتالي

كود PHP:
                       CREATE TABLE `pages` ( 
  `
page_idint(11NOT NULL auto_increment
  `
page_titlevarchar(100NOT NULL
  `
page_contentlongtext NOT NULL
  `
statuestinyint(2NOT NULL
  `
add_datevarchar(100NOT NULL
  `
counterint(140NOT NULL
  
PRIMARY KEY  (`page_id`) 
ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=
الشرح كالتالي
page_id = اي دي الصفحه وهو تسلسل تلقائي
page_title عنوان الصفحه
page_content = محتوى الصفحه
statues = حالة الصفحه فعالة او غير فعالة
add_date = تاريخ اضافة الصفحه
counter = عداد الزوار الخاص بهذه الصفحه

الى الان كل شيء سليم؟؟

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

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

كود PHP:
                       // التأكد من المستخدم مسجل دخول 
if(!isset($_SESSION[moustafathetravellername]) && !isset($_SESSION[moustafathetravellerpass])) 
{     
    
error_msg(" غير مصرح لك بدخول هذه الصفحه بدون تسجيل دخول"); 
يعني في حالة عدم وجود السيزون اظهر رسالة الخطأ
وغير ذلك ابدأ في عمل الاحتمالات وعرض الصفحات الخاصه بها كالتالي

كود PHP:
                             switch($_GET['do']) 
      { 
         
        } 
الان حالتنا الافرتاضيه وهي اضافه صفحه جديده
اذن يلزمنا فورم لاضافة صفحه جديده
ويتكون الفورم من التالي
عنوان الصفحه
محتوى الصفحه
حالة الصفحه
بحيث يكون كالتالي

كود PHP:
                       <div align='center'
<
form method='POST' action='".$_SERVER["PHP_SELF"]."?do=addnew'
    <
table border='0' width='100%' dir='rtl' cellspacing='0' cellpadding='0'
    <
tr
        <
td width='20%'>عنوان الصفحه</td
        <
td
<
input type='text' name='page_title' size='40'></td
    </
tr
    <
tr
        <
td>محتوى الصفحه</td
        <
td><textarea rows='9' name='page_value' cols='29'></textarea></td
    </
tr
    <
tr
        <
td>حالة الصفحه</td
        <
td><select size='1' name='page_statues'
        <
option value='1'>فعال</option
        <
option value='0'>غير فعال</option
        </
select></td
    </
tr
    <
tr
        <
td colspan='2'
        <
p align='center'><input type='submit' value='اضافة صفحه' name='send'></td
    </
tr
</
table
</
form
</
div
اظن لا يوجد شيء غير واضح
الا ان الفورم تأخذ الاكشن التالي

كود PHP:
                       $_SERVER["PHP_SELF"]."?do=addnew 
اي نفس اسم الملف + اكشن = addnew
اذن ما علينا الا أكشن استقبال البيانات القادمة من هذا الفورم بحيث يكون الاكشن كالتالي


كود PHP:
                               case "addnew"
        
// هنا الاكواد 
        
break; 
والان نأتي لمرحلة معالجة البيانات الخاصه من الفورم
اولا نتأكد من البيانات فعلا قادمة من الفورم الاول تبعنا عن طريق الشرط التالي

كود PHP:
                               if(isset($_POST['send'])) 
        { 
            
// المعالجة 
               
}else 

        
error_msg("ليس لديك الصلاحيات لدخول هذه الصفحه"); 
        } 
يعني في حالة الضغط على زر اضافه نبدا في معالجة الاكواد والا اظهر رسالة خطأ
الان نأتي الى معالجة الاكواد
وهنا انا احب أن اتبع طريقتي المفضله وهي وضع الداتا في مصفوفه كالتالي

كود PHP:
                               $data = array( 
        
'page_title'        => clean($_POST['page_title']) ,    // عنوان الصفحه 
        
'page_value'        => clean($_POST['page_value']) ,    // محتوى الصفحه 
        
'page_statues'      => intval($_POST['page_statues'])   ); // حالة الصفحه 
الان عملية معالجة الاخطاء

كود PHP:
                               // التأكد من الأخطاء 
        // التأكد من ان عنوان الصفحه غير فارغ 
        
if(!$data[page_title]) 
        { 
            
$err[]  = "لم تقم بإدخال عنوان الصفحه" 
        } 
        
// التأكد من أن محتوى الصفحه غير فارغ 
        
elseif(!$data[page_value]) 
        { 
            
$err[]  = "لم تقم بإدخال محتوى الصفحه" 
        } 
        
// التأكد من أن عدد أححرف العنوان ليس أقل من 5 
        
elseif(strlen($data[page_title]) < 5
        { 
            
$err[]  = "عنوان الصفحه قصير يجب أن لا يقل عن 5 أحرف" 
        } 
        
// التأكد من عدد احرف المحتوى لا يقل عن 15 
         
elseif(strlen($data[page_value]) < 15
         { 
            
$err[]  = "محتوى الصفحه قصير جدا يجب أن لا يقل عن 25 حرف" 
        } 
        
// في حالة وجود خطأ يتم الاعلان عن مصفوفه الاخطاء وفكها لجلب الخطأ 
        
if(is_array($err)) 
        { 
            while(list(
$key,$value) = each($err)) 
            { 
                
$msg .= $value 
            } 
            
// عرض رسالة الخطأ 

  
[IMG]http://cdn5.tribalfusion.com/media/37536.gif[/IMG]    
            
error_msg($msg); 
        } 
واذا ظهرت اخطاء فإن عملية الادخال تتوقف وبالتالي تظهر رسالة خطأ
واذا لم يكن هناك اخطاء يتم الادخال الى قاعدة البيانات كالتالي

كود PHP:
                               else 
        { 
            
// الادخال الى قواعد البيانات 
            
$add mysql_query(" INSERT INTO  `pages` SET 
            `page_title`    = '"
.$data[page_title]."' , 
            `page_content`  = '"
.$data[page_value]."' , 
            `statues`       = '"
.$data[page_statues]."' , 
            `add_date`      = '"
.time()."' 
            "
); 
            
// اذا تمت الاضافة 
            
if($add
            { 
                
suc_msg(" تم غضافة الصفحه بنجاح<br> لحظات ويتم تحويلك"); 
                    echo 
" <META HTTP-EQUIV='Refresh' CONTENT='2; url=".$_SERVER["HTTP_REFERER"]."'>"
            } 
            
// والا اعرض خطأ mysql 
            
else 
            { 
                
error_msg(mysql_error()."<br><b><a href=\"javascript:history.back(-1)\"><span class=\"error\">إضغط هنا للعودة الى الخلف</span></a>"); 
            } 
        } 
أظن واضح عملية الاضافه ولا تحتاج الى شرح
وبالتالي تمت اضافه الصفحه الى قاعدة البيانات

الان نأتي الى اكشن اخر في نفس الصفحه وهو عرض قائمة الصفحات
اذن نسوي اكشن جديد وليكن اسمه list ويكون محتواه اولا استعلام عن الصفحات في قاعدة البيانات
اذا كانت هناك صفحات يعود لنا ببيناتها
وان لم يكن هناك يعرض رسالة بذلك ويكون الاستعلام كالتالي
<div style="margin:20px; margin-top:5px">
كود PHP:
                       [PHP]        $query mysql_query(" SELECT * FROM `pages` ORDER BY `pages`.`page_id` DESC ")or die(mysql_error()); 
        if(
mysql_affected_rows() == 0
        { 
            
mysql_free_result($query); 
            
error_msg(" لم يتم إضافة صفحات بعد"); 
        } 
[/PHP]
طيب واذا كانت هناك صفحات؟؟؟
نقوم بفرد المصفوفه وعمل حلقة تكرار لجلب بيانات هذه الصفحات في قائمة كالتالي

كود PHP:
                               else 
        { 
            
// بداية جدول لتنسيق عرض الصفحات 
            
echo "<table border='1' width='100%' dir='rtl'> 
    <tr> 
        <td align='center'>اي دي</td> 
        <td align='center'>عنوان الصفحه</td> 
        <td align='center'>تاريخ الاضافة</td> 
        <td align='center'>عدد الزيارات</td> 
        <td align='center'>الحالة</td> 
        <td align='center'>خيارات</td> 
    </tr>"

    
// بداية حلقة تكرار 
    
while($row mysql_fetch_array($query)) 
    { 
        echo 
"<tr> 
        <td align='center'>
$row[page_id]</td> 
        <td align='center'><a href=\""
.$_SERVER["PHP_SELF"]."?do=showpage&pageid=$row[page_id]\">$row[page_title]</a></td> 
        <td align='center'>"
.unix_time_dmy($row[add_date])."</td> 
        <td align='center'>
$row[counter]</td> 
        <td align='center'>"
statues($row[statues])."</td> 
        <td align='center'>تعديل - حذف</td> 
    </tr> 
"

    } 
    echo 
"</table>"
        } 
وبالتالي يتم عرض جميع بيانات هذه الصفحات في قائمة
قمت بعمل دالتين بسيطتين
الاولى وهي statues لعرض حالة الصفحه 0 = غير فعاله 1 = فعالة
والدالة الاخرى وهي unix_time_dmy وهي تأخذ الوقت بصيغه unix_time_stamp وتحوله الى الصيغه المعروفه عندنا

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

كود PHP:
                       $pageid intval($_GET['pageid']); 
طيب في حالة ما اذا كان الاي دي خالي او = صفر؟؟
لابد التأكد من ذلك ايضا

كود PHP:
                                 if(!$pageid
        { 
            
error_msg("لم تقم بإختيار صفحه لحذفها"); 
        } 
انما اذا كان صحيح يتم الحذف من قاعدة البيانات

كود PHP:
                               else 
        { 
            
$del mysql_query("DELETE FROM `pages` WHERE `pages`.`page_id` = '$pageid' LIMIT 1 ")or die(mysql_error()); 
            if(
$del
            { 
                
suc_msg("تم حذف الصفحه بنجاح لحظات ويتم تحويلك"); 
                    echo 
" <META HTTP-EQUIV='Refresh' CONTENT='2; url=".$_SERVER["HTTP_REFERER"]."'>"
            } 
        } 
وفي حالة الحذف يتم ظهور رسالة بالنجاح
وعند الفشل يتم عرض رسالة بالفشل

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

اولا التأكد من الاي دي

كود PHP:
                               $id intval($_GET['pageid']); 
        if(!
$id
        { 
            
error_msg("لم تقم بإختيار صفحه لعرضها"); 
        } 
ثانيا جلب المحتويات ووضعها في جدول

كود PHP:
                               else 
        { 
            while(
$row mysql_fetch_array($query)) 
            { 
                echo 
"<table border='1' width='100%' id='table1' dir='rtl'> 
    <tr> 
        <td align='center' width='20%'>عنوان الصفحه</td> 
        <td>
$row[page_title]</td> 
    </tr> 
    <tr> 
        <td>تاريخ الاضافة</td> 
        <td>"
.unix_time_dmy($row[add_date])."</td> 
    </tr> 
    <tr> 
        <td>الحالة</td> 
        <td>"
statues($row[statues])."</td> 
    </tr> 
    <tr> 
        <td>عدد الزيارات</td> 
        <td>
$row[counter]</td> 
    </tr> 
    <tr> 
        <td>المحتوى</td> 
        <td>
$row[page_content]</td> 
    </tr> 
</table>"

            } 
        } 
        } 
وهكذا اكون وصلت الى نهاية الجزء الاول من هذا الدرس

يتفضل لنا عملية التعديل على الصفحات وعملية اظهارها في الصفحه الرئيسيه للزوار

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

واخيرا ارجو الدعاء لي في حالة ما اذا استفدتم من الشرح ولو مقدار ضئيل