Esportare tabelle WordPress in Excel

26 feb 2011, 05:19:48
Visualizzazioni: 18.1K
Voti: 3

Ho creato in precedenza script PHP per esportare tabelle di database in formato .xls come questo:

$select = "SELECT * FROM tracking";
$export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( )  );
$fields = mysql_num_fields ( $export );
$file = 'export';
for ( $i = 0; $i < $fields; $i++ )
{
$header .= mysql_field_name( $export , $i ) . "\t";
}
while( $row = mysql_fetch_row( $export ) )
{
$line = '';
foreach( $row as $value )
{
    if ( ( !isset( $value ) ) || ( $value == "" ) )
    {
        $value = "\t";
    }
        else
    {
        $value = str_replace( '"' , '""' , $value );
        $value = '"' . $value . '"' . "\t";
    }
        $line .= $value;
 }
 $data .= trim( $line ) . "\n";
 }
 $data = str_replace( "\r" , "" , $data );
 if ( $data == "" )
 {
 $data = "\n(0) Records Found!\n";
 }

$filename = $file."_".date("M-d-Y");

header("Content-type: application/octet-stream");
header( "Content-disposition: filename=".$filename.".xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";

Quello che vorrei sapere è come "convertire" questo script in formato WordPress usando la classe $wpdb? Riesco a impostare la query iniziale per selezionare i dati dalla tabella che mi interessa, ma mi perdo in alcune caratteristiche della classe wpdb. Vorrei anche sapere dove inserire questo codice in WordPress, in modo che quando un utente clicca su un link, esegua questa query e scarichi il file .xls?

Qualsiasi aiuto è molto apprezzato! Questo sito è fantastico!

1
Commenti

Dopo una lunga lotta, questo mi ha aiutato. Vedi questo

Fungayi Makoni Fungayi Makoni
24 apr 2020 09:43:34
Tutte le risposte alla domanda 5
0

Perché non utilizzare la sintassi SELECT INTO OUTFILE:

$wpdb->query("SELECT * INTO OUTFILE '/percorso/del/file' 
 FIELDS TERMINATED BY '\t' 
 LINES TERMINATED BY '\n' 
 FROM tracking");
26 feb 2011 18:09:25
0

crea questo file come 'export_data.php'. Poi chiama questo php dal link

<?php
    $host = 'localhost';
    $user = 'mysqlUser';
    $pass = 'myUserPass';
    $db = 'myDatabase';
    $table = 'products_info';
    $file = 'export';

    $link = mysql_connect($host, $user, $pass) or die("Impossibile connettersi." . mysql_error());
mysql_select_db($db) or die("Impossibile connettersi.");

    $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']."; ";
            $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;
?>
20 mag 2011 12:04:09
3

Sono decisamente in ritardo per aiutare con la mia risposta.. spero :) , ma mi rivolgo a chiunque abbia bisogno di una funzione WordPress aggiornata per esportare una tabella personalizzata in un file CSV ben formattato con righe pulite

    function ns_contact_form_csv_pull() {

       global $wpdb;

       $table = 'ns_contact_form';// nome della tabella
       $file = 'ns_contact_form_csv'; // nome del file csv
       $results = $wpdb->get_results("SELECT * FROM $wpdb->prefix$table",ARRAY_A );

       if(count($results) > 0){
          foreach($results as $result){
          $result = array_values($result);
          $result = implode(", ", $result);
          $csv_output .= $result."\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;

    }
   add_action('wp_ajax_csv_pull','ns_contact_form_csv_pull');

Scarica il CSV (devi essere loggato) basta aggiungere questo URL nel tuo browser http://example.com/wp-admin/admin-ajax.php?action=csv_pull ... cambia il dominio con il tuo :)

Puoi chiamarlo ovunque in WordPress usando:

$ajax_url = admin_url('admin-ajax.php?action=csv_pull');
24 feb 2017 02:21:38
Commenti

come ottenere anche gli header delle colonne?

Divyanshu Jimmy Divyanshu Jimmy
28 giu 2017 16:37:29

@Softxide, non sono sicuro di cosa intendi

Nuno Sarmento Nuno Sarmento
30 giu 2017 19:38:58

avevo bisogno dei nomi delle colonne nel file csv scaricato. Ho usato la tua logica e ho aggiunto i nomi delle colonne.. +1

Divyanshu Jimmy Divyanshu Jimmy
2 lug 2017 10:11:21
1

Se hai phpmyadmin, basta andare su esporta e selezionare Excel invece di SQL.

26 feb 2011 07:59:26
Commenti

Devo eseguire questo codice dal front end dell'applicazione, non dall'admin.

Rob Bennet Rob Bennet
26 feb 2011 08:43:01
0

Qualcosa del genere:

$results = $wpdb->get_results('SELECT * FROM tracking;');

Vedi Risultati generici SELECT nel Codex per maggiori dettagli.

Non sono sicuro su come implementare al meglio il link a questo, una pagina con un template personalizzato potrebbe fare al caso nostro.

26 feb 2011 21:21:36