Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    168

    salvare csv in remoto dopo averlo creato

    ciao a tutti!
    questo codice mi permette di creare e rendere disponibile al dowload un file csv, ma come posso salvarlo direttamente sul sito senza far apparire la finestra per scaricarlo??
    grazie mille!!!

    codice HTML:
    <?php
    $table = 'bp';
    $file = 'bpfile';
    
    $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 = 0;
    if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
    $csv_output .= $row['Field']."; "; //ELIMINO INTESTAZIONE COLONNE
    $i++;
    }
    }
    $csv_output .= "\r\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());
    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
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Guarda i comandi php per scrivere un file. Puoi usare file_put_contents ma ci sono altri comandi.

    devi togliere

    header("Content-type: application/vnd.ms-excel");
    header("Content-disposition: csv" . date("Y-m-d") . ".csv");
    header( "Content-disposition: filename=".$filename.".csv");

    e rimpiazzare con (è solo un esempio)
    Codice PHP:
    file_put_contents("path e nome del file",$csv_output);
    // li puoi eventualmente inviare un header location per ridirigere verso una pagina 
    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    168
    ciao badaze, grazie per il tuo aiuto, funziona benissimo!
    un' altra cosa, sperando di non andare out... se volessi estrapolare solo tre colonne della tabella, diciamo mail,telefono e fax posso adattare questo script? se si come?
    grazie ancora!!!

  4. #4
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Quote Originariamente inviata da daduz Visualizza il messaggio
    ciao badaze, grazie per il tuo aiuto, funziona benissimo!
    un' altra cosa, sperando di non andare out... se volessi estrapolare solo tre colonne della tabella, diciamo mail,telefono e fax posso adattare questo script? se si come?
    grazie ancora!!!
    Certo, sostituisci all'asterisco i nomi delle colonne che vuoi estrarre:

    Codice PHP:
    $values mysql_query("SELECT mail,telefono,fax FROM ".$table.""); 
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    168
    Quote Originariamente inviata da las Visualizza il messaggio
    Certo, sostituisci all'asterisco i nomi delle colonne che vuoi estrarre:

    Codice PHP:
    $values mysql_query("SELECT mail,telefono,fax FROM ".$table.""); 

    ciao las e intanto grazie anche a te, ho fatto come dici tu e nello specifico
    codice HTML:
    $table = 'bp';
    $filename = 'bpfile';
    
    $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."");
    $result = mysql_query("select mail,telefono,fax FROM ".$table."");
    //echo $result;
    //exit;
    $i = 0;
    if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
    $csv_output .= $row['Field']."; "; //ELIMINO INTESTAZIONE COLONNE
    $i++;
    }
    }
    $csv_output .= "\r\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";
    }
    
    file_put_contents($filename.".csv",$csv_output);
    ma il file csv che mi esce non riporta intestazione colonna
    e come valori solo la prima colonna a sx con valore 1 alla prima riga utile e 2 alla seconda...
    non pesca dal db suppongo

    grazie per la pazienza!

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    168
    Quote Originariamente inviata da daduz Visualizza il messaggio
    ciao las e intanto grazie anche a te, ho fatto come dici tu e nello specifico
    codice HTML:
    $table = 'bp';
    $filename = 'bpfile';
    
    $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."");
    $result = mysql_query("select mail,telefono,fax FROM ".$table."");
    //echo $result;
    //exit;
    $i = 0;
    if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
    $csv_output .= $row['Field']."; "; //ELIMINO INTESTAZIONE COLONNE
    $i++;
    }
    }
    $csv_output .= "\r\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";
    }
    
    file_put_contents($filename.".csv",$csv_output);
    ma il file csv che mi esce non riporta intestazione colonna
    e come valori solo la prima colonna a sx con valore 1 alla prima riga utile e 2 alla seconda...
    non pesca dal db suppongo

    grazie per la pazienza!

    ho fatto dei progressi!
    cosi mi funziona ma non mi scrive l' intestazione delle colonne..
    suppongo l' errore sia nella riga
    $csv_output .= $row['Field']."; "; //ELIMINO INTESTAZIONE COLONNE
    grazie!


    codice HTML:
    $table = 'bp';
    $filename = 'bpfile';
    
    $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."");
    $result = mysql_query("select mail,telefono,fax FROM ".$table."");
    //echo $result;
    //exit;
    $i = 0;
    if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
    $csv_output .= $row['Field']."; "; //ELIMINO INTESTAZIONE COLONNE
    $i++;
    }
    }
    $csv_output .= "\r\n";
    
    //$values = mysql_query("SELECT * FROM ".$table."");
    $values = mysql_query("select mail,telefono,fax FROM ".$table."");
    while ($rowr = mysql_fetch_row($values)) {
    for ($j=0;$j<$i;$j++) {
    $csv_output .= $rowr[$j]."; ";
    }
    $csv_output .= "\r\n";
    }
    
    file_put_contents($filename.".csv",$csv_output);

  7. #7
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    se il numero delle colonne che devi estrarre non è altissimo io semplificherei tutto così:

    Codice PHP:
    $table 'bp';
    $filename 'bpfile';

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

    $csv_output .= "mail;telefono;fax\r\n"


    $values mysql_query("SELECT mail,telefono,fax FROM ".$table."");

    while (
    $row mysql_fetch_array($values)) {
       
    $csv_output .= $rowr['mail'].";"$rowr['telefono'].";"$rowr['fax'];
       
    $csv_output .= "\r\n";
    }

    file_put_contents($filename.".csv",$csv_output); 
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    168
    al max potranno essere 20 campi in futuro ma va benissimo cosi!!!
    ho corretto solo il "rowr" in "row" ed è perfetto!
    grazie ancora ad entrambi per il vs prezioso aiuto a presto

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.