Come creare un feed rss con il linguaggio php.
ALLWEB free
Directory Web Script Linguaggi
Italiano Inglese Tutte
 
 20 Feb 2017
aggiungi in preferiti  
Home    Mappa directory    Script




Creare un FEED RSS con il linguaggio php:

Cenno Feed RSS e XML:

Il linguaggio XML è stato creato da W3C e a differenza dell' HTML deve rispettare alcune regole ferree, regole che peraltro sono definite dallo stesso programmatore e regolamentate da pagine di controllo (dtd - Document Type Definition) anch'esse compilate dal programmatore.
In HTML se dimentichiamo un tag aperto la pagina è comunque online, in XML otterremo un errore che NON consente di visualizzare alcun risultato a video.
I fogli XML non sono altro che tag contenenti altri tag e regolamentati da una regola.

Questo breve cenno serve solo a far capire che un feed RSS deve essere compilato correttamente in ogni suo aspetto, altrimenti non potremo vedere il risultato a video.


I Feed sono notoriamente associati alle NEWS, ma niente ci impedisce di utilizzare un FEED per qualsiasi altro tipo di informazione purché legato ad un database.
Il database è fondamentale (anche se non obbligatorio) per estrarre informazioni senza dover continuamente aggiornare manualmente un FEED (cosa peraltro fattibile).

In questo script analizzeremo come con il linguaggio PHP possiamo creare un FEED RSS che estragga le ultime informazioni inserite in un database.


UTILITY di correzione feed:
Per correggere i feed appena creati potrete utilizzare uno di questi link:
http://validator.w3.org/feed/
http://feedvalidator.org/


FEED RSS e PHP:

Come abbiamo appena detto un foglio xml deve rispettare delle regole imposte dal programmatore. Per i FEED le regole sono già state stabilite, noi dobbiamo solo rispettarle.
In questa pagina (Inglese) potrete verificare le specifiche RSS 2.0.

PHP: Un feed è scritto con xml e solitamente è generato da un linguaggio dinamico.
Generare un feed con PHP è estremamente semplice, basta dichiarare con la funzione header che stiamo per creare un foglio xml, e successivamente scrivere i tag che lo compongono.

Lo script che stiamo per analizzare crea un Feed RSS 2.0


Script:

Inseriamo lo script ed analiziamolo in seguito (lo script in oggetto è molto simile a quello utilizzato nella nostra directory, ma non fatevi ingannare dalla lunghezza, creare un feed rss non è proibitivo).

<?

header("Content-type: text/xml; charset=utf-8");//dichiaro che sto per scrivere una pagina in XML con php


echo ("<rss version=\"2.0\">");//versione rss
echo ("<channel>")//inizio channel
echo ("<title> titolo feed </title>");//titolo rss
echo("<link> http://www.vostrosito.it/index.php </link>");//link rss
echo ("<description> descrizione feed </description>");//descrizione rss
echo "<copyright> Copyright 2006 proprietariocontenuti </copyright>\n";//copiright
echo "<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n";//documento di informazione sulle specifiche dell'rss in oggetto
echo "<managingEditor> email@vostrosito.it </managingEditor>\n";//email del compilatore
echo "<webMaster> email@vostrosito.it </webMaster>\n";//email del webmaster
echo ("<language>IT-it</language>");//linguaggio


$conn=@mysql_connect($host,$vostrouser,$vostrapassword);//le vostre variabili di connessione database
$domanda=mysql_db_query($base,"select * from vostratabella ORDER BY ID DESC LIMIT 50 ",$conn);//estraggo gli ultimi 50 valori inseriti nel database e li ordino per ID (ID o qualunque altro nome colonna che indichi una data di inserimento)
$numrss=mysql_num_rows($domanda);//$numrss è 50, inseriamo comunque un ciclo while di sicurezza
$numrss2=0;

while($numrss2<$numrss){
$primodato=@mysql_result($domanda,$numrss2,"primodato");//primodato, secondodato e terzodato sono un nomi a caso, adesso dovete estarrre tutti i vostri dati dal database
$secondodato=@mysql_result($domanda,$numrss2,"secondodato");
$terzodato=@mysql_result($domanda,$numrss2,"terzodato");
$quartodato=@mysql_result($domanda,$numrss2,"quartodato");
.....
echo "
<item>
<title>".$primodato."</title>";//titolo (con link vedi sotto) della prima informazione rss
echo"<link>http://www.vostrosito.it/vostrapaginanews.php?m=.....</link>";//Link titolo. Potete anche inserire URL dinamici, ma SEMPRE ASSOLUTI (HTTP://www....)
echo"<description>";//Inizio descrizione informazione
echo"<![CDATA[";//Tutto quello racchiuso fra <![CDATA[ e ]]> sarà scritto a video
echo"<font color=\"#C0C0C0\">Articolo:
".$secondodato."
</font>
<br>
<a href=\"http://www.tuosito.it/nomepagina.php?id=".$id."......\">
<img src=\"".$terzodato."\" height=\"75\" width=\"104\"><br>
</a>
]]>";//fine <![CDATA]
echo"</description>";//fine descrizione
echo"<guid>http://tuosito.it/tuagagina.php?articolo=".$primodato."</guid>"; //Inserisci un URL univoco dell'informazione
echo"<category domain=\"http://www.tuosito.it/ nomepaginacategoria.php?id=1&amp;cat=".$quartodato."\"> $quartodato</category>";//Inserisci la categoria dell'informazione
echo"</item>";//fine item
$numrss2++;//aumento $numrss2 per il ciclo while
}
echo "</channel></rss>";//fine channel e rss

?>


Per utilizzare lo script in oggetto ripulitelo dai commenti e variate url e variabili.

Semplifichiamo il tutto:

Per ridurre problemi e dubbi riguardanti lo script sopra citato cercheremo di semplificare la stesura.

Per prima cosa create un file e salvatelo con il nome pagina_rss.php


1°) DATI SEMPRE NECESSARI:
da copiare ed incollare nel file pagina_rss.php.
<?
header("Content-type: text/xml; charset=utf-8");
echo ("<rss version=\"2.0\">");
echo ("<channel>")
echo ("<title> vostro titolo </title>");
echo("<link>http://www.vostrosito.it/index.php</link>");
echo ("<description> descrizione rss </description>");
echo "<copyright> Copyright 2006 proprietario contenuti </copyright>\n";
echo "<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n";
echo "<managingEditor>email@vostrosito.it</managingEditor>\n";
echo "<webMaster>email@vostrosito.it</webMaster>\n";
echo ("<language>IT-it</language>");
Questi dati servono per creare l'impostazione iniziale del vostro feed e sono SEMPRE necessari.


2°) DATABASE:
adesso dovete aprire una connessione con il Vs. database ed estrarre i dati necessari al feed.
$conn=@mysql_connect($host,$vostrouser,$vostrapassword); $domanda=mysql_db_query($base,"select * from vostratabella ORDER BY ID DESC LIMIT 50 ",$conn);
$numrss=mysql_num_rows($domanda);
$numrss2=0;

while($numrss2<$numrss){
$primodato=@mysql_result($domanda,$numrss2,"primodato");
.....
.....
.....
$numrss2++;
}
Dovete variare le righe nella tabella inserendo le impostazioni di collegamento al Vs. database ed i dati che vorrete estrarre.


3°) INSERIRE I DATI ESTRATTI NEL FEED:
Nell'esempio sopra abbiamo inserito un ciclo while con delle righe vuote (.....).
Al posto delle righe vuote dobbiamo inserire i dati appena estratti dal database seguendo uno schema predefinito.
NON inseriremo un esempio ma soltanto lo schema da seguire.
Per verificare guardate nell'esempio iniziale.

SCHEMA Dati RSS (in php)
echo"
<item>
<title> vostro titolo </title>
<link> http://www.vostrolink... </link>
<description> vostradescrizione </description>
<guid> http://www.linkdescrizionefeed... </guid>
<category domain="http://www.linkcategoriafeed...">categoria </category>
</item>
";
Questa riga si ripetarà per ogni riperizione del ciclo while.
Lo schema in oggetto può essere implementato con altri tag, date uno sguardo alle specifiche RSS 2.0.


4°) CHIUSURA FEED:
Per chiudere il feed basta copiare le righe sottostanti alla fine del foglio pagina_rss.php (sotto la parentesi graffa del ciclo while).
echo"
</channel>
</rss>
";
?>

ERRORI:

In XML come in altri linguaggi ci sono alcune parole riservate, ed alcune regole sintattiche da rispettare.
XML non transige come l'html su tali regole e pertanto è opportuno rispettarle per eliminare gli errori a video o la mancata visualizzazione del feed.
La funzione riportata di seguito vi aiuta a ripulire il testo estratto dal database per renderlo idoneo all'XML.
function puliscirss($dato){
$dato=html_entity_decode(strip_tags($dato));
$dato=utf8_encode(ltrim(rtrim(str_replace(array(">","<","\"","\n","\r","\t","<br />","<br>","<BR>","&nbsp;","  ")," ",$dato))));
$dato=str_replace(array("&"),"e",$dato);
return $dato;
}
Inserite questa funzione all'inizio del foglio e richiamatela ogni volta che estraete un dato dal database.

La riga nell'esempio:
$secondodato=@mysql_result($domanda,$numrss2,"secondodato");

diventa:
$secondodato=puliscirss(@mysql_result($domanda,$numrss2,"secondodato"));