web-dev-qa-db-de.com

Exportieren Sie die WordPress-Tabelle nach Excel

Ich habe zuvor PHP Skripte erstellt, um eine Datenbanktabelle in das XLS-Format zu exportieren:

$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";

Ich würde gerne wissen, wie man dies mit der Klasse $ wpdb in das WordPress-Format "konvertiert". Ich kann die erste Abfrage durchführen, um die Daten aus der gewünschten Tabelle auszuwählen, aber ich verliere mich in einigen Semantiken der wpdb-Klasse. Ich wollte auch wissen, wo ich diesen Code in WordPress ablegen würde. Wenn also ein Benutzer auf einen Link klickt, wird diese Abfrage ausgeführt und die XLS-Datei heruntergeladen.

Jede Hilfe wird sehr geschätzt! Diese Seite ist großartig!

2
Rob Bennet

Warum nicht die SELECT INTO OUTFILE Syntax verwenden:

$wpdb->query("SELECT * INTO OUTFILE '/path/to/file' 
 FIELDS TERMINATED BY '\t' 
 LINES TERMINATED BY '\n' 
 FROM tracking");
6
DTest

erstellen Sie diese Datei als 'export_data.php'. Dann rufen Sie diese PHP über den Link

<?php
$Host = 'localhost';
$user = 'mysqlUser';
$pass = 'myUserPass';
$db = 'myDatabase';
$table = 'products_info';
$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 = 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;
?>
4
sruthi

Wenn Sie phpmyadmin haben, gehen Sie einfach zum Exportieren und wählen Sie Excel anstelle vonSQL.

1
Ashfame

Ich bin definitiv zu spät, um mit meiner Antwort zu helfen. Ich hoffe :), aber ich wende mich an alle, die eine aktualisierte WordPress-Funktion benötigen, um eine benutzerdefinierte Tabelle in eine schöne und saubere CSV-Datei für die Zeilenanzeige zu exportieren

    function ns_contact_form_csv_pull() {

       global $wpdb;

       $table = 'ns_contact_form';// table name
       $file = 'ns_contact_form_csv'; // csv file name
       $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');

Laden Sie die CSV-Datei herunter (Sie müssen angemeldet sein). Fügen Sie diese URL einfach Ihrem Browser hinzu. http://example.com/wp-admin/admin-ajax.php?action=csv_pull ... ändern Sie die Domain mit Ihrer :)

Sie können es überall in WordPress aufrufen, indem Sie Folgendes verwenden:

$ajax_url = admin_url('admin-ajax.php?action=csv_pull');
1
Nuno Sarmento

Etwas wie das:

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

Weitere Informationen finden Sie unter SELECT generic results in Codex.

Sie sind sich nicht sicher, wie Sie den Link zu dieser Seite am besten implementieren können. Eine Seite mit einer benutzerdefinierten benannten Vorlage ist möglicherweise die Lösung.

0
Rarst