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

    esportazione tabella MYSQL in txt

    Salve
    il vero problema non è l'esportazione dei dati che mi riesce senza problemi, ma nel formato testo che ottengo nel txt.
    Mi spiego subito con un esempio che è più facile da capire.
    nel file txt mi viene registrato così:
    gruppo|**|nominativo|**|cap002_fam_010|**|pinco pallino|**|12345002_fam_020|**|Papero Paperino|**|12345003_fam_001|**|Giulio Cesare|**|===003_fam_002|**|Dante Alighieri|**|===
    Invece ogni singolo record dovrebbe essere scritto su ogni singola riga
    gruppo|**|nominativo|**|cap
    002_fam_010|**|pinco pallino|**|12345
    002_fam_020|**|Papero Paperino|**|12345
    003_fam_001|**|Giulio Cesare|**|===
    003_fam_002|**|Dante Alighieri|**|===
    Questo perchè lo stesso file di testo dovrà essere successivamente letto da una macro di excel riga per riga. Con questo formato invece l'intero file di testo mi viene letto come un unico record.

    Per comodità metto il codice PHP che ho usato:
    Codice PHP:
            $num_fields count($fields_to);
            
    $counter 0;
            
    $line "";
            
    $handle fopen($file_name"w");
            
    //    scrivo i nomi dei campi
            
    foreach($fields_to as $value){
                
    $counter ++;
                
    $line .= $value;
                if (
    $counter == $num_fields) {
                    
    $line .= "\n";
                } else {
                    
    $line .= "|**|";
                }
            }
            
    fwrite($handle$line);
            
    //    ora scrivo i valori registrati nei campi
            
    while ($row mysql_fetch_assoc($result)) {
                
    $counter 0;
                
    $line "";
                foreach(
    $fields_to as $value){
                    
    $counter ++;
                    
    $valore $row[$value];
                    if (
    $valore == "") {
                        
    $valore "===";
                    }
                    
    $line .= $valore;
                    if (
    $counter == $num_fields) {
                        
    $line .= "\n";
                    } else {
                        
    $line .= "|**|";
                    }
                }
                
    fwrite($handle$line);
            }
            
    fclose($handle); 
    Ringrazio per l'aiuto che mi darete.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Ma se lasci fare a mysql usando mysqldump invece di stare a scrivere codice php?

  3. #3
    Grazie Alhazred,
    ci avevo pensato, purtroppo usando mysqldump mi vien vuori un file che per poi leggerlo dal VBA mi farebbe tribolare per ripulire le varie righe.
    Invece usando il PHP scrivo i soli valori divisi da limitatori ed il lavoro dall'altra parte è molto più semplice.
    Intanto ho provato un'altra cosa
    alla stringa da scrivere nel txt ho aggiunti un chr(13) (ritorno accapo)


    Codice PHP:
            foreach($fields_to as $value){
                
    $counter ++;
                
    $line .= $value;
                if (
    $counter == $num_fields) {
                    
    $line .= chr(13)."\n";
                } else {
                    
    $line .= "|**|";
                }
            } 
    Sembra che così nel txt riesco a leggere un record per riga

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Ah, ok.
    Per il ritorno a capo il problema è che se sei su un server Windows devi usare \r\n se sei un server Unix invece \n

    Puoi ovviare a questa cosa usando invece la costante PHP_EOL che sarà impostata correttamente sul server.

  5. #5
    Grandissimo Alhazred.
    Quindi usando PHP_EOL posso evitare sia \n che chr(13)?
    Purtroppo excel non segue le stesse regole che abbiamo qui in PHP quindi è tutto da provare.
    La tua costante funziona bene (almeno il txt è come lo volevo)
    Ora non c'è da passare all'altro appartamento ... ma questo domani
    e grazie di nuovo

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.