PHP و MySQL بۆ RSS

زۆربەی سیستەمەکانی بڵاوکردنەوەی ناوەڕۆک لە بنەڕەتدا تایبەتمەندیی RSS Feed ـیان لەگەڵ دا هەیە، بەڵام کاتێک وەک وێبداڕێژ ماڵپەڕێکی دەستکری دابڕێژیت، درووستکردنی RSS Feed کاتبەر و هەندێک کات ئاسان نییە.
لە ئەم بابەتەدا هەنگاو بە هەنگاو چۆنیەتی درووستکردنی پەڕەیەکی تایبەت بە درووستکردنی RSS Feed ڕوون دەکەمەوە کە هیوادارم سوودی هەبێت و بتوانیت لە پرۆژەکانتدا بەکاری ببەیت. کۆدی تەواوی بابەتەکە لە خوارەوە هەیە، ئەگەر دەتەوێت کۆدەکان ڕاستەوخۆ بەکار ببەیت بەبێ خوێندنەوەی هەموو بابەتەکە، کرتە لە ئێرە بکە.

لە ئەم بابەتەدا ماڵپەڕێکی Dynamic ی داڕێژراو بە PHP و پشت بەستوو بە MySQL نموونەی کارەکەمان دەبێت. هەروەها RSS Feed لە خشتەیەکی تایبەتەوە درووست دەکەین کە بابەت/ هەواڵ لە خۆ دەگرێت و گرینگە بە RSS بگاتە خوێنەرانی.
بنکەیەکی دراوەمان هەیە بە ناوی news، خشتەیەک بە ناوی items و هەروەها لە نێو خشتەکەدا چەند خانەیەکمان هەیە، id, title, description و date کە زانیاری جیاوازیان لە خۆ گرتووە سەبارەت بە هەواڵ/بابەت.

پەڕەیەکی ئاسایی PHP درووست دەکەین و لە سەرەوەدا زانیارییەکانی تایبەت بە بنکەی دراوەمان دەنووسین،

// ڕێکخستنەکانی تایبەت بە بنکەی دراوە
$hostname_rss = "localhost";
$database_rss = "news";
$username_rss = "root";
$password_rss = "password";
$rss = mysql_connect($hostname_rss, $username_rss, $password_rss) or trigger_error(mysql_error(),E_USER_ERROR); 

زانیارییەکانی سەرەوە دەستکاری بکە بە شێوەیەک کە لەگەڵ بنکەی دراوە و پێکهاتەی ئەوەی خۆت بگوونجێت. لە خوارەوەی زانیارییەکانی بنکەی دراوە هەندێک زانیاریی دیکەی وەک ناوی ماڵپەڕ، بەستەری ماڵپەڕ و هتد... دەنووسین.

// ڕێکخستنەکانی تایبەت بە ماڵپەڕ
$site_name = "ناوی ماڵپەڕ";
$site_desc = "پێناسەی ماڵپەڕ";
$site_url = "http://www.domain.com";
$site_copyright = "تێبینی سەبارەت بە پاراستنی مافی ماڵپەڕ";
$site_logo = "http://www.domain.com/images/logo.png";

لە بەشی تایبەت بە زانیارییەکانی ماڵپەڕ هەندێک زانیاری بنەڕەتی هەن کە دەکرێت لە کاتی بینینی RSS Feed دا دەربکەون، بۆ نموونە زانیاری سەبارەت بە مافی بابەت/هەواڵ، یان لۆگۆی تایبەت بە ماڵپەڕ. تکایە زانیارییەکانی سەرەوە بە پێی پێویست بگۆڕە بە شێوەیەک کە لەگەڵ ماڵپەڕی خۆت بگوونجێت.

ئێستا زانیارییەکانی بنکەی دراوە بانگهێشت دەکەین و هەروەها ژمارەی بابەتەکان دەنووسین کە دەمانەوێت دەربکەون,

//ژمارەی بابەتەکان بۆ دەرکەوتن
$item_num = 30;

// درووستکردنی بانگهێشت کردنی زانیارییەکان لە بنکەی دراوە
mysql_select_db($database_rss, $rss);
$query_items = "SELECT id, title, `description`, date FROM items ORDER BY id DESC";
$query_limit_items = sprintf("%s LIMIT %d, %d", $query_items, $startRow_items, $item_num);
$items = mysql_query($query_limit_items, $rss) or die(mysql_error());
$row_items = mysql_fetch_assoc($items);

بەشی XML ی تایبەت بە پەڕگەی RSS دەست پێدەکەین و پێناسەی دەکەین،

<? header('Content-type: text/xml'); ?>
<rss version="2.0">
<channel>
<title><?php echo $site_name; ?></title>
<description><?php echo $site_desc; ?></description>
<link><?php echo $site_url; ?></link>
<copyright><?php echo $site_copyright; ?></copyright>
<image>
<url><?php echo $site_logo; ?></url>
<title><?php echo $site_name; ?></title>
<link><?php echo $site_url; ?></link>
</image>

هەر RSS Feed ـێک لە چەند ژێر بەش پێک دێت کە لە کۆتاییدا Feed ـێک درووست دەکەن، بۆ نموونە <title> پێکهاتەیەکی سەربە RSS Feed ـێکە. لە نێو هەر یەک لە ئەو بەشانەدا زانیاری پەیوەندیدار پیشان دەدەین کە لە سەرەوە ئاماژەیان پێدراوە و ڕێک خراون.

لە هەنگاوی داهاتوودا Feed ـەکان درووست دەکەین بە پێکەوەنانی زانیارییەکانی وەک سەردێڕ، پێناسە، ڕێکەوتی بڵاوبوونەوە و هەروەها ID بابەت/هەواڵ.

<?php do { ?>
<item>
<title><?php echo $row_items['title']; ?></title>
<link><?php echo $site_url; ?>/index.php?id=<?php echo $row_items['id']; ?></link>
<guid><?php echo $site_url; ?>/index.php?id=<?php echo $row_items['id']; ?></guid>
<pubDate> <?php $row_items['date']; ?></pubDate>
</item> 
<?php } while ($row_items = mysql_fetch_assoc($items)); ?>

لە کۆتاییدا پێکهاتەی پەڕەی RSS دادەخەین،

</channel>
</rss>

ئەگەر هەموو کۆدەکانی سەرەوە کۆ بکەینەوە بۆ بەکاربردنی ڕاستەوخۆ، بەشە کۆدی خوارەوە پێک دێنن،

<?php
// ڕێکخستنەکانی تایبەت بە بنکەی دراوە
$hostname_rss = "localhost";
$database_rss = "news";
$username_rss = "root";
$password_rss = "password";
$rss = mysql_connect($hostname_rss, $username_rss, $password_rss) or trigger_error(mysql_error(),E_USER_ERROR); 


// ڕێکخستنەکانی تایبەت بە ماڵپەڕ
$site_name = "ناوی ماڵپەڕ";
$site_desc = "پێناسەی ماڵپەڕ";
$site_url = "http://www.domain.com";
$site_copyright = "تێبینی سەبارەت بە پاراستنی مافی ماڵپەڕ";
$site_logo = "http://www.domain.com/images/logo.png";

//ژمارەی بابەتەکان بۆ دەرکەوتن
$item_num = 30;

// درووستکردنی بانگهێشت کردنی زانیارییەکان لە بنکەی دراوە
mysql_select_db($database_rss, $rss);
$query_items = "SELECT id, title, `description`, date FROM items ORDER BY id DESC";
$query_limit_items = sprintf("%s LIMIT %d, %d", $query_items, $startRow_items, $item_num);
$items = mysql_query($query_limit_items, $rss) or die(mysql_error());
$row_items = mysql_fetch_assoc($items); 
?>

<? header('Content-type: text/xml'); ?>
<rss version="2.0">
<channel>
<title><?php echo $site_name; ?></title>
<description><?php echo $site_desc; ?></description>
<link><?php echo $site_url; ?></link>
<copyright><?php echo $site_copyright; ?></copyright>
<image>
<url><?php echo $site_logo; ?></url>
<title><?php echo $site_name; ?></title>
<link><?php echo $site_url; ?></link>
</image>


<?php do { ?>
<item>
<title><?php echo $row_items['title']; ?></title>
<link><?php echo $site_url; ?>/index.php?id=<?php echo $row_items['id']; ?></link>
<guid><?php echo $site_url; ?>/index.php?id=<?php echo $row_items['id']; ?></guid> 
<pubDate><?php $row_items['date']; ?></pubDate>
</item> 
<?php } while ($row_items = mysql_fetch_assoc($items)); ?> 

</channel>
</rss>

چەند تێبینییەک لەسەر کۆدەکانی سەرەوە،

  • بەستەری بابەتەکان بەپێی کۆدەکانی سەرەوە دەبێتە http://www.domain.com/index.php?id=1 لێرەدا ژمارەی بابەت Unique دەبێت بۆ هەر بابەتێک/ هەواڵێک.
  • کۆدەکانی سەرەوە بە تەواوی دەستکاری دەکرێن و دەتوانرێت لە بەشی SELECT کردنی خشتەکان دا، خشتەکان کەم یان زۆر بکرێن. بە پێی پێداویستی پرۆژەکەت دەستکاری بکە.
  • پاش تەواوبوون لە ڕێکخستنی کۆدەکان، دەتوانیت بە ناوی rss.php پاشەکەوتیان بکەیت، دواتر لە http://validator.w3.org/feed کۆدەکانت تاقی بکەیتەوە کە ئایا بە درووستی ڕێکخراون یان پێویستیان بەدەستکاری زۆرتر هەیە.