Export tabel WordPress în Excel

26 feb. 2011, 05:19:48
Vizualizări: 18.1K
Voturi: 3

Am creat anterior scripturi PHP pentru a exporta un tabel de baze de date în format .xls astfel:

$select = "SELECT * FROM tracking";
$export = mysql_query ( $select ) or die ( "Eroare SQL: " . 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) Înregistrări găsite!\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";

Ceea ce aș dori să știu este cum să "convertesc" acest cod în format WordPress folosind clasa $wpdb? Pot să obțin interogarea inițială pentru a selecta datele din tabelul dorit, dar mă pierd în unele dintre semanticile clasei wpdb. De asemenea, aș fi vrut să știu unde aș putea plasa acest cod în WordPress, astfel încât atunci când un utilizator apasă pe un link, să ruleze această interogare și să descarce fișierul .xls?

Orice ajutor este foarte apreciat! Acest site este minunat!

1
Comentarii

După o lungă luptă, asta m-a ajutat. Vezi asta

Fungayi Makoni Fungayi Makoni
24 apr. 2020 09:43:34
Toate răspunsurile la întrebare 5
0

De ce să nu folosiți sintaxa SELECT INTO OUTFILE:

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

creează acest fișier ca 'export_data.php'. Apoi apelează acest PHP din link

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

    $link = mysql_connect($host, $user, $pass) or die("Nu mă pot conecta." . mysql_error());  
mysql_select_db($db) or die("Nu mă pot conecta.");  

    $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 mai 2011 12:04:09
3

Sunt clar cam târziu să ajut cu răspunsul meu.. sper :) , dar mă adresez oricui altcuiva care are nevoie de o funcție WordPress actualizată pentru a exporta un tabel personalizat într-un fișier CSV afișat frumos și clar pe rânduri

    function ns_contact_form_csv_pull() {

       global $wpdb;

       $table = 'ns_contact_form';// numele tabelului
       $file = 'ns_contact_form_csv'; // numele fișierului 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');

Descarcă fișierul CSV (trebuie să fii autentificat) doar adaugă acest URL în browser http://example.com/wp-admin/admin-ajax.php?action=csv_pull ... schimbă domeniul cu al tău :)

Poți să-l apelezi oriunde în WordPress folosind:

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

cum să obții și anteturile coloanelor?

Divyanshu Jimmy Divyanshu Jimmy
28 iun. 2017 16:37:29

@Softxide, nu sunt sigur ce vrei să spui

Nuno Sarmento Nuno Sarmento
30 iun. 2017 19:38:58

aveam nevoie de numele coloanelor în fișierul csv exportat. Am folosit logica ta și am adăugat numele coloanelor.. +1

Divyanshu Jimmy Divyanshu Jimmy
2 iul. 2017 10:11:21
1

Dacă aveți phpmyadmin, mergeți la export și selectați Excel în loc de SQL.

26 feb. 2011 07:59:26
Comentarii

Trebuie să execut acest cod din partea frontală a aplicației, nu din admin.

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

Ceva de genul acesta:

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

Vezi SELECT rezultate generice în Codex pentru detalii.

Nu sunt sigur cum să implementez cel mai bine linkul către aceasta, o pagină cu șablon personalizat ar putea fi soluția.

26 feb. 2011 21:21:36