Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. controllare ciclo foreach di simplexml
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • P
      pettedemon User Attivo • ultima modifica di

      controllare ciclo foreach di simplexml

      Ciao a tutti, devo parsare un xml, lo faccio con simplexml e nessun problema, dovrei visualizzare solo le prime 5 ... come posso fare a mettere una condizione ?
      [PHP]

      $feed_newsic ="http://xxx.it/ciao.xml";

      $xml = simplexml_load_file($feed_newsic);

      $total_news = count($xml->channel->item);

      foreach($xml->channel->item as $item){

      $titolo_newsic = $item->title;
      $pre_newsic = $item->description;
      

      echo '<span class="titolo_newsic">'.$titolo_newsic.'</span><br>'.substr($pre_newsic,0,120).'<br>leggi tutto >';

      }
      [/PHP]

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • Z
        ziobudda Super User • ultima modifica di

        Usare un for ?

        M.

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • T
          thedarkita ModSenior • ultima modifica di

          Prova cosi:
          [php]

          $feed_newsic ="http://xxx.it/ciao.xml";

          $xml = simplexml_load_file($feed_newsic);

          $total_news = count($xml->channel->item);
          $i=0;
          while ($i < 5 && list(, $item) = each($xml->channel->item)) {

          $titolo_newsic = $item->title;
          $pre_newsic = $item->description;
          

          echo '<span class="titolo_newsic">'.$titolo_newsic.'</span><br>'.substr($pre_newsic,0,120).'<br>leggi tutto >';
          $i++;
          }
          [/php]

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • Z
            ziobudda Super User • ultima modifica di

            Scusate, nulla da dire sull'uso del while, ma il FOR esiste proprio per fare queste cose. Usiamo gli strumenti giusti.

            M.

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • T
              thedarkita ModSenior • ultima modifica di

              Se hai solo 3 elementi utilizzando il ciclo for cicli comunque 5 elementi, per cui mi sembra meglio un foreach, in questo caso usando la via alternativa del foreach per prendere al massimo 5 elementi.

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • Z
                ziobudda Super User • ultima modifica di

                @Thedarkita said:

                Se hai solo 3 elementi utilizzando il ciclo for cicli comunque 5 elementi, per cui mi sembra meglio un foreach, in questo caso usando la via alternativa del foreach per prendere al massimo 5 elementi.

                Ciao, quello che dici tu è corretto se non sapessi quanti elementi ho, ma dal primo post si legge "dovrei visualizzare solo le prime 5" , quindi vuole dire che almeno 5 elementi li hai. Poi se "dovrei visualizzare solo le prime 5" vuole dire "dovrei visualizzare solo le prime 5 o meno nel caso non ne esistano 5" allora è tutta un'altra cosa e basta un if con un break dentro al foreach.

                M.

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • P
                  pettedemon User Attivo • ultima modifica di

                  Vi ringrazio per le risposte, ho provato con il codice contenente il ciclo while ma non vengono estratti i dati... praticamente me ne stampa 5 ma vuote...

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • P
                    pettedemon User Attivo • ultima modifica di

                    @ziobudda said:

                    Ciao, quello che dici tu è corretto se non sapessi quanti elementi ho, ma dal primo post si legge "dovrei visualizzare solo le prime 5" , quindi vuole dire che almeno 5 elementi li hai. Poi se "dovrei visualizzare solo le prime 5" vuole dire "dovrei visualizzare solo le prime 5 o meno nel caso non ne esistano 5" allora è tutta un'altra cosa e basta un if con un break dentro al foreach.

                    M.

                    Io ne ho più di 5, il massimo sarebbe visualizzarne 5 random tra quelle inviate, ma mi basterebbe contarne solo 5 ....

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • Z
                      ziobudda Super User • ultima modifica di

                      allora usa un for.

                      M.

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • P
                        pettedemon User Attivo • ultima modifica di

                        @ziobudda said:

                        allora usa un for.

                        M.
                        Ciao, scusa ma puoi darmi un aiuto in più ? altrimenti non l'avrei chiesto.. ad ogni modo avevo provato ad inserire il foreach dentro ad un for e non funzionava....

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • Z
                          ziobudda Super User • ultima modifica di
                          
                          for ($i=0;$i<5;$i++) {
                            $item = $xml->channel->item*;
                          
                              $titolo_newsic = $item->title;
                              $pre_newsic = $item->description;
                              
                              
                          echo '<span class="titolo_newsic">'.$titolo_newsic.'</span><br>'.substr($pre_newsic,0,120).'<br>leggi tutto >';    
                          
                          }  
                          

                          Prova un po' così.

                          M.

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • P
                            pettedemon User Attivo • ultima modifica di

                            Ciao ziobudda, come mi hai suggerito te funziona tutto.
                            Ti ringrazio!

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • Z
                              ziobudda Super User • ultima modifica di

                              Scusa, riesci ad inserire in post un pezzo di quell'albero xml ?

                              Usa var_dump($xml->channel->item);

                              Per capire dove si sbaglia.

                              M.

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • P
                                pettedemon User Attivo • ultima modifica di

                                Ciao ziobudda, ho modificato il post precedente, funziona come tu mi hai suggerito. Adesso devo solo farmi modificare xml perchè l'immagine non ha un proprio tag, altrimenti dovrei parsare tutto ed escludere l'immagine che dovrei croppare.
                                Ti ringrazio e mi scuso!

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                Caricamento altri post
                                Rispondi
                                • Topic risposta
                                Effettua l'accesso per rispondere
                                • Da Vecchi a Nuovi
                                • Da Nuovi a Vecchi
                                • Più Voti