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

Discussione: creare un CSV al volo

  1. #1
    Utente di HTML.it L'avatar di darkiko
    Registrato dal
    Feb 2002
    Messaggi
    3,030

    creare un CSV al volo

    signori buonasera

    mentre cercavo di imparare a scrivere su un db access con php, mi sono imbattuto di striscio nei file CSV che non conoscevo...
    e ora, visto che potrebbero tornarmi utili, mi è venuta la curiosità di capire...

    ad esempio da phpmyadmin esportare il contenuto di una tabella di un db mysql in un csv è una vaccata, ok, ma si potrebbe anche fare direttamente via php?
    uno script che crea il csv e ti chiede di salvarlo...

    leggendo un po' di qua e un po' di la' mi pare di aver capito che qualcosa si può fare, ma onestamente non ho capito come


    grazie per ogni info e scusatemi se ho scritto qualche stupidata (:
    è nella nostra unicità che risiede la meraviglia degli esseri umani

  2. #2
    Utente di HTML.it L'avatar di darkiko
    Registrato dal
    Feb 2002
    Messaggi
    3,030
    è nella nostra unicità che risiede la meraviglia degli esseri umani

  3. #3
    Un file csv é un file di testo con i campi separati da ; e le righe da a capo.
    Quindi basta leggere da DB e scrivere i campi con una fprintf, fput etc.

    codice:
    $fp = fopen("file.txt","w");
    
    for (... ciclo ...)
       fwrite($fp, "$campo1;$campo2;$campo3\n");
    fclose($fp);

  4. #4
    Utente di HTML.it L'avatar di darkiko
    Registrato dal
    Feb 2002
    Messaggi
    3,030
    oki,
    detto così non sembra difficile

    faccio un po' di prove e vediamo cosa combino


    grazie (:
    è nella nostra unicità che risiede la meraviglia degli esseri umani

  5. #5
    Utente di HTML.it L'avatar di darkiko
    Registrato dal
    Feb 2002
    Messaggi
    3,030
    funziona

    dunque, io ho fatto così:
    ho creato una tabella prova con 3 campi, "nome" "cognome" e "sesso" e un file vuoto chiamato prova.csv.

    codice:
    $query = 'SELECT nome, cognome, sesso FROM prova';
    $ris = mysql_query($query,$conn) or die("Errore nella query: " . mysql_error());
    $fp = fopen("prova.csv","w");
    while($riga = mysql_fetch_array($ris)) {
    $testo = "$riga[nome];";
    $testo .= "$riga[cognome];";
    $testo .= "$riga[sesso];";
    fwrite($fp, $testo."\n");
    }
    fclose($fp);
    e se vado a prendermi il file prova.csv leggo
    PIPPO;PIPPO;M;
    PLUTO;PLUTO;M;



    tra l'altro, ora (correggetemi se sbaglio) se io il file al posto che chiamarlo prova.csv lo chiamo prova.csvv, lo posso scaricare al posto che vederlo con il browser (come succede invece se il file è .csv) e dopo averlo rinominato posso farci quello che voglio con Access o Excel, giusto?
    è nella nostra unicità che risiede la meraviglia degli esseri umani

  6. #6

  7. #7
    Utente di HTML.it L'avatar di darkiko
    Registrato dal
    Feb 2002
    Messaggi
    3,030
    Originariamente inviato da margherite
    Si
    danke
    è nella nostra unicità che risiede la meraviglia degli esseri umani

  8. #8
    Utente di HTML.it L'avatar di darkiko
    Registrato dal
    Feb 2002
    Messaggi
    3,030
    problema...

    pensavo bastasse rinominare il mio .csv in .csvpippo per non vederlo nel browser e scaricarlo...
    ma non è così


    come caspita faccio a farlo scaricare?
    è nella nostra unicità che risiede la meraviglia degli esseri umani

  9. #9
    Originariamente inviato da darkiko
    problema...

    pensavo bastasse rinominare il mio .csv in .csvpippo per non vederlo nel browser e scaricarlo...
    ma non è così


    come caspita faccio a farlo scaricare?

    ma...puoi anche crearti un link e poi: Salva con nome ...mi sembra la cosa più semplice!



  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Puoi anche fare in modo che funzioni per tutte le tabelle

    codice:
    <?
     ob_start();
     $link = mysql_connect("", "root", "") or die ("Impossible de se connecter => ".mysql_error());
     mysql_select_db ("test") or die ("Impossible de se connecter => ".mysql_error());
     
     $tabella = "catalogo_categorie";
     
     $res = mysql_list_fields("test",$tabella);
     $nbCampi = mysql_num_fields($res);
    
     $arrayNomi       = array();
     for ($i=0;$i<$nbCampi;$i++) {
       $name        = mysql_field_name($res,$i);
    	 $arrayNomi[] = "$name";
     }
      $clausolaSelect  = "select CONCAT_WS(';',". implode(",",$arrayNomi).") ";
    	$clausolaSelect .= " as A from $tabella order by A";
      $res = mysql_query( $clausolaSelect) or die(mysql_error());
    	while (list($result) = mysql_fetch_array($res)) {
    	 print "$result\n";
    	}
    	$contents = ob_get_contents();
    	ob_end_clean();
      header("Content-Type: application/text");
      header("Content-Disposition: attachment; filename=$tabella.csv");
    	print $contents
    ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.