Problema utilizzo classe feedcreator

Ciao a tutti e buon anno ...

sto creando un sistema di distribuzione dei contenuti per un sito web tramite rss appoggiandomi and una classe : si tratta di feedcreator.

Mi sono accorto che da dei problemi con le date: in pratica io recupero i dati da un db mysql e nel recuperare la data (memorizzata in formato aaaa-mm-gg) me la restituisce in formato errato o modificata.

Qualcuno sa come risolvere questo problema?

Posto il codice:

<?php
//includiamo il file per la connsesione al db
include('../backoffice/inc/admin_alternative_dbconn.inc.php');

//includiamo la classe col nome che le abbiamo assegnato 
require_once ('../class/feedcreator/feedcreator.class.php'); 

// Estraggo i dati  e definisisco le variabili delle impostazioni generali
$query = "SELECT * FROM mod_rss_setting WHERE id_sett = 1"; 
$result = mysql_query($query);
$number = mysql_num_rows($result);
$record = mysql_fetch_array($result);
$title_rss = $record['titlenotizie_sett'];
$description_rss = $record['descriptionnotizie_sett'];
$author_rss = $record['authornotizie_sett'];
$url_rss = $record['urlsito_sett'];

// estraggo le ultime 20 notizie
$query2 = "SELECT id_notizia, UNIX_TIMESTAMP(dt_notizia) AS dt_notizia_it, titolo_notizia,
testo_notizia, testo_breve_notizia, flag_primopiano, img_notizia, flag_bozza, flag_archivia
 FROM mod_notizie WHERE flag_archivia = 'N' AND flag_bozza = 'N' ORDER BY dt_notizia_it
 DESC LIMIT 20"; 
$result2 = mysql_query($query2);
$number2 = mysql_num_rows($result2);

//Ora iniziamo a occuparci del feed vero e proprio 
//Con questa riga mandiamo al browser un header compatibile col formato XML
header("Content-type: application/xml");    

//e inizializziamo l'oggetto con parametri personalizzati (descrizione, titolo e link) 
$rss = new UniversalFeedCreator(); 
$rss->useCached(); 
$rss->title = $title_rss; 
$rss->description = $description_rss; 
$rss->link = $url_rss."/moduli/notizie_index.php"; 
$rss->feedURL = $url_rss."notizie_index.php"; 

//Questa funzione rimpiazza alcuni caratteri speciali con le relative entità XML 
//serve per evitare errori nell'output 
function xmlentities ( $string ) { 
$ar1 = array ( '&' , '&quot;', '&apos;' , '&lt;' , '&gt;' ); 
$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' 
while ($record2=mysql_fetch_array($result2)) { 
//Eseguo xhtmlentities() sui primi due campi, che potrebbero contenere entità non valide 
$record2['titolo_notizia'] = xmlentities($record2['titolo_notizia']); 
$record2['testo_breve_notizia'] = xmlentities($record2['testo_breve_notizia']); 

//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 = $record2['titolo_notizia']; 
$item->link = $url_rss."/moduli/notizie_dettaglio.php?idnotizia=".$record2['id_notizia'] ; 
$item->description = $record2['testo_breve_notizia']; 
$item->category = 'Notizie'; 

//$item->date = $data['dt_notizia_it'];    // originale
$item->date = ($record2['dt_notizia_it'] + "00000003600"); 

//Questa riga per me è invariabile 
$item->author = $author_rss; 

//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; 

//Questo lasciatelo, inserisce il nuovo item coi dati appena processati
$rss->addItem($item);
 
} 

// E infine l'output a video. 
echo $rss->createFeed("RSS2.0", ""); 

?>

Avrei bisogno semplicemente di visualizzare nel feed la data come gg/mm/aaaa hh:mm:ss, anche se l'ora non l'ho nel db vorrei che fosse sempre 00:00:00.

Ciao.

inviato 7 anni fa
ninext
modificato 7 anni fa
X 0 X

$item->date = ($record2['dt_notizia_it'] + "00000003600");

perché hai accodato la stringa "00000003600"?

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

ho trovato l'esempio così e l'ho lasciato intatto.

Poi mi garantivano il funzionamento solo con quella stringa accodata alla data.

Ho provanto anche a modificare lo script in questo modo:

La query

"SELECT id_notizia, DATE_FORMAT(dt_notizia,'%Y-%m-%dT%H:%i:%s') AS dt_notizia, titolo_notizia, testo_notizia, testo_breve_notizia, flag_primopiano, img_notizia, flag_bozza, flag_archivia FROM mod_notizie WHERE flag_archivia = 'N' AND flag_bozza = 'N' ORDER BY dt_notizia DESC LIMIT 20";

La stampa della data

$item->date = $record2['dt_notizia'];

Mi restituisce le quasi tutte le date in modo corretto, altre invece no

Esempio una notizia che ha la data nel db "2008-06-09 00:00:00", mi stampa "domenica 8 giugno 2008, 23.00.00 "

Da cosa puo' dipendere??

risposto 7 anni fa
ninext
X 0 X

Esiste una documentazione di feedcreator? La data in che formato deve essere passata?

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

Per la data il formato che ho nel db dovrebbe essere valido, basta formattarlo come si desidera.

Ho provato anche le soluzioni postate su questo forum, ma non riesco a risolvere:

http://forum.html.it/forum/printthread.php?threadid=865065&perpage=500

Avete qualcosa di alternativo per aggirare il problema?

risposto 7 anni fa
ninext
X 0 X
Per la data il formato che ho nel db dovrebbe essere valido, basta formattarlo come si desidera.

Si ma qual'è la formattazione richiesta da feedcreator? Viene dichiarata nella documentazione?

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

non viene dichiarato niente a proposito del formato della data.

Dovrebbe gestirla in automatico.

risposto 7 anni fa
ninext
X 0 X

Non devi passare la data nel formato restituita dal DB ma devi trasformarla in timestamp mediante la funzione in php  mktime. trovi un sacco di guide su come utilizzarla

risposto 5 anni fa
MarcoWeb
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda