Feed generator

Se a qualcuno interessa ho creato un mini feed generator per RSS 2.0 che estrae i dati da una determinata tabella nel  database

<?php

     header("X-Powered-By: Revoke feed generator", FALSE);

      # set the XML file format to this page

     header("Content-type: text/xml");

      #load database connection file

     require_once('config/cfg.php');

     

     $tabella = 'news';

        #start generating the feed

     echo '<?xml version="1.0"?>'."\n";

     echo '<rss version="2.0">'."\n";

       echo '<channel>'."\n"."\n";

         #modify

      echo '<title>Revoke soft news</title>'."\n";

         #modify

      echo '<link>http://www.revokesoft.altervista.org</link>'."\n";

         #modify

      echo '<description>Revoke software services</description>'."\n";

      echo '<language>it</language>'."\n";

     

        #populate the feed with records

     $query  = "SELECT * FROM `".$tabella."`"; 

     $select = mysql_query($query);

     while($news = mysql_fetch_array($select))

     {     

     echo '<item>'."\n";

     echo '<title>',$news['news_title'],'</title>'."\n";

     echo '<link>http://www.revokesoft.altervista.org/news.php?id='.$news['news_id'].'</link>'."\n";

     echo '<description>'.$news['news_preview'].'</description>';

     echo '<author>'.$news['news_email'].'</author>'."\n";

     echo '</item>'."\n";

     }

        #close the feed tags

     echo '</channel>'."\n";

     echo '</rss>'."\n";

     

?>

visto che l'utilizzo dei feed sta crescendo parecchio ho deciso di fare questo script semplicissimo per crearli.

ci sono alcuni pezzetti da modifica molto semplici

nei primi righi

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

modificato è stato reso + personalizzabile :

<?php

      header("X-Powered-By: Revoke feed generator", FALSE);

        # set the XML file format to this page

      header("Content-type: text/xml");

        #load database connection file

      require_once('../config/cfg.php');

      

      $tabella = 'news';

      $title   = 'Prova feed generator';

      $link    = 'http://www.sito.com/';

      $desc    = 'Generatore di feed RSS tramite database';

      $order   = 'news_id';

          #start generating the feed

      echo '<?xml version="1.0"?>'."\n";

      echo '<rss version="2.0">'."\n";

      echo '<channel>'."\n"."\n";

           #modify

      echo '<title>'.$title.'</title>'."\n";

           #modify

      echo '<link>'.$link.'</link>'."\n";

           #modify

      echo '<description>'.$desc.'</description>'."\n";

      echo '<language>it</language>'."\n";

      echo '<generator>Revoke feed generator</generator>;'

      

          #populate the feed with records

      $query  = "SELECT * FROM `".$tabella."` ORDER BY `".$order."` DESC"; 

      $select = mysql_query($query);

      while($news = mysql_fetch_array($select))

      {      

      $title = $news['news_title'];

      $desc  = $news['news_preview'];

      $mail  = $news['news_email'];

      $id    = $news['news_id']; 

      $sito  = 'http://www.sito.com/news.php?id='; 

      

      echo '<item>'."\n";

      echo '<title>',$title,'</title>'."\n";

      echo '<link>'$sito..$id.'</link>'."\n";

      echo '<description>'.$desc.'</description>';

      echo '<author>'.$mail.'</author>'."\n";

      echo '</item>'."\n";

      }

          #close the feed tags

      echo '</channel>'."\n";

      echo '</rss>'."\n";

      

?>

scusate il doppio post ma non potevo modificare il vecchio

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Perché non posti anche lo schema della tabella del DB?

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

un paio di errori di sintassi:

echo '<generator>Revoke feed generator</generator>;'
echo '<title>',$title,'</title>'."\n";
echo '<link>'$sito..$id.'</link>'."\n";

in

echo '<generator>Revoke feed generator</generator>';
echo '<title>'.$title.'</title>'."\n";
echo '<link>'.$sito.$id.'</link>'."\n";

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

s iho modificato il post nel forum allora non ho visto gli errori,poi scrivo velocemente e non guardo,sbagliare è facile ora posto tutto corretto

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
<?php

     header("X-Powered-By: Revoke feed generator", FALSE);

      # set the XML file format to this page

     header("Content-type: text/xml");

      

      $db_user   = "  * db username * ";

      $db_pass   = "* db password *";

      $db_name  = "* db name *";

      $db_host   = "localhost";

      

    $conn = mysql_connect("$db_host","$db_user","$db_pass") or die ('error during the database connection');    

    $db = mysql_select_db("$db_name", $conn) or die('error during the database connection');

     

     $tabella = 'news';

     $title   = 'Prova feed generator';

     $link   = 'http://www.sito.com/';

     $desc    = 'Generatore di feed RSS tramite database';

     $order   = 'news_id';

        #start generating the feed

     echo '<?xml version="1.0"?>'."\n";

     echo '<rss version="2.0">'."\n";

      echo '<channel>'."\n"."\n";

         #modify

      echo '<title>'.$title.'</title>'."\n";

         #modify

      echo '<link>'.$link.'</link>'."\n";

         #modify

      echo '<description>'.$desc.'</description>'."\n";

      echo '<language>it</language>'."\n";

      echo '<generator>Revoke feed generator</generator>;'

     

        #populate the feed with records

     $query  = "SELECT * FROM `".$tabella."` ORDER BY `".$order."` DESC"; 

     $select = mysql_query($query);

     while($news = mysql_fetch_array($select))

     {     

     $title = $news['news_title'];

     $desc  = $news['news_preview'];

     $mail  = $news['news_email'];

     $id    = $news['news_id']; 

     $sito  = 'http://www.sito.com/news.php?id='; 

     

     echo '<item>'."\n";

     echo '<title>'.$title.'</title>'."\n";

     echo '<link>'.$sito.$id.'</link>'."\n";

     echo '<description>'.$desc.'</description>';

     echo '<author>'.$mail.'</author>'."\n";

     echo '</item>'."\n";

     }

        #close the feed tags

     echo '</channel>'."\n";

     echo '</rss>'."\n";

     

?>

Schema SQL della tabella

CREATE TABLE `news` (

  `news_id` int(11) NOT NULL auto_increment,

  `news_date` varchar(25) NOT NULL default '',

  `news_title` varchar(255) NOT NULL default '',

  `news_author` varchar(255) NOT NULL default '',

  `news_email` varchar(255) NOT NULL default '',

  `news_preview` text NOT NULL,

  `news_body` text NOT NULL,

  `news_category` varchar(255) NOT NULL default '',

  PRIMARY KEY  (`news_id`)

) ENGINE=MyISAM AUTO_INCREMENT=1 ;

corretto e con lo schema della tabella

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
s iho modificato il post nel forum allora non ho visto gli errori,poi scrivo velocemente e non guardo,sbagliare è facile ora posto tutto corretto

Sì, non era certo una critica la mia, era solo una segnalazione  O0

ciao  :bye:

risposto 10 anni fa
Lore
Lore
1
X 0 X

Gianni mi rivolgo a te per risolvere un piccolo bug:

quando nel db metto : &egrave; o il codice dei caratteri è ò à ' " >< mi dà errore nel file XML solo che se non uso il carattere speciale al posto delle lettere vedo ? ... ho usato htmlspecialchars così $test = htmlspecialchars($news['news_preview']); ma non sostituisce nulla (nel db le lettere sono normali non c'è il codice, sono così èòà < '> ")

puoi aiutarmi?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Non ho capito se il problema dei caratteri speciali è nel file XML o nel database  :P

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

nel file xml non posso mettere il codice dei caratteri speciali non so come mai :( e non so come trasformare i caratteri speciali da è ò à ecc al loro corrispettivo codice

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Esatto, prima di inserire il testo nell'XML devi usare htmlentities() che converte tutti i caratteri speciali presenti.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ok ora il file xml mi mostra i caratteri encodati (&egrave;) senza darmi errori , ho dovuto inserire il codice del carattere nel database  poi mostrarlo facendolo 'passare' da htmlentities prima di printarlo

cmq come posso effettuare prima di inserire tutto nel database la trasformazione da è a &egrave; con php?

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

ok ora il file xml mi mostra i caratteri encodati (&egrave;) senza darmi errori , ho dovuto inserire il codice del carattere nel database  poi mostrarlo facendolo 'passare' da htmlentities prima di printarlo

cmq come posso effettuare prima di inserire tutto nel database la trasformazione da è a &egrave; con php?

devi semplicemente usare la funzione htmlentities() sui dati prima di effettuare la query.

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili