Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    343

    Esportare query mysql in excel

    Ciao,
    tramite un tutor on line sono riuscito a fare questo semplice script che mi esporta una query di mysql in excel ...

    Funziona correttamente tutto l'unico problema che non risolvo è il fatto che io vorrei che mi mettesse la query su 4 righe e invece me le mette tutte su una... vi posto lo script spero che qualcuno possa aiutarmi ...

    <html>
    <head>
    <body>



    <div class="content">
    <form id="form1" name="form1" method="post" action="esporta_news_letter.php">




    <input type="submit" name="submit" id="submit" value="Esporta tab news letter excel" />
    </p>
    </form>
    </div>


    Codice PHP:
    <?php 

    $host 
    'localhost';
    $user 'db';
    $pass 'db';
    $db 'db';
    $table 'news_letter';
    $file 'export';

    $link mysql_connect($host$user$pass) or die("Can not connect." mysql_error());
    mysql_select_db($db) or die("Can not connect.");

    $result mysql_query("SHOW COLUMNS FROM ".$table."");
    $i 1;
    if (
    mysql_num_rows($result) > 0) {
    while (
    $row mysql_fetch_assoc($result)) {
    $csv_output .= $row['Field']."; ";
    $i++;
    }
    }
    $csv_output .= "\n";

    $values mysql_query("SELECT * FROM ".$table."");
    while (
    $rowr mysql_fetch_row($values)) {
    for (
    $j=0;$j<$i;$j++) {
    $csv_output .= $rowr[$j]."; ";
    }
    $csv_output .= "\n";
    }

    $filename $file."_".date("Y-m-d_H-i",time());
    header("Content-type: application/vnd.ms-excel");
    header("Content-disposition: csv" date("Y-m-d") . ".csv");
    header"Content-disposition: filename=".$filename.".csv");
    print 
    $csv_output;
    exit;
    ?>

  2. #2
    Prova a cambiare
    $csv_output .= "\n";
    in
    $csv_output .= "\r\n";


  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    343
    Ho provato ad inserire :

    $csv_output .= "\r\n";



    MA niente il risultato e sempre lo stesso, mi mette tutto all'intrrno di una cella

    id; da_click; ora; query;
    1; 2011-05-15; 00:00:00; p4; ;
    2; 2011-05-15; 00:00:00; p4; ;
    3; 2011-05-15; 00:00:00; p4; ;
    4; 2011-05-16; 00:00:00; p4; ;
    5; 2011-05-16; 00:00:00; p4; ;
    6; 2011-05-16; 19:45:40; p4; ;
    7; 2011-05-16; 19:45:43; p4; ;
    8; 2011-05-16; 00:00:00; p4; ;
    9; 2011-05-16; 00:00:00; p4; ;
    10; 2011-05-17; 00:00:00; p4; ;
    11; 2011-05-19; 00:00:00; p4; ;
    12; 2011-05-20; 00:00:00; p4; ;
    13; 2011-05-20; 838:59:59; p4; ;

  4. #4
    Il problema allora è come importi (converti) il file csv quando apri excel...

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    343
    suggerimenti ??!

  6. #6
    Beh, se usi frequentemente queste funzioni (scrivere o leggere file csv, excel o doc) prova a dare un occhio a queste lib: http://www.codeplex.com/PHPExcel
    L'uso per scrivere un xls partendo da un csv è molto semplice.

    Altrimenti prova a ciclare sui dati da scrivere in questo modo:
    codice:
    fopen(file.csv);
    while (ciclo) (
       fwrite(riga);
    )
    fclose;
    e poi "sputi fuori" il file e non il contenuto...

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    343
    A dire il vero è la prima volta che lo faccio

    Infatti sto provando a capire dove potrei metterlo all'interno del mio script ...

    MA non riesco a capirlo ((((((

  8. #8
    Ok
    codice:
    $filename = $file."_".date("Y-m-d_H-i",time()); 
    $i = 1; 
    if (mysql_num_rows($result) > 0) {
       // Qui apri il file
       $handler = fopen($filename, "w");
       // Ora cicli
       while ($row = mysql_fetch_assoc($result)) {
          // Ora scrivi sul file
          $riga = "{$row['Field']};"; 
          fwrite($handler, $riga);
          $i++;
       )
      fwrite($handler, "\n");
    
    ......
    
    while ($rowr = mysql_fetch_row($values)) {
       for ($j=0;$j<$i;$j++) {
          $riga = "{$row['j']};";
          fwrite($handler, $riga);
       }
       fwrite($handler, "\n");
    }
    fclose($handler);
    
    ....
    $fd = fopen ($filename, "r");
    header("Content-type: application/force-download\n");
    header("Content-Disposition: attachment; filename=\"{$name}\"");
    header("Cache-control: private");
    fclose ($fd);
    readfile($path);
    exit();
    Non è il massimo di ottimizzazione ma dovrebbe andare bene


  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    343
    Putroppo restituisce pagina bianca e non parte il download delle statistiche in excel

    <?php

    $host = 'localhost';
    $user = 'db';
    $pass = 'db';
    $db = 'statistiche';
    $table = 'facebook';
    $file = 'export';

    $link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
    mysql_select_db($db) or die("Can not connect.");

    $result = mysql_query("SHOW COLUMNS FROM ".$table."");
    $i = 1;
    if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
    $csv_output .= $row['Field']."; ";
    $i++;
    }
    }
    $csv_output .= "\n";

    $values = mysql_query("SELECT * FROM ".$table."");
    while ($rowr = mysql_fetch_row($values)) {
    for ($j=0;$j<$i;$j++) {
    $csv_output .= $rowr[$j]."; ";
    }
    $csv_output .= "\r\n";
    }

    $filename = $file."_".date("Y-m-d_H-i",time());
    $i = 1;
    if (mysql_num_rows($result) > 0) {
    // Qui apri il file
    $handler = fopen($filename, "w");
    // Ora cicli
    while ($row = mysql_fetch_assoc($result)) {
    // Ora scrivi sul file
    $riga = "{$row['Field']};";
    fwrite($handler, $riga);
    $i++;
    )
    fwrite($handler, "\n");

    ......

    while ($rowr = mysql_fetch_row($values)) {
    for ($j=0;$j<$i;$j++) {
    $riga = "{$row['j']};";
    fwrite($handler, $riga);
    }
    fwrite($handler, "\n");
    }
    fclose($handler);

    ....
    $fd = fopen ($filename, "r");
    header("Content-type: application/force-download\n");
    header("Content-Disposition: attachment; filename=\"{$name}\"");
    header("Cache-control: private");
    fclose ($fd);
    readfile($path);
    exit();

    ?>

  10. #10
    No ma che pastrocchio hai fatto?
    Il codice che ti ho messo è un esempio, devi adattarlo al tuo, non copiarlo pari pari

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.