Tag Archive for 'mysql_fetch_array'

Integrare un feed RSS ad un sito php

Le premesse teoriche sono:

  • hai un sito con una sezione che viene aggiornata più o meno regolarmente, ad esempio vengono postate delle notizie, o vengono inseriti dei prodotti
  • vuoi creare un sistema di feed così che gli utenti possano essere a conoscenza degli aggiornamenti senza necessariamente doversi ricordare di visitare il sito
  • decidi di creare il Feed RSS per le notizie

Le premesse tecniche sono:

  • hai un sito sviluppato con php e mysql
  • il database mysql utilizzato si chiama "basedati"
  • la tabella interessata si chiama "news"...
  • ... e contiene i campi "id, titolo, articolo, data_pubblicazione"

Ecco l'esempio, ampiamente perfezionabile, di come creare un Feed.
Crei un unico file e lo chiami ad esempio rss.php, dentro metti:
- una prima funzione che serve per ripulire il testo da eventuali caratteri poco graditi al linguaggio XML... il linguaggio del Feed RSS appunto. Questo riportato è un esempio, è possibile fare meglio ovviamente.

PHP:
  1. function rss_cleaner($text){
  2. $text=utf8_encode(rtrim(ltrim(str_replace(array("’",">","<","\"","\n","\r","\t","<br />","<br>","<BR>","&nbsp;","  ")," ",$text))));
  3. $text=str_replace(array("&"),"e",$text);
  4. return $text;
  5. }

- l'intestazione del Feed

PHP:
  1. header("Content-type: text/xml; charset=utf-8");
  2. echo "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n";
  3. echo "<channel>\n";
  4. echo "<title>Il titolo del mio sito</title>\n";
  5. echo "<link>http://www.ilmiosito.com</link>\n";
  6. echo "<description>Una breve descrizione del sito o del feed</description>\n";
  7. echo "<copyright> Copyright 2009 ilmiosito.com </copyright>\n";
  8. echo "<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n";
  9. echo "<managingEditor>managingmail@ilmiosito.com (stefo)</managingEditor>\n";
  10. echo "<webMaster>wmmail@ilmiosito.com (stefo)</webMaster>\n";
  11. echo "<language>IT-it</language>\n";

- ed infine la lettura degli articoli e la stampa sul file

PHP:
  1. $db_host="miohostmysql"; // l'host mysql al quale mi connetto
  2. $db_user="miousermysql"; // il mio utente mysql
  3. $db_pass="miapassmysql"; // la mia password mysql
  4.  
  5. // ora mi connetto e seleziono il database
  6. $connection=mysql_connect($db_host,$db_user,$db_pass);
  7. mysql_select_db($db_db,$connection);
  8.  
  9. // seleziono le ultime 10 notizie pubblicate e le stampo in formato XML con un ciclo while
  10. $query="select * from news ORDER BY ID DESC LIMIT 10";
  11. $result = mysql_query($query);
  12. while($print = mysql_fetch_array($result)) {
  13.  
  14. $titolo=rss_cleaner($print['titolo']);
  15. $articolo=rss_cleaner($print['articolo']);
  16. $id=rss_cleaner($print['ID']);
  17. $data_pubblicazione=$print['data_pubblicazione'];
  18. $data_pubblicazione = strtotime ($data_pubblicazione); // trasformo la data in Unix timestamp
  19. $data_pubblicazione=date(r,$data_pubblicazione); // formatto la data secondo la RFC 822 gradita da XML
  20.  
  21. // parte la stampa
  22. <item>
  23. <title>$titolo</title>
  24. <link>http://www.ilmiosito.com/articolo.php?ID=$id</link>
  25. <guid isPermaLink=\"false\">http://www.ilmiosito.com/articolo.php?ID=$id</guid>
  26. <pubDate>$data_pubblicazione</pubDate>
  27. <description>$articolo</description>
  28. </item>
  29. ";
  30.  
  31. }
  32. </channel>
  33. </rss>
  34. ";

Il Feed a questo punto è pronto, ultimi accorgimenti sono:
- indicare l'esistenza del Feed nelle intestazioni di pagina, prima della chiusura del tag head

PHP:
  1. <link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://www.ilmiosito.com/rss.php" />
  2. </head>

e controllare la validità del Feed stesso: http://feedvalidator.org/