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

    Problema con funzione fputcsv

    Ciao a tutti ho realizzato una mia funzione per creare file csv, pescando i dati da un db...
    Funziona tutto ma ho solo un problema nel database i file sono salvati come stringhe ed in alcuni campi compaiono delle " come in questo caso:

    """""""""""""""ACQUA TERRA ASSOC.CULTUR"

    mentre il campo dovrebbe essere pulito

    la funzione che uso è la seguente:
    Codice PHP:
    function mysql2csv($table,$filename 'file.csv') {
                
        
    $sql_query "select * from $table";
        
        
    // prendo i valori dal db
        
    $result mysql_query($sql_query);
        
    $fields_cnt mysql_num_fields($result);
     
        
    //apro il mio file
            
    $fp fopen($filename,"w+"); 

        
    //scrivo le linee sul file che mi serve 
        
    while ($row mysql_fetch_array($result,MYSQL_NUM)) 
                
    fputcsv($fp,$row,"\t");        
                
            
    //chiudo il mio file
        
    fclose($fp);
                    
        } 
    Qualcuno può aiutarmi... anche perchè non lo fa in tutti i casi ma solo in alcuni

  2. #2
    Puoi cambiare il carattere che racchiude i campi specificandolo come quarto parametro della funzione fputcsv()

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    100
    Si questo già lo so, il problema purtroppo è un altro, infatti se mi mettesse " " su tutti i campi sarebbe una cosa fattibile il problema è che mi racchiude fra "" solo alcuni campi e non tutti, principalmente sono dei tipi di dato che nel db sono varchar

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    100
    Allora forse non sono stato abbastanza chiaro , sto cercando di importare ed esportare dei file CSV grazie a php.

    La fase di importazione non mi da nessun tipo di problemi, mentre per quanto riguarda la fase di esportazione, dopo aver letto dal db i valori da esportare, non riesco a creare correttamente i file di testo... Infatti alcuni campi vengono racchiusi tra "" mentre quando creo la riga, non specifico nessun carattere il che significa che sbagli io qualcosa, purtroppo non so cosa sia, il file che mi genera il txt è il seguente:

    Codice PHP:
     $conn connect_db();
    foreach ( 
    $tables as $table)          
    mysql2csv($table,ABSOLUTE_PATH.$table.EXTFILE);           
    //chiudo connessione al db         
    close_db($conn); 
    mentre la funzione che scrive il file è la seguente
    Codice PHP:
    function mysql2csv($table,$filename) {
                
        
    $sql_query "select * from $table";
        
        
    // prendo i valori dal db
        
    $result mysql_query($sql_query);
        
    $fields_cnt mysql_num_fields($result);
     
        
    //apro il mio file
        
    $fp fopen($filename,"w+"); 

        
    //scrivo le linee sul file che mi serve 
        
    while ($row mysql_fetch_array($result,MYSQL_NUM)) 
        
    fputcsv($fp,$row,"\t");        
        
        
    //chiudo il mio file
        
    fclose($fp);
                    

    Alla fine di tutto ho creato il file con nome e posizione corretta solo che alcuni campi, in maggior modo di tipo varchar sono racchiusi tra virgolette, e cio non deve essere...

    Ho controlla ed i campi presenti nel vettore
    Codice PHP:
    $row 
    sono corretti sospetto che il problema dipenda dalla funzione
    Codice PHP:
    fputcsv 
    AIUTOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

  5. #5
    Ma se le virgolette non vanno bene, perche' non le sostituisci con un altro carattere col metodo che ti ho scritto nel messaggio sopra e che dicevi di conoscere?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    100
    Perché io non voglio sostanzialmente nessun carattere e se metto " " lo spazio mi cambia struttura al file, purtroppo non dipende da me basta dirti che il gestionale col quale mi devo interfacciare, non genera file .csv ma bensì file del tipo .txt

    Credo di aver risolto con una modifica al codice ovvero:

    Codice PHP:
        $fp fopen($filename,"w+"); 
        
    //scrivo le linee sul file che mi serve 
        
    while ($row mysql_fetch_array($result,MYSQL_NUM)) {
        for ( 
    $i=0$i<count($row); $i++) {
          
    fwrite($fp$row[$i]."\t");
              if ( 
    $i == (count($row)-1) ) fwrite($fp"\n");
        }
       }    
        
    //chiudo il mio file
        
    fclose($fp); 
    Solo che non capisco come mai una funzione originaria del PHP non dia un risultato soddisfacente....

  7. #7
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Veramente la funzione da un risultato soddisfacente, solamente che tu volevi un risultato diverso.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    100
    Beh diciamo che non è proprio soddisfacente perkè non racchiude tutti i varchar tra "" ma solo alcuni... scelti a caso probabilmente...

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.