Visualizzazione dei risultati da 1 a 10 su 10

Discussione: feed rss con php

  1. #1

    feed rss con php

    Ciao a tutti,
    ho creato un sito dinamico con possibilità di pubblicare news. Il linguaggio è php e il database ovviamente è mysql. Vorrei ora creare un feed rss che legga le news da database. Ho cercato in rete dei codici, ma non funzionano.. sapete suggerirmi una soluzione o un codice semplice? Dovrei far sì che comparissero tutte le news contenute nella tabella delle news del mio database.

    grazie mille

  2. #2
    Ho trovato questo codice nelle vostre pillole e in una richiesta di aiuto sempre su questo forum a cui nessuno però ha risposto.. non riesco a farlo funzionare.. mi aiutate per favore?


    <?php

    include("feedcreator.class.php");
    header("Content-type: application/xml");
    $dbhost = "..";
    $dbname = "..";
    $dbuser = "..";
    $dbpass = "..";

    $query = mysql_connect($dbhost, $dbuser, $dbpass); //la riga 10 è questa
    $query2 = mysql_select_db($dbname,$query);

    if($query2 == FALSE) die ("Errore durante la connessione a mySQL ".mysql_error());

    $query3 = "SELECT * FROM news ORDER BY data DESC LIMIT 7";

    $risultato = mysql_query($query3, $query2);

    require_once("feedcreator.class.php");

    $rss = new UniversalFeedCreator();
    $rss->useCached();
    $rss->title = "titolo";
    $rss->description = "descrizione del feed";
    $rss->link = "http://www.miosito.com";
    $rss->feedURL = "http://miosito.com/rss/rss.php";
    $rss->cssStyleSheet = "";

    function xmlentities ( $string ){
    $ar1 = array ('&', '&quot;', '&apos', '&lt', '&gt' );
    $ar2 = array ('&', '"', "'", '<', '>');
    return str_replace ( $ar1, $ar2, $string);
    }
    while($data=mysql_fetch_array($risultato)){
    $data['titolo_news'] = xmlentities($data['titolo_news']);
    $data['testo_news'] = xmlentities($data['testo_news']);

    $item = new FeedItem();
    $item->title = $data['titolo_news'];
    $item->link = "http://www.marcopolosrl.it";
    $item->description = $data['testo_news'];
    $item->category = "news";
    $item->date = $data['giorno']." ".$data['mese']." ".$data['anno'];
    $item->author = "info@miosito.it";

    $item->descriptionHtmlSyndicated = true;
    $item->categoryHtmlSyndicated = true;
    $item->descriptionTruncSize = 500;
    $rss->addItem($item);
    }

    echo $rss->createFeed("RSS2.0", ""); ?>

  3. #3
    Originariamente inviato da Alessandro_b
    non riesco a farlo funzionare..
    Tradurre, please. Cosa, dove, quando non funziona? Che errore appare? CHe comportamento indesiderato ha? Che.... ( )


  4. #4
    non compaiono le news che sono presenti nel database! ma compare solo questo (che è l'inizio del codice)

    <rss version="2.0">
    <channel>
    <title>titolo</title>
    <description>descrizione del feed</description>
    <link>http://www.miosito.com</link>
    <lastBuildDate>Tue, 10 Apr 2012 18:12:13 +0100</lastBuildDate>
    <generator>FeedCreator 1.7.2</generator>
    </channel>
    </rss>

  5. #5
    La query probabilmente non recupera risultati.
    E' corretta? Fornisce risultati?


  6. #6
    i dati di accesso database sono corretti.. forse la query non è formulata nel modo corretto o il codice ha delle imperfezioni?

  7. #7
    allora provo con un altro codice


    <?php
    // Eseguo le operazioni di connessione al database MySQL
    $connessione = mysql_connect("localhost" , ".." , "..");
    mysql_select_db(".." , $connessione);
    $selezionedati = "SELECT * FROM news ORDER BY date DESC LIMIT 3";
    $query = mysql_query($selezionedati) or die(mysql_error());

    // Modifico l'intestazione e il tipo di documento da PHP a XML
    header("Content-type: text/xml");

    // Eseguo le operazioni di scrittura sul file
    echo ("<rss version='2.0'>");
    echo ("<channel>");
    echo ("<title>Nome del FEED </title>");
    echo("<link>http://www.miosito.com</link>");
    echo ("<description>Una descrizione del FEED e del mio sito</description>");
    echo "<copyright>Copyright 2006 Mio sito.com </copyright>
    ";
    echo "<docs>http://blogs.law.harvard.edu/tech/rss</docs>
    ";
    echo "<managingEditor>miamail@miosito.com</managingEditor>
    ";
    echo "<webMaster>miamail@miosito.com</webMaster>
    ";
    echo ("<language>IT-it</language>");



    while($array = mysql_fetch_array($query)){
    extract($array);
    $testo_news = str_replace("

    ", " ", $testo_news);
    $testo_news= str_replace("</p>", " ", $testo_news);
    $testo_news = str_replace("", " ", $testo_news);
    $testo_news = str_replace("
    ", " ", $testo_news);

    echo "<item>
    <title>$title</title>
    <link>http://www.miosito.com/leggi.php?ID=$id_news</link>
    <description>$testo_news</description>
    </item>";
    }
    echo "</channel></rss>";
    ?>

    qui funziona tutto perfettamente, legge i dati da database e li trasforma in modo corretto.. l'unico problema è il testo della news.. nel database io ho i tag

    [b] ecc e ovviamente non vanno bene nel formato xml, così non visualizza il testo della news... quindi stavo provando a fare una sostituzione dei tag con gli spazi.. ma non funziona, continua a non visualizzarmi il testo.. dove sbaglio?

  8. #8
    Il codice nel primo post differisce da quello nel secondo nella sezione dove esegui la query...nel secondo dici che funziona, quindi rivedi il primo e correggilo in modo da farlo come il primo


  9. #9
    no non differisce solo in quello perchè il primo usa questo require_once("feedcreator.class.php"); mentre il secondo no!! quindi è ben diverso! infatti anche con la query dell'altro continua a non funzionare..quindi ti risottolineo che i dati di accesso anche nel primo codice erano corretti!... invece di rispondere così, non bastava spiegarmi come fare i replace nella stringa visto che il secondo codice funziona e manca solo questo passaggio?

  10. #10
    Originariamente inviato da Alessandro_b
    no non differisce solo in quello perchè il primo usa questo require_once("feedcreator.class.php"); mentre il secondo no!! quindi è ben diverso! infatti anche con la query dell'altro continua a non funzionare..quindi ti risottolineo che i dati di accesso anche nel primo codice erano corretti!... invece di rispondere così, non bastava spiegarmi come fare i replace nella stringa visto che il secondo codice funziona e manca solo questo passaggio?
    Ma quello è il minimo, che funzioni nel modo giusto o meno (e come l'hai scritto tu il xmlentities funziona al contrario di ciò che ti aspetti) il problema è che
    Codice PHP:
    // Secondo script
    $connessione mysql_connect("localhost" ".." "..");
    mysql_select_db(".." $connessione);
    $selezionedati "SELECT * FROM news ORDER BY date DESC LIMIT 3";
    $query mysql_query($selezionedati) or die(mysql_error()); 
    è abbastanza diverso da
    Codice PHP:
    // Primo script
    $query mysql_connect($dbhost$dbuser$dbpass); //la riga 10 è questa
    $query2 mysql_select_db($dbname,$query);
    if(
    $query2 == FALSE) die ("Errore durante la connessione a mySQL ".mysql_error());
    $query3 "SELECT * FROM news ORDER BY data DESC LIMIT 7";
    $risultato mysql_query($query3$query2); 
    ove, per inciso, il primo tuo script è errato e mi stupirei se funzionasse...
    Te la trascrivo con il valore delle variabili così capisci forse meglio.
    Codice PHP:
    $risultato mysql_query("SELECT * FROM news ORDER BY data DESC LIMIT 7"true); 
    invece di rispondere così, non bastava spiegarmi come fare i replace nella stringa visto che il secondo codice funziona e manca solo questo passaggio?
    No, perchè non è (solo) quello l'errore


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.