السلام عليكم ورحمة الله وبركاته
أحياناً نحتاج الى كتابة كود أو سكريبت يقوم بحفظ البيانات من قاعدة البيانات database الى ملف XML
والموضوع قد يبدو معقداً او مجهولا للوهلة الأولى لكنه سهل جداً كسهولة الكتابة الى المتصفح
في هذا الدرس سنفترض أننا نريد حفظ بيانات بعض الأشخاص من جدول users في ملف XML لاستخدامه لاحقا في غرض آخر
البيانات المطلوب حفظها هي عبارة عن: الاسم، النوع، السن والعنوان
الكود التالي يقوم بالمطلوب بالضبط:
كود PHP:
<?
header("Expires: Mon, 1 Jan 1996 01:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"users.xml\"");
echo "<?xml version=\"1.0\" encoding=\"windows-1256\"?>\n";
$users = @mysql_query("SELECT * FROM users");
echo "<users>\n";
while($user = @mysql_fetch_array($users))
{
echo "\t<user>\n";
echo "\t\t<name>";
echo $user['name'];
echo "</name>\n";
echo "\t\t<gender>";
echo $user['gender'];
echo "</gender>\n";
echo "\t\t<age>";
echo $user['age'];
echo "</age>\n";
echo "\t\t<address><![CDATA[";
echo $user['address'];
echo "]]></address>\n";
echo "\t</user>\n";
}
echo "</users>\n";
?>
واليكم شرح الكود:
في السطر الأول:
كود PHP:
header("Expires: Mon, 1 Jan 1996 01:00:00 GMT");
قمنا بتحديد تاريخ انتهاء صلاحية للملف باي تاريخ في الماضي، حتى يعتبره المتصفح دائما منتهي الصلاحية ولا يقوم بجلبه من الكاش
في السطر الثاني:
كود PHP:
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
قمنا بتحديد تاريخ الملف نفسه بتاريخ اليوم، وتاريخ الملف هو التاريخ الذي يظهر عند عرض بيانات الملف في ويندوز
في السطر الثالث والرابع والخامس:
كود PHP:
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
قمنا باضافة بعض الاكواد الاضافية والتي من وظيفتها منع جلب الملف من الكاش أيضاً
في السطر السادس:
كود PHP:
header("Content-Type: application/force-download");
قمنا باخبار المتصفح بضرورة تحميل الملف save والا يتم عرضه open
في السطر السابع:
كود PHP:
header("Content-Disposition: attachment; filename=\"users.xml\"");
حددنا اسم الملف "users.xml"
في السطر الثامن:
كود PHP:
echo "<?xml version=\"1.0\" encoding=\"windows-1256\"?>\n";
قمنا بطباعة هيدر header ملف xml وحددنا الترميز بـ windows-1256، طبعا يمكنك اختيار الترميز الذي يناسبك غير هذا الترميز، يعني مثلا لو البيانات التي تقوم بجلبها ترميزها utf8 فينبغي عليك تحديد نفس الترميز لملف xml
في السطور التالية الاستعلام وطباعة البيانات
وكما تلاحظ فالبيانات قد بدأت بالوسم [l]<users>[/l] والذي سيحتوي على كل المستخدمين
وانتهت بالوسم [l]</users>[/l] والذي يفيد انتهاء عرض بيانات جميع المستخدمين
أيضاً يتم عرض كل مستخدم بالطريقة التالية:
كود:
<user>
بيانات المستخدم
</user>
وهكذا حتى انتهاء جميع المستخدمين
كانت هذه بداية بسيطة لكيفية التعامل مع ملفات XML من خلال PHP
واي تعليقات او استفسارات يا هلا :smailes3:
منقول http://www.montadaphp.net/showthread.php?t=599