Come faccio ad estrarli casualmente dal database e non in ordine di data come fatto qui?
$query2 = "SELECT * FROM tabella ORDER BY data";
Codice PHP:
<?php
header("Content-type: application/xml");
//Con questa riga mandiamo al browser un header compatibile col formato XML
//Il blocco seguente fa la connessione al database...
$dbhost = "localhost";
$dbname = "mysql";
$dbuser = "root";
$dbpass = "";
$query=mysql_connect($dbhost, $dbuser, $dbpass);
if ($query==FALSE)
die("Errore durante la connessione a MYSQL ".mysql_error());
mysql_select_db($dbname ,$query);
//E quest'altro seleziona le ultime 7 notizie
$query2 = "SELECT * FROM tabella ORDER BY data DESC LIMIT 7";
$risultato=mysql_query($query2,$query);
//Ora iniziamo a occuparci del feed vero e proprio
<php>
require_once("feedcreator.class.php");
//includiamo la classe col nome che le abbiamo assegnato
//e inizializziamo l'oggetto con parametri personalizzati (descrizione, titolo e link)
$rss = new UniversalFeedCreator();
$rss->useCached();
$rss->title = "GuardaQua.it";
$rss->description = "Feed del blog di Maurizio";
$rss->link = "http://www.guardaqua.it"; //Questo non viene reso nel feed, sarà un bug
$rss->feedURL = "http://www.guardaqua.it/rss/rss.php";
//Questa funzione rimpiazza alcuni caratteri speciali con le relative entità XML
//serve per evitare errori nell'output
function xmlentities ( $string ) {
$ar1 = array ( '&' , '"', ''' , '<' , '>' );
$ar2 = array ( '&', '"', "’", '<', '>' ) ;
return str_replace ( $ar1 , $ar2, $string );
}
//Questo ciclo che estrae le notizie dal DB e le inserisce come nuovo ITEM nel feed
//I campi da cui estraggo le notizie si chiamano 'subject', 'content', 'cat', e 'pubdate'
//ma nel vostro caso i nomi potrebbero essere differenti, e alcuni campi assenti
//(come Author nel mio caso)
while ($data=mysql_fetch_array($risultato)) {
//Eseguo xhtmlentities() sui primi due campi, che potrebbero contenere entità non valide
$data['subject'] = xmlentities($data['subject']);
$data['content'] = xmlentities($data['content']);
//E ora comincio a inserire le informazioni di ogni item.
$item = new FeedItem();
//notate come a volte prendo i dati così come sono dal db, altre li costruisco al volo
$item->title = $data['subject'];
$item->link = "http://www.guardaqua.it/index.php?a=".$data['id'] ;
$item->description = $data['content'];
$item->category = $data['cat'];
//La mia PUBDATE è in formato UNIX TIMESTAMP, ma la classe la converte in formato leggibile
$item->date = $data['date'];
//Questa riga per me è invariabile
$item->author = "info@guardaqua.it (Maurizio)";
//Definiamo le opzioni dell'item: questo contiene tag HTML...
$item->descriptionHtmlSyndicated = true;
//avremmo impostato FALSE per togliere i tag HTML
//...e contiene anche l'elemento <category>
$item->categoryHtmlSyndicated = true;
//decommentando la riga seguente, troncheremmo Description (anche con tag) dopo 500 caratteri
//item->descriptionTruncSize = 500;
$rss->addItem($item); //Questo lasciatelo, inserisce il nuovo item coi dati appena processati
}
//E infine l'output a video.
echo $rss->createFeed("RSS2.0", "");
//Ovviamente abbiamo anche la possibilità di salvare il file su disco, o di scegliere altri formati
//Vi rimando ai commenti presenti nella classe per gli esempi del caso.
?>