بكسل - Powered by vBulletin


افاتار الكاتب
الصورة الرمزية mr graphics
mr graphics
مؤسس موقع بكسل (رحمه الله)
الدولة : -
الإهتمامات : -
الوظيفة : -
صورة الدرس الرمزية
معلومات الدرس
تصدير قاعدة البيانات PHP
بسم الله الرحمن الرحيم

في هذا الدرس سوف نتعلم برمجة سكريبت يقوم بحفظ قاعدة البيانات في صورة ملف نصي بالامتداد .sql بحيث يتم حفظ قاعدة البيانات في صورة استعلامات يمكن اعادة تركيبها ببساطة في لوحة تحكم اي موقع أو سكريبت PHPmyAdmin

مكونات السكريبت:
الملف list.php >> وظيفته طباعة قائمة للجداول الموجودة داخل قاعدة البيانات يمكن الاختيار منها.
الملف export.php >> وظيفته حفظ الجداول التي تم اختيارها في الملف السابق في صورة ملف .sql
الملف config.php >> فيه يتم حفظ معلومات قاعدة البيانات المطلوب حفظها.

مثال للسكريبت:
http://www.montadaphp.net/lessons/db-backup/list.php

الكود:
الملف list.php

كود PHP:
<?
// سكريبت حفظ قاعدة البيانات
// جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
// www.montadaphp.net
// رجاء عدم ازالة هذه الحقوق أبدا
?>
<html dir="rtl" lang="ar-sa">
<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>

<?
require("config.php");
$tables = @mysql_query("SHOW TABLE STATUS"); //عرض معلومات عن الجداول الموجودة في قاعدة البيانات
?>

<form name="form1" method="post" action="export.php"/>
<table width="80%" cellpadding="5px" border="1" style="border-collapse: collapse" bordercolor="#0B4250">
<tr><td colspan="5">تحميل نسخة احتياطية من قاعدة البيانات</td></tr>
<tr><td colspan="5" style="font-size:8pt;">اختر الجداول التي تريد تضمينها في النسخة الاحتياطية ومن ثم اضغط على تحميل</td></tr>
<tr><td class="table_sub">الجدول</td><td class="table_sub">المساحة</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); // ايجاد حجم الجدول بالكيلوبايت
    
echo "<tr><td width=\"20%\">$table[Name]</td><td width=\"65%\">$size كيلوبايت</td><td width=\"5%\"><input type=\"checkbox\" name=\"check[]\" value=\"$table[Name]\" checked=\"checked\" /></td></tr>";
}
?>
<tr><td colspan="5" class="table_header"><center><input type="submit" class="button" name="submit" value="تحميل" /></center></td></tr>
</table></form>

</body>
</html>
<?
// سكريبت حفظ قاعدة البيانات
// جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
// www.montadaphp.net
// رجاء عدم ازالة هذه الحقوق أبدا
?>
الملف export.php

كود PHP:
<?
// سكريبت حفظ قاعدة البيانات
// جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
// www.montadaphp.net
// رجاء عدم ازالة هذه الحقوق أبداً
require("config.php");

$tables $_POST['check'];
$outta "";
foreach(
$tables as $table)
{
    
$query = @mysql_query("SHOW CREATE TABLE "$table); //الاستعلام عن كود انشاء الجدول
    
$que = @mysql_fetch_array($query);
    
$outta .= $que['Create Table'] . "\r\n";// طباعة كود انشاء الجدول
    
$query2 = @mysql_query("SELECT * FROM `$que[Table]`");// ايجاد جميع الصفوف في الجدول
    
while($result = @mysql_fetch_array($query2))
    {
        while(
$res current($result))
        {
            
$fields[] .= "`".key($result)."`";
            
$values[] .= "'$res'";
            
next($result);
        }
        
$fields join(", "$fields);
        
$values join(", "$values);
        
$q "INSERT INTO `$que[Table]` ($fields) VALUES ($values);";
        
$outta .= $q "\r\n";
        unset(
$fields);
        unset(
$values);
    }
}
header("Content-length: " strlen($outta));
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=$db.sql");
echo 
$outta;
exit;
// سكريبت حفظ قاعدة البيانات
// جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
// www.montadaphp.net
// رجاء عدم ازالة هذه الحقوق أبداً
?>
الملف config.php

كود PHP:
<?
// سكريبت حفظ قاعدة البيانات
// جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
// www.montadaphp.net
// رجاء عدم ازالة هذه الحقوق أبداً

$server "localhost"// سيرفر قاعدة البيانات
$username "root"// اسم المستخدم لقاعدة البيانات
$pass ""// كلمة المرور لقاعدة البيانات
$db "dbname"// اسم قاعدة البيانات

// لا تقم بالتعديل تحت هذا السطر
@mysql_connect($server$username$pass);
@
mysql_select_db($db);

// سكريبت حفظ قاعدة البيانات
// جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
// www.montadaphp.net
// رجاء عدم ازالة هذه الحقوق أبداً
?>
أخيراً فيمكنك استخدام السكريبت سواء استخدام شخصي او تجاري او نشره كيفما تريد
بشرط واحد وهو الاحتفاظ بالحقوق المكتوبة داخل الكود

تحياتي
http://www.montadaphp.net/showthread.php?t=671