بكسل - Powered by vBulletin


افاتار الكاتب
الصورة الرمزية mr graphics
mr graphics
مؤسس موقع بكسل (رحمه الله)
الدولة : -
الإهتمامات : -
الوظيفة : -
صورة الدرس الرمزية
معلومات الدرس
تقييم الدرس : 3 تقييمات , بـمعدل 4.33
الـ RSS باستخدام قاعدة البيانات
لسلام عليكم ...


درسنا اليوم طريقة عمل ملف خلاصة الموقع (RSS) باستخدام قاعدة البيانات (MySQL) ...

قد يكون هذا سهلا لو أردنا عمله بامتداد PHP و لكن أكبر مشكلة هي لو أردنا إمتداد ملف الـ RSS بـ XML ...

قد يعتبر الأمر بعد هذا الكلام مستحيلا ، لكن لا تقلق فلا مستحيل مع البرمجة ...



نبدأ على بركة الله ...


أولا نحن نحتاج لتعديل ملف .htaccess ، بإضافة هذا السطر فقط ...


كود PHP:
AddType application/x-httpd-php .xml 
و بهذا جعلنا كل ملف XML يعمل كملف PHP ...

لا تقتصر هذا على ملفي PHP و XML فقط ، بل يمكنك إستخدام هذه الطريقة مثلا لتحويل ملفات الـ HTML إلى PHP ...

ثانيا نقوم بعمل ملف XML عادي ( اي بامتداد XML ) ، و نكتب أول سطر ...


كود PHP:
                       <? header('Content-type: text/xml'); ?>
لقد إستخدمنا هنا وسم PHP ، و هذا لأننا جعلنا بالأعلى كل ملف XML يعمل كملف PHP ...

و الآتي هو أهم ما يمكن وضعه بالأعلى ( للعلم يمكنك وضع أوسمة أخرى ) ...


كود PHP:
<rss version="2.0">
<
channel>
<
title>aLM3RiFa</title>
<
description>...</description>
<
link>http://www.alm3rifa.info/</link> 
السطر الأول به تعريف لنسخة الـ RSS ...
السطر الثاني إفتتاح للعمل ...
السطر الثالث هو عنوان الموقع و أسفل منه وصف للموقع و أسفله رابط الموقع ...

الآن إعدادات الإتصال بقاعدة البيانات ، يمكنك إستدعاءه بالدالة INCLUDE أو REQUIRE إن كنت تستخدم ملف إعدادات عام للموقع ( مثل CONFIG.PHP )

كود PHP:
                      <?
$dbhost 
'localhost';
$dbuname 'root';
$dbpw '';
$dbname 'rss';

$conn = @mysql_connect($dbhost ,$dbuname ,$dbpw ) or die('error');
mysql_select_db($dbname ,$conn) or die('error');

بعد ذلك نقوم بتحديد الجدول و الحقول المراد إستخراج المعلومات منها ...


كود PHP:
                      $query=mysql_query("SELECT `id`, `title`, `content` FROM topics ORDER BY `id` DESC LIMIT 0,5");
while(
$result mysql_fetch_array($query)){
?> 

الجدول المستخدم ...

كود PHP:
CREATE TABLE `topics` (
  `
idint(11NOT NULL auto_increment,
  `
titletext collate utf8_unicode_ci NOT NULL,
  `
contenttext collate utf8_unicode_ci NOT NULL,
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM  DEFAULT AUTO_INCREMENT 
تفصيل هذا الإستعلام : إستخدمت في هذا الدرس جدول مواضيع به ثلاث حقول ( المعرف ، العنوان ، المحتوى ) بحيث أن الإستخراج يكون لخمس

آخر مواضيع ، ثم نضع النتيجة في مصفوفة عبر الدالة MYSQL_FETCH_ARRAY و في حلقة تكرار ...

الآن نضع هذا الكود ...


كود PHP:
                           <item>
        <title><?=htmlentities(strip_tags($result['title'])); ?></title>
        <description> <?=htmlentities(substr($result['content'],0,60));?></description>
        <link>http://www.alm3rifa.info/?topic=<?=$result['id'];?></link>
     </item>
<? ?>
نضع كل المحتوى بين وسمي <item> الإفتتاحي و الختامي و هو ما يمثل إدراجا واحدا و بداخله عنوان الموضوع في الوسم <title> و الوصف <description> الذي سيظهر في حالتنا على أنه جزء من المحتوى لأننا إستخدمنا الدالة SUBSTR و حددنا عدد الحروف بـ 60 ، ثم رابط الموضوع الكامل <link> و الذي سيذهب إليه الزائر بعد الضغط على عنوان الموضوع ، ثم نغلق حلقة التكرار ... و بهذا سيتكرر المحتوى الواقع بين وسمي <item> الإفتتاحي و الختامي خمس مرات ...

و في النهاية نغلق وسم العمل و وسم الـ RSS

كود PHP:
</channel>
</
rss
أتمنى أن يفيدكم الدرس ...

الآن مع مثال حي ، من هنا ...

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