# زبان های اسکریپتی > PHP >  سوال در مورد rss

## mostafa612003

سلام
دیگه از بس در مورد نحوه اعمال Rss تو سایت گشتم خسته شدم حالا دست به دامن شما دوستان شدم
سوال:
میخوام تو سایتم قابلیتی رو ایجاد کنم که از rss استفاده بشه و مطالب روز اون با استفاده از نرم افزار rssreader خونده بشه
به عبارتی
قبلیت rss رو تو سایتم بزارم اما نمیدونم چی کار کنم دوستان لطف کنید منو راهنمایی کنید
مرسی............

----------


## Unique

ببینین rss و atom feed ها یک ساختار xml استاندارد دارند ،‌شما کافیه اطلاعاتتون را بر اساس این ساختار خروجی بگیرین.
اگه میخواین مثل اب خوردن rss ایجاد کنید با استفاده از این کلاس میتونید یک ساختار آرایه ای را به rss تبدیل کنید.

برای اینکه ساختار و Option های مربوط به rss را ببینید اینجا را مطالعه کنید.
برای یک نمونه php هم این مثال خیلی خوبیه.

----------


## mostafa612003

خیلی متشکرم
وقتی فایل php را مانند مثال نوشتم با همان پسوند php ذخیره کنم یا xml

واینکه این فایل را کجا بزارم ؟

ممنون

----------


## pary_daryayi

من از این سایت یاد گرفتم  و انجام دادم .

----------


## Unique

> وقتی فایل php را مانند مثال نوشتم با همان پسوند php ذخیره کنم یا xml


rss خوان ها به header ی توسط تولید کنند xml که همون فایل php باشه توجه میکنند و اگه ساختار xml درست باشه نشون میدهند !

ببین اول مثالش کاملش زده :
    header("Content-Type: application/rss+xml; charset=ISO-8859-1");

فقط شما چون فارسیه باید بزنی :
    header("Content-Type: application/rss+xml; charset=UTF-8");

وقتی هم کل مطلب را میریزه توی متغیر مربوطه میاد echo میکنه ! پس در جواب شما همون فایل php مناسبه ! البته با htaccess. میشه کاری کرد که پسوندهای rss هم مانند php شناخته بشوند ! و یا کلا فایل را درقالب rss به صورت روزانه یا هفتگی ذخیره کنید و یا cache کنید و از همون header استفاده کنید ! ماشاا... راه براش تا دلت بخواد هست.

----------


## ravand

با کمک مروگر اکسپلورر ، فایرفاکس ، اپرا و سفری هم میشه خوراک خوان سایتی رو خوند. این یه برنامه ی ساده برای ساخت  خوراک خوان یا همون rss feeds
<?php
    $link = mysql_connect('localhost','root','');
    if(!$link) {
        die('Failed to connect to server: ' . mysql_error());
    }
 
    $db = mysql_select_db(search);
    if(!$db) {
        die("Unable to select database");
    }
?>
<?php
   $output = '<?xml version="1.0" encoding="utf-8"?>';
    $output .= '<rss version="2.0">';
    $output .= '<channel>';
    $output .= '<title>تگ قالب</title>';
    $output .= '<link>http://localhost/ravand/link.php</link>';
    $output .= '<description>This is an example RSS feed</description>';
    $output .= '<language>fa</language>';
    $output .= '<copyright>Copyright (C) 2009 mywebsite.com</copyright>';
   ?>
  <?php 
  mysql_query('SET NAMES \'utf8\''); 
  $qa=mysql_query("select * from  jadval order by id DESC limit 15");
while ($qb=mysql_fetch_array($qa)){
extract($qb);
	    $output .= '<item>'; 
        $output .= '<title>'.$subject.'</title>';
        $output .= '<description>' . $body . '</description>';
        $output.= '<link>'.'id.php?id='.$id .'</link>';
       $output .= '</item>';
  }
  $output .= '</channel>';
    $output .= '</rss>';
  echo $output;
  ?>

----------


## mostafa612003

خیلی متشکرم
تونستم فایل php مورد نظرم را به صورت بالا تغییربدم
حالا برای اینکه برنامه های rss خوان صفحه من را بخوانند، باید چه کنم؟

خیلی متشکرم

----------


## ravand

همه چی واضحه . مشکل شما چیه بگید تا توضیح بدم.
شما جدول و دیتابیس و فیلد ها رو به برنامه بدید.
مثلا در کد زیر نام فیلد عنوان هر مطلب مشخص شده:
$output .= '<title>'.$subject.'</title>';
نام فیلد عنوان شما مثلا subject است.

----------


## mostafa612003

خیلی متشکرم
تونستم برنامه را درست کنم
ولی یک مشکلی هست
این سورس برنامه است:



     <table class="top_news">



<?php



    $output = '<?xml version=1.0 content="text/html; charset=utf-8"?>';
    $output .= '<rss version="2.0">';
    $output .= '<channel>';
    $output .= '<title>تگ قالب</title>';

    include("../db.php");
    $myDb = new db();
    $myDb->connect('io');


  $sql ="Select * From hoomad_mohtava   where part=1 ";
  //echo $sql;
  $objrs =  $myDb->query($sql);
  $numRec = $myDb -> printrec($objrs);
  $end = count($numRec);

  $Result = $myDb->query("Select * From hoomad_mohtava WHERE part=1  ORDER BY id DESC");
  $numRec = $myDb -> printrec($Result);
  $end = count($numRec);
  if ($end > 0)
  {
    for ($counter=0; $counter < 9; $counter++)
    {
		$id=$numRec[$counter]['id'];
		$onvan=$numRec[$counter]['onvan'];
        $output .= '<item>';
        $output .= '<title>اخبار</title>';
        $output .= ' <tr><td><img src=images/icon/arrow.gif  /> <a href=?pg=internal2&cn=mohtava/detail&m='.$id.'>';
        $output .= '<description>' . $onvan . '</description>';
       // $output.= '<link>id.php?id='.$id .'</link>';
        $output .= '</td></tr></item><br />';		

   } /* for */

    $output .= '</channel>';
    $output .= '</rss></table>';
    echo $output;


  } /*if ($end > 0)*/
    ?>

خروجیش را ببینید
http://hoomad.teo.ir/mohtava/page_rss.php

نمی دونم برای header چی بنویسم که اینطوری اطلاعات را نمایش نده

درضمن وقتی آدرس سایتم را در اینجا وارد می کنم 
http://feedvalidator.org/check.cgi?u...8.ir%2Frss.xml
پیغام میده که برنامه ات درست نیست

----------


## 2undercover

همونطور که کاربر Unique گفت باید این header رو در اول صفحه ارسال کنید:

header("Content-Type: application/rss+xml; charset=UTF-8");

----------


## ravand

> درضمن وقتی آدرس سایتم را در اینجا وارد می کنم 
> http://feedvalidator.org/check.cgi?u...8.ir%2Frss.xml


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

----------


## mostafa612003

سلام
این خط را کجای صفحم بزارم؟

header("Content-Type: application/rss+xml; charset=UTF-8");

----------


## 2undercover

قبل از جایی که دارید کد های رو تو صفحه نمایش می دید یعنی قبل echo!

البته دقت کنید ابتدای صفحه ob_start رو فرا خوانی کنید و انتهای صفحه هم ob_end_flush رو!

----------


## mostafa612003

با سلام
اگه میشه یک برنامه به من نشون بدید که این header و اون دوتابعی را که گفتید را داشته باشه

خیلی متشکرم

----------


## 2undercover

این همون کدیه که دوستمون کاربر ravand نوشتن +‌ هدر و اون توابع (که اونم کاربر Unique گفتن! با تشکر!):

<?php ob_start();
    header("Content-Type: application/rss+xml; charset=UTF-8");
    $link = mysql_connect('localhost','root','');
    if(!$link) {
        die('Failed to connect to server: ' . mysql_error());
    }
  
    $db = mysql_select_db(search);
    if(!$db) {
        die("Unable to select database");
    }
?>
<?php
   $output = '<?xml version="1.0" encoding="utf-8"?>';
    $output .= '<rss version="2.0">';
    $output .= '<channel>';
    $output .= '<title>تگ قالب</title>';
    $output .= '<link>http://localhost/ravand/link.php</link>';
    $output .= '<description>This is an example RSS feed</description>';
    $output .= '<language>fa</language>';
    $output .= '<copyright>Copyright (C) 2009 mywebsite.com</copyright>';
   ?>
  <?php 
  mysql_query('SET NAMES \'utf8\''); 
  $qa=mysql_query("select * from  jadval order by id DESC limit 15");
while ($qb=mysql_fetch_array($qa)){
extract($qb);
        $output .= '<item>'; 
        $output .= '<title>'.$subject.'</title>';
        $output .= '<description>' . $body . '</description>';
        $output.= '<link>'.'id.php?id='.$id .'</link>';
       $output .= '</item>';
  }
  $output .= '</channel>';
    $output .= '</rss>';
  echo $output;
  ob_end_flush();
  ?>

----------


## ravand

البته وقتی header اول برنامه ی ما باشه دیگه نیازی به این کد ها نیست. چون میشه با انتخاب گزینه ی Encode in UTF-8 without BOM مشکل رو حل کرد. اون دستورات مال مواقعی هست که دستور header و سشن ما بعد از مثلا کدهای html و php باشه.

----------


## mostafa612003

خیلی متشکرم
برنامه را به این صورت تغییر دادم:




> <table >
> 
>  <?php ob_start();
>     header("Content-Type: application/rss+xml; charset=utf-8");
> 
> 
>     $output = '<?xml version="1.0" encoding="utf-8"?>';
>     $output .= '<rss version="2.0">';
>     $output .= '<channel>';
> ...


ولی شما خروجی را ببینید
http://hoomad.teo.ir/mohtava/page_rss.php
دلیلش هم اینه که در بانک mysql اطلاعات فارسی به همین صورت ذخیره میشه
ولی من درصفحات دیگه چون از این هدر استفاده می کنم مشکلی ندارم
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

ولی در اینجا چون قضیه فرق می کنه اطلاعات را درست نمایش نمیده

حالا تکلیف چیه؟
خیلی ممنون

----------


## ravand

https://barnamenevis.org/showthread.p...=1#post1690765

قسمت تبدیل دیتابیس غیر Unicode به Unicode بصورت خودکار رو بخون.

----------


## mostafa612003

من صفحه ام را که قابلیت rss داشته باشه را درست کردم
حالا میشه بگویید که چطوری از آن استفاده کنم؟

----------

