تخفیف ویژه

آموزش ساخت خوراک مطالب سایت (RSS) با PHP و MYSQL

دسته بندی: پایگاه داده
زمان مطالعه: 3 دقیقه
۲۲ شهریور ۱۳۹۲

دوستان سلام،توی این مطلب قصد داریم یکی قسمت‌های مهم وب سایت‌های امروزی یعنی RSS رو با PHP و MYSQL آموزش بدیم،این آموزش خیلی ساده است و ما فقط قصد داریم یه ایده برای کد نویسی این قسمت از ساییتون بهتون بدیم.

خوب اول از همه جدول اخبار یا مطالب سایت مون رو ایجاد میکنیم(فرض ما اینه که شما این جدول رو ندارید و گرنه باید از همون جدول اصلی مطالب یا اخبار خودتون استفاده کنید).

فهرست محتوای این مقاله

کد SQL

CREATE TABLE IF NOT EXISTS `news` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` text COLLATE utf8_bin NOT NULL,
`sm` text COLLATE utf8_bin NOT NULL,
`body` text COLLATE utf8_bin NOT NULL,
`author` varchar(250) COLLATE utf8_bin NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
)

خوب جدول که توضیح خاصی نداره،ستون عنوان،خلاصه،متن،نویسنده و تاریخ خبر رو توش درج میکنیم(البته فرض ما اینجا اینه که این جدول شما مطلب داره و ما قرار نیست اینجا توش مطلبی ثبت کنیم).

ایجاد صفحه RSS

خوب کد‌های لازم برای ایجاد صفحه خوراک مطالب یا همون RSS رو به این صورت می‌نویسیم.

require_once 'config/database.php';
header("Content-type:text/xml;charset=utf-8");
global $db;
$sql="SELECT * FROM news ORDER BY id DESC LIMIT 10";
$db->connect();
$result=$db->query($sql);

function removeillegalchar($string){
$illegal_chars=array("&","\"","'","<",">");
$sanitize_chars=array("&amp;","&quot;","&apos;","&lt;","&gt;");
return str_replace($illegal_chars,$sanitize_chars,$string);
}

خوب ما مثل همیشه از یه کلاس که خودمون نوشتیم و تو اسکریپت‌های قبلی هم ازش استفاده کردیم،اینجا هم برای پردازش‌های بانک اطلاعات استفاده میکنیم(فایلش توی فایل‌های پروژه موجوده)،اول از همه اون کلاس رو به صفحه اضافه کردیم،یه هدر قرار دادیم تا نوع محتوا رو XML مشخص کنیم (RSS بر پایه XML کار میکنه)،بعدشم یه کوئری نوشتیم که اطلاعات لازم رو واکشی کنیم،بعدشم اتصال به دیتابیس و ذخیره اطلاعات دریافتی در یک متغییر،ما بعد از این یه تابع تعریف کردیم که کار این تابع اینه که کاراکتر‌های غیر مجاز توی سند XML رو به کاراکتر‌های مجاز اون تبدیل میکنه،حالا خودتون نحوه استفاده شو می‌بینید.

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;rss version="2.0"&gt;
&lt;channel&gt;
&lt;title&gt;مرجع تخصصی طراحی وب&lt;/title&gt;
&lt;link&gt;https://7learn.com&lt;/link&gt;
&lt;description&gt;
سون لرن- مرجع تخصصی طراحی وب
&lt;/description&gt;
&lt;?php while($row=$db-&gt;fetch_array($result)):?&gt;
&lt;item&gt;
&lt;title&gt;&lt;?php echo removeillegalchar($row['title']) ?&gt;&lt;/title&gt;
&lt;link&gt;http://www.yourdomain.com/news.php?id=&lt;?php echo $row['id']; ?&gt;&lt;/link&gt;
&lt;description&gt;&lt;?php echo removeillegalchar($row['sm']); ?&gt;&lt;/description&gt;
&lt;/item&gt;
&lt;?php endwhile; ?&gt;
&lt;/channel&gt;
&lt;/rss&gt;
&lt;?php $db-&gt;disconnect(); ?&gt;

خوب اینم از کد‌های اصلی تولید محتوای خوراک،اولش که سند XML و RSS  رو تعریف کردیم،توی XML هم شبیه HTML هر گره باید آغاز و پایانش مشخص باشه،با گره channel ما بدنه اصلی رو تعریف کردیم برای قست‌های عنوان و توضیحات از عنصر‌های title,link,description استفاده کردیم که توضیحات آدرس و عنوان وب سایت خودتون رو باید داخلش قرار بدید،خوب حالا نوبت به قسمت مطالب میرسه،اینجا باید از عنصر item استفاده کنیم و داخل خود عنصر item هم سه عنصر عنوان،لینک و خلاصه مطلب قرار میگیره،ما از یه حلقه استفاده کردیم و مطالبی که تو قسمت قبلی واکشی کردیم رو این جا به نمایش در میاریم.توی قسمت title عنوان مطلب، توی قسمت link هم لینک مطلب رو قرار دادیم (شما باید آدرس صفحه نمایش مطلب خودتون رو به همراه اطلاعات لازم بنویسید) و توی قسمت description هم خلاصه مطلب رو می‌نویسیم،می بینید که از اون تابع که کاراکتر‌های غیر مجاز رو حذف میکرد اینجا استفاده کردیم،خوب آخر کار هم ما اتصال به دیتابیس رو قطع کردیم.

کد‌های کامل برای صفحه RSS

&lt;?php
require_once 'config/database.php';
header("Content-type:text/xml;charset=utf-8");
global $db;
$sql="SELECT * FROM news ORDER BY id DESC LIMIT 10";
$db-&gt;connect();
$result=$db-&gt;query($sql);
function removeillegalchar($string){
$illegal_chars=array("&amp;","\"","'","&lt;","&gt;");
$sanitize_chars=array("&amp;amp;","&amp;quot;","&amp;apos;","&amp;lt;","&amp;gt;");
return str_replace($illegal_chars,$sanitize_chars,$string);
}
?&gt;
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;rss version="2.0"&gt;
&lt;channel&gt;
&lt;title&gt;مرجع تخصصی طراحی وب&lt;/title&gt;
&lt;link&gt;https://7learn.com&lt;/link&gt;
&lt;description&gt;
سون لرن- مرجع تخصصی طراحی وب
&lt;/description&gt;
&lt;?php while($row=$db-&gt;fetch_array($result)):?&gt;
&lt;item&gt;
&lt;title&gt;&lt;?php echo removeillegalchar($row['title']) ?&gt;&lt;/title&gt;
&lt;link&gt;http://www.yourdomain.com/news.php?id=&lt;?php echo $row['id']; ?&gt;&lt;/link&gt;
&lt;description&gt;&lt;?php echo removeillegalchar($row['sm']); ?&gt;&lt;/description&gt;
&lt;/item&gt;
&lt;?php endwhile; ?&gt;
&lt;/channel&gt;
&lt;/rss&gt;
&lt;?php $db-&gt;disconnect(); ?&gt;

خروجی کار شما توی FF تقریبا باید چیزی شبیه به این باشه.

خروجی خوراک مطالب در فایر فاکس

امیدوارم مفید بوده باشه.

موفق و پیروز باشید.

دانلود فایل‌های PHP

چه امتیازی به این مقاله می دید؟
نویسنده کیوان علی محمدی
یادگیرنده ی همیشگی،برنامه نویس،نویسنده،عاشق خلق چیزهای عجیب،عاشق تحلیل داده ها، مسئول بخش فنی و هم بنیان گذار در سون لرن.

نظرات کاربران

رضا

خیلی ممنون

lili

تشکر

zanyar

با سلام اقا کیوان من این ار اس اس رو درست کردم همه چیش درسته بجز اینکه فارسی رو پشتیبانی نکرده و همه پست ها رو به صورت علامت سوال میزاره لطفا کمک کنید خیلی ممنونم
راستی همه کاراکترها رو هم روی utf-8 گذاشتم اما بازم فرقی نکرد

کیوان علی محمدی

سلام اگه نگاه کنی تو قسمت کد ها ما charset رو روی UTF-8 تنظیم کردیم و برای خودمون جواب داده،احتمال زیاد مشکل از یه جای دیگه باشه مثلا مرورگرت.

دانیال

ببخشید من توی گوگل کروم امتحان کردم به یک شکل دیگری بود شما بهش استایل دادید؟

کیوان علی محمدی

سلام نه اصلا اتایل نداره،آره فرق داره کروم همون طوری نشون میده.

artaj

ســلام و درود خدمت کیوان عزیز
کیوان جان آموزشتون خیلی خیلی جالب بود…
منم در مورده کد نویسی یک سوالی داشتم ازتون
اگه مایل بودید این ایمیل منو اد کن
[email protected]
منتظرم

کیوان علی محمدی

سلام لطف دارید،اگه سواب داشتید به ایمیلم که درپایین آموزش ها قرار داره بفرسیتد.

حسین

با سلام و تشکر
یه مشکلی داشتم ممنون میشم راهنمایی کنید
این آدرس feed منه
cgalma.ir/feed
فکنم مشکل داره ممنون میشم برای حل مشکل راحنماییم کنید

کیوان علی محمدی

سلام چه مشکلی دارید؟من فید شما رو نگاه کردم مشکلی ندیدم.

حسین

خیلی از مطالب را در feed نیمده و وقتی میخوام از سرویس http://feedburner.google.com استفاده کنم این خطارو میده
The URL does not appear to reference a valid XML file. We encountered the following problem: Your feed has an invalid character(s) in it. This may be caused by editing your posts with a wordprocessing program. Try copying your posts into a plain text editor (like Notepad or TextEdit) before pasting them in your blogging tool.

کیوان علی محمدی

شما از همین کدی که ما قرار دادیم استفاده کردید؟ این کد فقط 10 مطلب آخر رو دریافت میکنه.

کالباس بر

ترفندهای خوبی بود
مرسی از مطالب خوبتون

Reyhaneh_B

سلام
خیلی عالی بود
بازم منتظر بهترین ترفندها هستیم
موفق باشین.

رضا ساطع بیدگلی

سلام آقا کیوان
ببخشید بی زحمت میشه بگی اصلا این RSS چی هست ؟ به چه درد میخوره ؟ و حتما باید تو سایتی وجود داشته باشه ؟

کیوان علی محمدی

سلام آقا رضا،داداش این RSS کمک میکنه تا اطلاعات و مطالب جدید سایت های که مثلا هر روز سر میزنی رو یکجا داشته باشی و زیادخودتو درگیر رفتن وسر زدن با سایت ها نکنی،با برزو شدن سایت مطالب جدید سریع توی این RSS قرارمیگیره و شما به کمک یه خوراک خوان مثل Google Reader میتونی این آپدیت ها رو ازشون مطلع بشی به راحتی دریافت کنی،تقریبا جزء استاندارد های طراحی سایت به شمار میره.

محمد امین واحدی نیا

میشه آموزش وردپرسیشو بزارین من فقط توابع وردپرس مثل دریافت مطلب از دیتابیسو نمی دونم

کیوان علی محمدی

سلام برای وردپرس فکر کنم پلاگین های زیادی وجود داشته باشه،اما اگه خودتون می خواید بنویسید برای دریافت مطالب می تونید از حلقه وردپرس استفاده کنید

محمد امین واحدی نیا

میشه بیشتر توضیح بدین. من در واقع می خوام پلاگین بنویسم اگه بشه و گرنه خود وردپرسو دستکاری می کنم

کیوان علی محمدی

می تونید مثلا یه صفحه مجزا ایجاد کنید (دقیقا مثل آموزش صفحه انتقال دهنده لینک های سایت) و حلقه وردپرس رو براش بنویسید (البته با توجه همین اموزش)

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.