Udostępnianie danych w formacie kanałów RSS jest obecnie bardzo popularne, postaram się pokazać jak łatwo stworzyć taki kanał.
Listing 1.0 zawiera kod pliku moj_rss.php, generuje on konstrukcję pliku xml z danymi z bazy.
Następnie ciąg $kanałRSS zostaje zapisany do pliku moj_rss.xml.
Do pliku moj_rss.php należy ustawić crona np na 10 min, dzięki czemu plik moj_rss.xml będzie aktualizowany co 10 min.
*cron - narzędzie do cyklicznego wywoływania skryptu.
Aby ustawić crona na serwerze home.pl wystarczy nadac mu nazwe o takiej konstrukcji: cron-10min.php i umieścić go w głównym katalogu strony.
Należy też stworzyć pusty plik moj_rss.xml i nadać mu prawa dostępu 777
Wygenerowany przez nas plik XML będzie miał taką konstrukcje:
<rss version="2.0">
<channel>
<title></title>
<description></description>
<link></link>
</channel>
</rss>
Listing
<?php
function lacz_bd()
{
$db = new mysqli('localhost', 'uzytkownik', 'haslo', 'nazwa_bazy');
if (! $db)
return false;
$db->autocommit(TRUE);
return $db;
}
// tutaj podajemy dane co do danych xml
$kanalRSS= '<?xml version="1.0" encoding="ISO-8859-2"?>';
$kanalRSS .= '<rss version="2.0">';
$kanalRSS .= '<channel>';
$kanalRSS .= '<title>Mój kanał RSS</title>';
$kanalRSS .= '<description>Tutaj będe udostępniał moje informacje w postaci kanału RSS</description>';
$kanalRSS .= ' <link>http://funkcje.net</link>';
// połaczenie z bazą
$db = lacz_bd();
//zapytanie określające jakie dane ma mieć kanał RSS
// w naszym przypadku pobierzemy 5 najnowszych wpisów z tabeli news
$zapytanie = "SELECT * FROM news ORDER BY data DESC LIMIT 5";
$wynik = $db->query($zapytanie);
$ile_znalezionych = $wynik->num_rows;
for ($i=0; $i <$ile_znalezionych; $i++)
{
$wiersz = $wynik->fetch_assoc();
$wpis_id = $wiersz['id'];
//Generujemy typową konstrukcję XML z danymi z bazy danych
$kanalRSS .= '<item>';
$kanalRSS .= '<title>'.$wiersz['title'].'</title>';
$kanalRSS .= '<link>http://funkcje.net/'.$wpis_id.'/index.html</link>';
$kanalRSS .= '<description>'.$wiersz['introtext'].'</description>';
$kanalRSS .= '</item>';
}
$kanalRSS .= ' </channel>';
$kanalRSS .= '</rss>';
//Zapisujemy wygenerowany kod XML do pliku moj_rss.xml
$fp = fopen('moj_rss.xml','w');
fwrite($fp,$kanalRSS);
fclose($fp);
?>
Ranga: Administrator serwisu Punktów: 0