Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: esportare su testo

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555

    esportare su testo

    Come posso procedere per esportare una interrogazione del db su un file di testo disponendo ogni record su una riga diversa e separando i campi?
    Da codice php perchè dopo lo dovrei far fare agli utenti.
    Io ho iniziato col selezionare il db e la tabella, fatto un ciclo while per selezionare i dati, con mysql_fetch_array preparato l'array,poi aperto il nome del file su cui scrivere. Però mi scrive solo l'ultimo nome presente nella tabella, l'ultimo record.
    Come posso fare?

  2. #2
    la scrittura devi farla nel ciclo while.. è il ciclo che ti permette di leggere tutti i record... mysql_fetc_array() ti restituisce un record progressivo rispetto all'ultima chiamata...

    ma forse meglio che scrivere una riga per ogni record [un sacco di accessi al file] è + efficiente tenere tutto in una stringa e poi scirvere tutto in un botto...

    Codice PHP:
    mysql_query($query);

    $stinga '';
    while(
    $record mysql_fetch_array())
    {
     foreach(
    $record as $rec)
      {
       
    $stringa .= $rec.'|'//uso | come separatore tra i record
      
    }
     
    $stringa .= "\n"//aggiungo un "a capo" dopo ogni record
    }

    $fp fopen('record.txt',w);
    fwrite($fp,$stringa);
    fclose($fp); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555
    Provo e ti faccio sapere.
    L'unica cosa mi devo studiare il foreach, perchè non mi è chiaro quel passaggio, il resto penso di averlo capito.
    Grazie

  4. #4
    Originariamente inviato da michelepi
    Provo e ti faccio sapere.
    L'unica cosa mi devo studiare il foreach, perchè non mi è chiaro quel passaggio, il resto penso di averlo capito.
    Grazie

    foreach($record as $rec)

    {

    $stringa .= $rec.'|'; //uso | come separatore tra i record

    }



    foreach esegue il suo corpo una volta per ogni elemento dell'array $record.. e l'elemento preso in esame l'ho chiamato $rec..
    Per tradurre il codice in italiano: per ogni elemento dell'array $record, chiama l'elemento corrente $rec.....

    dentro il corpo quindi appendo ogni elemento dell'array alla stringa



  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555
    Ti ringrazio, adesso so qualcosa in più, ha funzionato. L'unica cosa mi raddoppia i dati.
    a;a;nome;nome
    Scrive tutto due volte.
    Ti faccio sapere, grazie.

  6. #6
    Originariamente inviato da michelepi
    Ti ringrazio, adesso so qualcosa in più, ha funzionato. L'unica cosa mi raddoppia i dati.
    a;a;nome;nome
    Scrive tutto due volte.
    Ti faccio sapere, grazie.

    hum.. so io perchè.. perchè usi mysql_fetch_array() che crea un doppio array dei record.. per ogni record del DB due elementi dell'array: uno numerico ed uno associativo..

    usa mysql_fetc_assoc()


  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555
    Ehehehe, sei collegato anche tu. Ok ti faccio sapere, rigrazie perchè ora so che mysql_fetch_assoc crea un array solo mentre mysql_fetch_array ne crea due. E' cosi'? Numerico e associativo, che differenza passa tra numerico e associativo?
    Grazie

  8. #8
    Originariamente inviato da michelepi
    Ehehehe, sei collegato anche tu. Ok ti faccio sapere, rigrazie perchè ora so che mysql_fetch_assoc crea un array solo mentre mysql_fetch_array ne crea due. E' cosi'? Numerico e associativo, che differenza passa tra numerico e associativo?
    Grazie
    fondamentalmente anche l'array numerico è associativo....

    un array associativo è un array in cui hai una coppia chiave valore...

    alla chiave "nome" hai il valore "guido"... alla chiave "città" il valore "roma" etc etc

    l'array numerico come chiavi ha dei numeri progressivi..
    alla chiave 0 corrisponde il valore "guido".. alla chiave 1 "roma"....



  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555
    Funge tutto, grazie.
    Ti volevo chiedere ma è fattibile selezionare solo alcune colonne della tabella? Praticamente vorrei elimnare la colonna id per non trasferirla sul file di testo.
    E un'altra cosa se volessi creare un file con spazi. Tipo primi dieci caratteri campo nome dalla posizione 11 alla posizione 20 campo cognome.
    Ti stresso vero?
    Grazie

  10. #10
    Originariamente inviato da michelepi
    Funge tutto, grazie.
    Ti volevo chiedere ma è fattibile selezionare solo alcune colonne della tabella? Praticamente vorrei elimnare la colonna id per non trasferirla sul file di testo.
    E un'altra cosa se volessi creare un file con spazi. Tipo primi dieci caratteri campo nome dalla posizione 11 alla posizione 20 campo cognome.
    Ti stresso vero?
    Grazie

    no, non mi stressi.. tranquillo

    guarda io ho usato il foreach sul record per prenderne tutti i campi indipendentemente da quali siano.. se tu peferisci selezionare campi specifici puoi farlo semplicemente levando il foreach e facendo:

    $stringa .= $capo1.' | '.$campo2......


    capito?

    chaiaramente così puoi anche inserire gli spazi


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 © 2024 vBulletin Solutions, Inc. All rights reserved.