Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Saltare una riga il lettura di un file csv o txt

    salve a tutti
    uso da molto tempo un mio script php per la lettura di un file csv , per la modifica e infine per la riscrittura
    il file ha una struttura di questo tipo dove legge il file.csv e dopo che lo modifica scrive destinazione.csv

    codice:
    <?php print "<table border=1 width=90% >";$fd= fopen ("file.csv", "r");
    $destinazione = fopen('destinazione.csv', 'w');
    $x=0; 
    while (!feof ($fd))
    {     
    $riga=fgets($fd, 4096);     
    if($riga!="")     
    {    
    $arr=split(";", $riga);   
    //ESEMPIO MODIFICA
    $arr[3]= $arr[3] * 100; 
    print "<tr>";          
    print "<td>".$arr[0]."</td>";          
    print "<td>".$arr[1]."</td>";          
    print "<td>".$arr[2]."</td>";          
    print "<td>".$arr[3]."</td>";                     
    print "</tr>";         
    $x++;  
    }  
    fputcsv($destinazione, $arr);
    }
    print "";
    fclose($fd);
    flcose($destinazione);
    ?>
    il file.csv è composto tipo cosi:
    aaa;bbb;25;48
    ccc;eee;78;13
    prova1;ggg;32;532
    ttt;prova2;23;55
    prova1;hhh;875;32

    Come posso modificare il mio script in modo che salti tutte le righe dove è presente prova1 e prova2?
    Come e dove devo mettere questa condizione?

    Non so proprio come fare?
    Aiuto....

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Una if e testi il valore dei singoli campi per cercare il valore che ti fa "saltare la riga"

  3. #3
    Quote Originariamente inviata da clasku Visualizza il messaggio
    Una if e testi il valore dei singoli campi per cercare il valore che ti fa "saltare la riga"
    grazie della risposta
    ma come posso impostare il fatto di saltare la riga?
    non riesco a fare questo
    potresti farmi un esempio?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Codice PHP:
    if ( $condizione == true )
    {
        continue;


  5. #5
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Codice PHP:
    if ( $condizione == true )
    {
        continue;


    Grazie grazie e 1000 volte grazie!
    Mi hai salvato. Non sapevo dell'if con continue per saltare.
    Grazie ancora 100000 volte!

  6. #6
    no so se devo aprire una nuova discussione ma mi occorre un piccolo aiuto sempre su questo file...
    in alcuni casi mi capita che il file csv originario contenga parti html con dei accapo
    ad esempio:

    aaa;bbb;25;48;<p>BATTERIA INCLUSA</p>
    ccc;eee;78;13;<p>BATTERIA INCLUSA</p>
    prova1;ggg;32;532;<p>BATTERIA INCLUSA</p>


    <p>ADATTATORE INCLUSO</p>
    ttt;prova2;23;55;<p>BATTERIA INCLUSA</p>
    <p>ADATTATORE INCLUSO</p>
    prova1;hhh;875;32;<p>BATTERIA NON INCLUSA</p>

    in alcuni casi è presente 1 o 2 accapo e il sistema mi va completamente in tilt nella parte di mettere i valori in tabella.
    Come posso fare per regolare bene la cosa?

    Immagino devo mettere qualche valore in:
    codice:
    $arr=split(";", $riga);
    ma come devo fare per impostare il sistema in modo che riconosca gli accapo nel file csv?

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    a parte che non userei split ma le funzioni native per gestire i CSV
    poi, se hai possibilità, farei in modo che i campi con gli a capo all'interno siano compresi tra virgolette, magari in quel modo si possono gestire (non ci ho mai provato e sono molto scettico a riguardo)

  8. #8
    Quote Originariamente inviata da clasku Visualizza il messaggio
    a parte che non userei split ma le funzioni native per gestire i CSV
    poi, se hai possibilità, farei in modo che i campi con gli a capo all'interno siano compresi tra virgolette, magari in quel modo si possono gestire (non ci ho mai provato e sono molto scettico a riguardo)
    ho controllato bene il file csv ed effettivamente i testi con accapo sono già racchiusi da virgoletti quindi sono fatti cosi:
    aaa;bbb;25;48;"<p>BATTERIA INCLUSA</p>"
    ccc;eee;78;13;"<p>BATTERIA INCLUSA</p>"
    prova1;ggg;32;532;"<p>BATTERIA INCLUSA</p>


    <p>ADATTATORE INCLUSO</p>"
    ttt;prova2;23;55;"<p>BATTERIA INCLUSA</p>
    <p>ADATTATORE INCLUSO</p>"
    prova1;hhh;875;32;"<p>BATTERIA NON INCLUSA</p>"


    ho provato a usare
    str_getcsv
    codice:
    $arr=str_getcsv($riga,';','"','');


    ma il problema con gli accapo non si risolve...
    avete qualche idea?




  9. #9
    Il file di partenza csv è tratto da un xls. Ho provato con uno script di stampa a video del file xls e lo visualizzo correttamente.
    Il problema è poi come trasformare il file xls in array, fare le operazioni e salvarlo in csv...

  10. #10
    cercando in rete ho trovato come consiglio di usare:
    ini_set("auto_detect_line_endings", true);
    ma senza trovare info piu precise...
    sapete qualcosa a riguardo?

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.