Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    8

    [simple XML] estrarre solo ALCUNI dati dall'array

    Ciao a tutti
    la mia conoscenza di php è limitata all'uso di piccoli script per "condire" le pagine che creo.
    il problema "concreto" da cui parto è questo: ho le news in xml, voglio che nella home compaiano solo le prime 2 voci mentre nella pagina "news" risultino tutte.
    Avevo trovato come farlo in un modo piuttosto macchinoso, poi ho scoperto simpleXML e per comodità ho iniziato ad usarlo. Il problema però è che così
    Codice PHP:
    include("nomefile");
    $news = new SimpleXMLElement($xmlstr);
    [
    B]foreach[/B] ($news->item as $item) { 
     ....

    mi compaiono TUTTE le voci delle news.
    Ho cercato una soluzione nel manuale di php e simpleXML, ho provato a cercare soluzioni alternative o altri post che trattassero lo stesso tema ma non ho trovato nulla... o meglio, visto che il mio livello è molto basso, forse non riuscivo a capire come fare!
    Grazie per l'aiuto!

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao.

    Potresti utilizzare un semplice ciclo for anziché foreach.

    ad esempio:
    Codice PHP:
    $news = new SimpleXMLElement($xmlstr); 
    for ( 
    $i 0$i <= 1$i++)
    {
      
    $item=$news["item"][$i]

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    8
    Grazie!
    ho provato a cambiare il codice come dici, c'avevo provato in passato senza però questa parte
    Codice PHP:
    $item=$news["item"][$i
    però non funziona. il risultato è proprio pagina bianca... :master:

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Sì hai ragione..
    Di php ne capisco poco anche io..

    Prova con una sintassi del genere:
    Codice PHP:
    $news = new SimpleXMLElement($xmlstr);
    for ( 
    $i 0$i <= 1$i++)
    {
      
    $item=$news->item[$i];
      echo 
    $item;

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    8
    Originariamente inviato da KillerWorm
    Sì hai ragione..
    Di php ne capisco poco anche io..

    Prova con una sintassi del genere:
    Codice PHP:
    $news = new SimpleXMLElement($xmlstr);
    for ( 
    $i 0$i <= 1$i++)
    {
      
    $item=$news->item[$i];
      echo 
    $item;

    Il resto della pagina compare, ma non le news...
    mmmm....

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Non saprei..
    Lo script dovrebbe essere corretto a livello di sintassi, ovviamente devi assicurarti che sia coerente con la struttura del tuo xml.

    La variabile $item, durante il ciclo for, assumerà il valore testuale dei primi due nodi item.

    Un'ulteriore cosa.. l'estensione SimpleXML richiede PHP 5.
    Accertati quindi di avere i requisiti necessari.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    8
    Originariamente inviato da KillerWorm
    Non saprei..
    Lo script dovrebbe essere corretto a livello di sintassi, ovviamente devi assicurarti che sia coerente con la struttura del tuo xml.

    Un'ulteriore cosa.. l'estensione SimpleXML richiede PHP 5.
    Accertati quindi di avere i requisiti necessari.
    Grazie per le risposte!
    escludo errori o problemi nell'xml o mancanza dei requisiti, visto che richiamandolo con foreach funziona! :master:

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ok.. ho fatto una prova e a me funziona correttamente, per cui non capisco quale sia il tuo problema.

    Ecco l'esempio pratico sia utilizzando foreach (con cui ciclo tutti i nodi), sia utilizzando for (con cui ciclo solo i primi due nodi):
    Codice PHP:
    <?php
    // stringa xml
    $xmlstr="<root>";
    $xmlstr.="<item>nodo 1</item>";
    $xmlstr.="<item>nodo 2</item>";
    $xmlstr.="<item>nodo 3</item>";
    $xmlstr.="<item>nodo 4</item>";
    $xmlstr.="<item>nodo 5</item>";
    $xmlstr.="</root>";
    //
    $news = new SimpleXMLElement($xmlstr);
    //
    // stampa la lista di tutti i nodi item
    echo "tutti i nodi item

    "
    ;
    foreach (
    $news->item as $item) {
     echo 
    $item."
    "
    ;
    }
    // stampa solo i primi due nodi item
    echo "
    i primi due nodi item

    "
    ;
    for ( 
    $i 0$i <= 1$i++){
      
    $item=$news->item[$i];
      echo 
    $item."
    "
    ;
    }
    ?>
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    8
    Funziona!!!!
    grazie 1000000, non capisco perchè prima non funzionasse!
    Grazie ancora!

  10. #10
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    No problem!
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.