أولا السلام عليكم ورحمة الله وبركاته
من خلال العنوان أشرنا الى أنه يمكننا صناعة تدفق rss من منتداك أو موقعك
طيب أولا ما هو هذا rss
RSS هو اختصار ل « Really Simple Syndication ». وهو عبارة عن تبادل معلومات من القاعدة مرورا بملف X ML ووصولا الى القارئ وما ينتج في ملف X ML هو أخر مستجدات ما تحمل قاعدة البيانات من ناحية المعلومات التي أدخلت اليها
فيمكن للزائر او العضو على حد سواء معرفة أخر ما دار بالمنتدى أو الموقع من مواضيع
كما يمكنه ان كانت لدى منتداه خاصية جلب الأخبار استيقاءالمواضيع من المنتدى المزود بتقنية RSS وهذا ما هو متوفر في vb المتجلي في هاك "تغدية rss "
حسنا عرفنا الأن ما هي تقنية rss الأن لنبدأ عملية تركيب التقنية على موقعنا
أول شئ يجب انشاء مخطط لقاعدة البيانات
تدفق RSS سيحتوي على أخر المعلومات المتواجدة في قاعدة البيانات
لهذا نحن بحاجة الى جدول ضمن القاعدة المراد
استخراج المستجدات منها وفيه سيتم تخزين المعلومات الواردة على قاعدة
البيانات ; فلنسمي هدا الجدول ب forum_actualite
مميزاته كالتالي
CREATE TABLE IF NOT EXISTS forum_actualite
(
id INT(7) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
categorie_id INT(4) NOT NULL,
titre VARCHAR(200) NOT NULL,
corps TEXT NOT NULL,
auteur VARCHAR(30) NOT NULL,
email VARCHAR(60),
creation DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
edition DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
publication TINYINT(1) DEFAULT 0
);
CREATE TABLE IF NOT EXISTS forum_categorie
(
id INT(7) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
libelle VARCHAR(100) NOT NULL
);
/**
* Constantes d'accès à la base de données
* et de configuration des news
**/
// Adresse du serveur de base de données
define('DB_SERVEUR', 'localhost');// غير هنا الى اسم السيرفر
// Login
define('DB_LOGIN','root');// هنا اسم مستعمل القاعدة
// Mot de passe
define('DB_PASSWORD','root');// هنا الباس للقاعدة
// Nom de la base de données
define('DB_NOM','APTutoriels');// اسم قاعدة البيانات
// Nom des tables utiles
define('DB_ACTUALITE_TABLE','forum_actualite');
define('DB_CATEGORIE_TABLE','forum_categorie');
// Driver correspondant à la BDD utilisée
define('DB_DSN','mysql:host='. DB_SERVEUR .';dbname='. DB_NOM);//
// Nombre de news maximum par flux
define('MAX_NEWS_PAR_FLUX', 10);
// URL du site
define('URL_SITE','http://www.votresite.com'); //أدخل عنوان موقعك
// Informations du webmaster
define('WEBMASTER_NOM','John DOE');
define('WEBMASTER_EMAIL','johndoeserver.com');
?>
/**
* Programme principal
* انشاء تدفق RSS
***/
// استيراد ملفات التعديل configuration
require(dirname(__FILE__).'/news-config.inc.php');
// Import de la classe RSSFeed
require(dirname(__FILE__).'/RSSFeed/RSSFeed.class.php');
/**
* Déclaration des variables globales
***/
// Objets de connexion et de manipulatin de la BDD
$oPDO = null;
$oPDOStatement = null;
// متغيرات خاصة ب rss
$oRssFeed = null;
$oRssItem = null;
// جدول يحفض مستجدات القاعدة
$aDernieresNews = array();
// حفض الأيميل في القاعدة
$sEmail = '';
try
{
// Connexion sur la BDD
$oPDO = new PDO(DB_DSN, DB_LOGIN, DB_PASSWORD);
$oPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// استرجاع أخر ما جدة به القاعدة
$oPDOStatement = $oPDO->query
(
"SELECT
actu.id,
actu.categorie_id,
actu.titre,
actu.corps,
actu.auteur,
actu.email,
actu.creation,
cat.libelle
FROM ". DB_ACTUALITE_TABLE ." AS actu,". DB_CATEGORIE_TABLE ." AS cat
WHERE
publication=1
AND
actu.categorie_id = cat.id
ORDER BY creation DESC LIMIT 0,". MAX_NEWS_PAR_FLUX
);
// حفض المعلوماتفي جدول
$aDernieresNews = $oPDOStatement->fetchAll(PDO::FETCH_OBJ);
// انتهاء الأتصال بالقاعدة
$oPDO = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
// التحقق من التسجيلات المدخلة
if(sizeof($aDernieresNews)>0)
{
// Création des entêtes du flux RSS
$oRssFeed = new RSSFeed('utf-8');
$oRssFeed->setProtectString(true);
$oRssFeed->setTitle('Flux RSS des actualités');
$oRssFeed->setDe***ion('Les dernières actualités directement par flux RSS');
$oRssFeed->setLink(URL_SITE .'/'. basename(__FILE__));
$oRssFeed->setPubDate('2007-12-31');
$oRssFeed->setLastBuildDate(date('Y-m-d'));
$oRssFeed->setWebMaster(WEBMASTER_EMAIL,WEBMASTER_NOM);
$oRssFeed->setManagingEditor(WEBMASTER_EMAIL,WEBMASTER_NOM);
$oRssFeed->setCopyright('(C) Copyright 2007 - VotreSite.com - Tous droits réservés - reproduction interdite');
$oRssFeed->setGenerator('Powered with RSSFeed Class by Hugo "Emacs" HAMON - http://www.apprendre-php.com');
$oRssFeed->setLanguage('fr');
// Ajout des news au flux
foreach($aDernieresNews as $oNews)
{
// استرجاع الأيميل
$sEmail = $oNews->email;
$oRssItem = new RSSFeedItem();
$oRssItem->setTitle($oNews->titre);
$oRssItem->setDe***ion($oNews->corps);
$oRssItem->setLink(URL_SITE .'/news.php?id='. $oNews->id);
$oRssItem->setGuid(URL_SITE .'/news.php?id='. $oNews->id, true);
if(!empty($sEmail))
{
$oRssItem->setAuthor($sEmail, $oNews->auteur);
}
$oRssItem->setPubDate($oNews->creation);
$oRssFeed->appendItem($oRssItem);
$oRssItem = null;
}
// حفض تدفق RSS
$oRssFeed->save('rss-news.xml');
// اضهارالتدفق في الملف
header('Content-Type: text/xml; charset=utf-8');
$oRssFeed->display();
}
?>
من خلال العنوان أشرنا الى أنه يمكننا صناعة تدفق rss من منتداك أو موقعك
طيب أولا ما هو هذا rss
RSS هو اختصار ل « Really Simple Syndication ». وهو عبارة عن تبادل معلومات من القاعدة مرورا بملف X ML ووصولا الى القارئ وما ينتج في ملف X ML هو أخر مستجدات ما تحمل قاعدة البيانات من ناحية المعلومات التي أدخلت اليها
فيمكن للزائر او العضو على حد سواء معرفة أخر ما دار بالمنتدى أو الموقع من مواضيع
كما يمكنه ان كانت لدى منتداه خاصية جلب الأخبار استيقاءالمواضيع من المنتدى المزود بتقنية RSS وهذا ما هو متوفر في vb المتجلي في هاك "تغدية rss "
حسنا عرفنا الأن ما هي تقنية rss الأن لنبدأ عملية تركيب التقنية على موقعنا
أول شئ يجب انشاء مخطط لقاعدة البيانات
تدفق RSS سيحتوي على أخر المعلومات المتواجدة في قاعدة البيانات
لهذا نحن بحاجة الى جدول ضمن القاعدة المراد
استخراج المستجدات منها وفيه سيتم تخزين المعلومات الواردة على قاعدة
البيانات ; فلنسمي هدا الجدول ب forum_actualite
مميزاته كالتالي
CREATE TABLE IF NOT EXISTS forum_actualite
(
id INT(7) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
categorie_id INT(4) NOT NULL,
titre VARCHAR(200) NOT NULL,
corps TEXT NOT NULL,
auteur VARCHAR(30) NOT NULL,
email VARCHAR(60),
creation DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
edition DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
publication TINYINT(1) DEFAULT 0
);
حيث سوف نقوم بتخزبن كل فئة على حدة فيه forum_categorieسوف نقوم بانشاء جدول جديد في قاعدة البانات ألى وهو
forum_categori للجدول id الدي يتعلق بحقل étrangère _id مترابطين بالمفتاح forum_categori و forum_actualiteلا حض أن الجدولين
forum_categorie مميزات الجدول
forum_categori للجدول id الدي يتعلق بحقل étrangère _id مترابطين بالمفتاح forum_categori و forum_actualiteلا حض أن الجدولين
forum_categorie مميزات الجدول
CREATE TABLE IF NOT EXISTS forum_categorie
(
id INT(7) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
libelle VARCHAR(100) NOT NULL
);
phpMyAdminجيد يجب علينا الأن انشائها ف
ثم phpMyAdminالطريقة سهلة كل ما عليك فعله هو تسجيل الدخول الى
SQLاضغط على
أدخل الأوامر الى القاعدة
والأن نرى أن الجدو تم تكوينه
ثم phpMyAdminالطريقة سهلة كل ما عليك فعله هو تسجيل الدخول الى
SQLاضغط على
أدخل الأوامر الى القاعدة
والأن نرى أن الجدو تم تكوينه
الأن جيد ما علينا سوى استخراج المعلومات من القاعدة
هذا هو ملف الدي سيعدل
هذا هو ملف الدي سيعدل
/**
* Constantes d'accès à la base de données
* et de configuration des news
**/
// Adresse du serveur de base de données
define('DB_SERVEUR', 'localhost');// غير هنا الى اسم السيرفر
// Login
define('DB_LOGIN','root');// هنا اسم مستعمل القاعدة
// Mot de passe
define('DB_PASSWORD','root');// هنا الباس للقاعدة
// Nom de la base de données
define('DB_NOM','APTutoriels');// اسم قاعدة البيانات
// Nom des tables utiles
define('DB_ACTUALITE_TABLE','forum_actualite');
define('DB_CATEGORIE_TABLE','forum_categorie');
// Driver correspondant à la BDD utilisée
define('DB_DSN','mysql:host='. DB_SERVEUR .';dbname='. DB_NOM);//
// Nombre de news maximum par flux
define('MAX_NEWS_PAR_FLUX', 10);
// URL du site
define('URL_SITE','http://www.votresite.com'); //أدخل عنوان موقعك
// Informations du webmaster
define('WEBMASTER_NOM','John DOE');
define('WEBMASTER_EMAIL','johndoeserver.com');
?>
news-config.inc.phpأحفض ما سبق بصيغة
نأتي الأن الى الكود الرئيسي
نأتي الأن الى الكود الرئيسي
/**
* Programme principal
* انشاء تدفق RSS
***/
// استيراد ملفات التعديل configuration
require(dirname(__FILE__).'/news-config.inc.php');
// Import de la classe RSSFeed
require(dirname(__FILE__).'/RSSFeed/RSSFeed.class.php');
/**
* Déclaration des variables globales
***/
// Objets de connexion et de manipulatin de la BDD
$oPDO = null;
$oPDOStatement = null;
// متغيرات خاصة ب rss
$oRssFeed = null;
$oRssItem = null;
// جدول يحفض مستجدات القاعدة
$aDernieresNews = array();
// حفض الأيميل في القاعدة
$sEmail = '';
try
{
// Connexion sur la BDD
$oPDO = new PDO(DB_DSN, DB_LOGIN, DB_PASSWORD);
$oPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// استرجاع أخر ما جدة به القاعدة
$oPDOStatement = $oPDO->query
(
"SELECT
actu.id,
actu.categorie_id,
actu.titre,
actu.corps,
actu.auteur,
actu.email,
actu.creation,
cat.libelle
FROM ". DB_ACTUALITE_TABLE ." AS actu,". DB_CATEGORIE_TABLE ." AS cat
WHERE
publication=1
AND
actu.categorie_id = cat.id
ORDER BY creation DESC LIMIT 0,". MAX_NEWS_PAR_FLUX
);
// حفض المعلوماتفي جدول
$aDernieresNews = $oPDOStatement->fetchAll(PDO::FETCH_OBJ);
// انتهاء الأتصال بالقاعدة
$oPDO = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
// التحقق من التسجيلات المدخلة
if(sizeof($aDernieresNews)>0)
{
// Création des entêtes du flux RSS
$oRssFeed = new RSSFeed('utf-8');
$oRssFeed->setProtectString(true);
$oRssFeed->setTitle('Flux RSS des actualités');
$oRssFeed->setDe***ion('Les dernières actualités directement par flux RSS');
$oRssFeed->setLink(URL_SITE .'/'. basename(__FILE__));
$oRssFeed->setPubDate('2007-12-31');
$oRssFeed->setLastBuildDate(date('Y-m-d'));
$oRssFeed->setWebMaster(WEBMASTER_EMAIL,WEBMASTER_NOM);
$oRssFeed->setManagingEditor(WEBMASTER_EMAIL,WEBMASTER_NOM);
$oRssFeed->setCopyright('(C) Copyright 2007 - VotreSite.com - Tous droits réservés - reproduction interdite');
$oRssFeed->setGenerator('Powered with RSSFeed Class by Hugo "Emacs" HAMON - http://www.apprendre-php.com');
$oRssFeed->setLanguage('fr');
// Ajout des news au flux
foreach($aDernieresNews as $oNews)
{
// استرجاع الأيميل
$sEmail = $oNews->email;
$oRssItem = new RSSFeedItem();
$oRssItem->setTitle($oNews->titre);
$oRssItem->setDe***ion($oNews->corps);
$oRssItem->setLink(URL_SITE .'/news.php?id='. $oNews->id);
$oRssItem->setGuid(URL_SITE .'/news.php?id='. $oNews->id, true);
if(!empty($sEmail))
{
$oRssItem->setAuthor($sEmail, $oNews->auteur);
}
$oRssItem->setPubDate($oNews->creation);
$oRssFeed->appendItem($oRssItem);
$oRssItem = null;
}
// حفض تدفق RSS
$oRssFeed->save('rss-news.xml');
// اضهارالتدفق في الملف
header('Content-Type: text/xml; charset=utf-8');
$oRssFeed->display();
}
?>
rss-news.phpثم أحفض الملف بصيغة