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

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

في البداية يلزمنا برمجة ملفين:
1- db.php وهو ملف الاتصال بقاعدة البيانات.
2- repair.php وهو الملف المسئول عن اصلاح جميع جداول قاعدة البيانات.


وسوف أقوم هنا بمناقشة الملفين بالتفصيل
ونبدأ بسم الله

الملف الأول: db.php
كود الملف:

كود PHP:
                       <?
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////

// قم بتغيير اعدادات قاعدة البيانات كما تريد
$dbname "db";
$dbusername "root";
$dbpassword "";
$dbserver "localhost";
// لا تقم بالتعديل بعد هذا السطر

  
mysql_connect($dbserver$dbusername$dbpassword);
mysql_select_db($dbname);
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////
?>
ونأتي لشرح الملف:
في السطور الأول والثاني والثالث والرابع للكود، قمنا بتحديد بيانات قاعدة البيانات، وهي اسم قاعدة البيانات واسم المستخدم للاتصال بها وكلمة المرور واسم سيرفر MySQL على التوالي
في السطر الخامس قمنا باجراء الاتصال بسيرفر قاعدة البيانات عن طريق الدالة mysql_connect()
في السطر السادس قمنا باختيار قاعدة البيانات التي سنتعامل معها عن طريق الدالة mysql_select_db()
بهذا ينتهي الملف الأول وهو الخاص بالاتصال بقاعدة البيانات


الملف الثاني: repair.php
كود الملف:

كود PHP:
                       <?
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////
require('db.php');
?>
<html dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256" />
<script language="JavaScript"> 
function checkAll(form){
  for (var i = 0; i < form.elements.length; i++){    
    eval("form.elements[" + i + "].checked = form.elements[0].checked");  
  } 

</script> 
</head>
<body>
<?
function redir($msg$url)
{
    echo 
"<p align=\"center\">";
    echo 
"<table width=\"70%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
    echo 
"<tr><td>&nbsp;</td></tr>";
    echo 
"<tr><td>$msg</td></tr>";
    echo 
"<tr><td>&nbsp;</td></tr>";
    echo 
"<meta http-equiv=\"refresh\" content=\"1;url=$url\">";
    echo 
"</p>";
}

    if(!isset(
$_POST['submit']))
    {
        
$tables mysql_query("SHOW TABLE STATUS");
        echo 
"<form name=\"form1\" method=\"post\" action=\"repair.php\"/><table width=\"80%\" cellpadding=\"5px\" border=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#0B4250\">";
        echo 
"<tr><td colspan=\"5\">تحسين الجداول</td></tr>";
        echo 
"<tr><td colspan=\"5\" style=\"font-size:8pt;\">اختر الجداول التي تريد تصليحها وتحسينها ثم اضغط تحسين</td></tr>";
        echo 
"<tr><td>الجدول</td><td class=\"table_sub\">المساحة</td>
        <td>الحالة</td>
            <td>
        <input type=\"checkbox\" name=\"check_all\" checked=\"checked\" onClick=\"checkAll(this.form)\"/></td></tr>"
;
        while(
$table mysql_fetch_array($tables))
        {
            
$size round($table['Data_length']/10242);

  [
IMG]http://cdn5.tribalfusion.com/media/37536.gif[/IMG]    
            
$status mysql_fetch_array(mysql_query("ANALYZE TABLE `$table[Name]`"));
            echo 
"<tr><td width=\"20%\">$table[Name]</td><td width=\"40%\">$size كيلوبايت</td><td width=\"25%\">$status[Msg_text]</td><td  width=\"5%\"><input type=\"checkbox\" name=\"check[]\" value=\"$table[Name]\" checked=\"checked\" /></td></tr>";
        }
        echo 
"<tr><td colspan=\"5\"><center><input type=\"submit\" name=\"submit\" value=\"تحسين\" /></center></td></tr>";
        echo 
"</table></form>";
    }
    else
    {
        if(!
$_POST['check'])
        {
            
redir("من فضلك اختر جدول واحد على الأقل ليتم تحسينه..""index.php?com=repair&do=optimize");
            exit;
        }
        
$tables $_POST['check'];
        echo 
"<table width=\"80%\" cellpadding=\"5px\" border=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#0B4250\">";
        echo 
"<tr><td colspan=\"5\">تحسين الجداول</td></tr>";
        foreach(
$tables as $table)
        {
            
$query mysql_query("REPAIR TABLE `"$table "`");
            
$que mysql_fetch_array($query);
            echo 
"<tr><td width=\"20%\">";
            echo 
"تم تصليح الجدول \"" $que['Table'] . "\" بنجاح";
            echo 
"</td></tr>";
        }
        echo 
"<tr><td colspan=\"5\" style=\"height:5px\"></td></tr>";
        echo 
"</table>";
        
redir("تم تحسين الجداول بنجاح..""repair.php");
    }
?>
</body>
</html>
<?
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////
?>
ونأتي لشرح الكود:

كود PHP:
                       require('db.php'); 
كود ادراج ملف الاتصال بقاعدة البيانات عن طريق الدالة require()



كود PHP:
                       <script language="JavaScript"
function 
checkAll(form){
  for (var 
0form.elements.lengthi++){    
    eval(
"form.elements[" "].checked = form.elements[0].checked");  
  } 

</script> 
هذه الدالة بلغة جافاسكريبت Javascript وهي تقوم باختيار /الغاء اختيار جميع الجداول، حيث تقوم باختيار جميع صناديق الاختيار المقابلة لجميع الجداول بدلا من اختيارها واحدا تلو الآخر


كود PHP:
                       function redir($msg$url)
{
    echo 
"<p align=\"center\">";
    echo 
"<table width=\"70%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
    echo 
"<tr><td>&nbsp;</td></tr>";
    echo 
"<tr><td>$msg</td></tr>";
    echo 
"<tr><td>&nbsp;</td></tr>";
    echo 
"<meta http-equiv=\"refresh\" content=\"1;url=$url\">";
    echo 
"</p>";

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


كود PHP:
                       $tables mysql_query("SHOW TABLE STATUS"); 
الاستعلام عن جميع الجداول الموجودة في قاعدة البيانات


كود PHP:
                       while($table mysql_fetch_array($tables)) 
استعراض نتائج الاستعلام عن طريق حلقة تكرار while


كود PHP:
                       $size round($table['Data_length']/10242); 
جلب حجم الجدول بالكيلوبايت وتقريبه الى رقمين عشريين بعد الفاصلة عن طريق الدالة round


كود PHP:
                       $status mysql_fetch_array(mysql_query("ANALYZE TABLE `$table[Name]`")); 
الاستعلام عن حالة الجدول الحالي، وتكون نتيجة الاستعلام:
Table is already up to date
أو OK في حالة عدم وجود مشاكل بالجدول
أو رسالة الخطأ في حالة وجود خطأ بالجدول


كود PHP:
                       $query mysql_query("REPAIR TABLE `"$table "`"); 
استعلام اصلاح وتحسين الجدول


كود PHP:
                               redir("تم تحسين الجداول بنجاح..""repair.php"); 
كود الانتقال الى الصفحة الرئيسية مرة أخرى بعد انتهاء التحسين

بهذا نكون قد انتهينا من مناقشة الكود
والملفين كاملين بالمرفقات
repair.php | db.php