- WordPress :4.9.4
- Statut : résolu
- Ce sujet contient 2 réponses, 1 participant et a été mis à jour pour la dernière fois par Timama, le il y a 6 années et 3 mois.
-
AuteurMessages
-
12 juin 2018 à 14 h 59 min #2161423
Bonjour,
Ma configuration WP est actuelle
- Version de PHP/MySQL :
- Thème utilisé : Enfold
- Extensions en place :
- Nom de l’hébergeur : Strato
- Adresse du site :
Problème(s) rencontré(s) :
J’ai regardé beaucoup de sujet, d’exemple et testé beaucoup de chose mais je tourne en boucle.
Voici mon problème.
J’exporte ma base de données en fichier CSV (via un plugin que j’ai créé).
Mais il ne se passe rien. EN fait, j’aimerai (quand je clique sur mon bouton EXPORT TO CSV) que cela déclence le téléchargement du fichier en local.
Là, en fait, il n’y a que les données qui s’affiche à l’écran.
Voici mon code
function Code_CSV_export_page() {
// Check for current user privileges
if( !current_user_can( 'manage_options' ) ){ return false; }
// Check if we are in WP-Admin
if( !is_admin() ){ return false; }
if (isset($_POST['export']))
{
global $wpdb;
$query = $wpdb->prepare("SELECT * FROM wpPGRmaplus_angebote WHERE `id_angebot`=$ID_angebot ");
$results = $wpdb->get_results($query);
$filename = date("Ymd") . '-' . 'Export-Angebot-' . $ID_angebot . '.csv';
$fh = @fopen( 'php://output', 'w' );
$header_row = array(
0 =>'ID ANGEBOT',
1=>'ANGEBOT',
2 =>'ENDDATUM',
3 =>'FIRMENNAMEN',
4 =>'CODE',
5 =>'VERWENDET',
6 =>'TITEL',
7 =>'NACHNAME',
8 =>'VORNAME',
9 =>'HERUNTERLADEN DATUM'
);
$data_rows = array();
foreach ( $results as $result ) {
$row = array();
$row [0] = $result -> id_angebot;
$row [1] = $result -> angebot_name;
$row [2] = $result -> enddatum;
$row [3] = $result -> firmenname;
$row [4] = $result -> code;
$row [5] = $result -> verwendet;
$row [6] = $result -> Titel;
$row [7] = $result -> Nachname;
$row [8] = $result -> Vorname;
$row [9] = $result -> herunterladen_datum;
$data_rows[] = $row;
}
fprintf( $fh, chr(0xEF) . chr(0xBB) . chr(0xBF) );
fputcsv( $fh, $header_row );
foreach ( $data_rows as $data_row ) {
fputcsv( $fh, $data_row );
}
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header("Content-Type: application/force-download");
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename={$fileName}");
header("Expires: 0");
header("Pragma: public");
fclose( $fh );
die();
}
?>
<div class="wrap">
<form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI']; ?>" >
<table class="form-table">
<tbody>
<tr><th> </br> </br> </th> </tr>
<tr><th> </br> </br> </th> <td style="padding-bottom:60px; font-size: 25px; font-weight:bold;">Exportcodes und ihre Benutzer </td> </tr>
<tr><th> </br> </th> </tr>
<tr><th>ID des Angebots bezogen auf die Codeliste</th>
<?php $ID_angebot_enter = $custom_angebotenter["ID_angebot_enter"][0]; ?>
<td style="padding-top:20px;" ><input class="regular-text" id="ID_angebot_enter" type="text" name="ID_angebot_enter" value="<?php echo $ID_angebot_enter;?>" /></br>
<i> <?php echo 'Die ID wird im Angebot angezeigt -> Teil "Wie benutzt man das Angebot in Wordpress?"'; ?></i> <br/>
<i> <?php echo 'ACHTUNG, Export der Datenbank, abhängig vom gewählten Angebot;' ?></i> <br/> <br/> <br/> </td>
</tr>
<?php //récupération de l'id de l'offre
$ID_angebot = $_POST['ID_angebot_enter']; ?>
<tr><th> Export in Excel File</th>
<td><input type="submit" name="export" value="EXPORT TO CSV"></td>
</tr>
</tbody>
</table>
</form>
</div>
<?php } ?>Quand je le fait tourner, je n’ai pas de téléchargement de fichier proposé (ce que j’aimerai avoir)
Et à l’écran, les données suivantes s’affichent (mais pourquoi ça s’affiche ?) :« ID ANGEBOT »,ANGEBOT,ENDDATUM,FIRMENNAMEN,CODE,VERWENDET,TITEL,NACHNAME,VORNAME, »HERUNTERLADEN DATUM »
apparemment, ça plante au niveau du
<div style= »color: #d4d4d4; font-size: 12px; »>
<div><span style= »color: #c586c0; »>foreach</span><span style= »color: #d4d4d4; »> ( </span><span style= »color: #9cdcfe; »>$data_rows</span><span style= »color: #d4d4d4; »> as </span><span style= »color: #9cdcfe; »>$data_row</span><span style= »color: #d4d4d4; »> )</span></div>
</div>
<div></div>
<div>Si vous avez des indices pour m’éclairer, merci beaucoup par avance !</div>
<div>Timama</div>
13 juin 2018 à 9 h 38 min #2161776oups je n’avais pas vu la fin de mon message…
Je disais donc, apparemment, ça plante au niveau du
foreach ( $data_rows as $data_row ) {
fputcsv( $fh, $data_row );
}Si vous avez des indices pour m’éclairer, merci beaucoup par avance !
Timama
15 juin 2018 à 18 h 55 min #2163192Bonjour,
Voici la version qui fonctionne pour ceux que ça interesse
function Code_CSV_export_page() {
if(is_admin()){
global $wpdb;
if(isset($_POST['exportbtn'])){
$ID_angebot = $_POST['ID_angebot_enter'];
if (empty($_POST['ID_angebot_enter']))
{ ?>
<table class="form-table">
<tbody>
<tr><th> </br> </br> </th> </tr>
<tr><th> </br> </th> </tr>
<tr>
<th style="color:red";>VORSICHT</th>
<td style="color:red";> - Bitte, nicht vergessen die Angebots-ID - </td>
</tr>
<tr><th> </br> </th> </tr>
<tr>
<th> <a href="https://programm-maplus.de/wp-admin/edit.php?post_type=angebote&page=Code_CSV_export"> Zur Export Plugin</a></th>
<td> </td>
</tr>
<?php exit();
}
ob_clean();
$fh = @fopen( 'php://output', 'w' );
$header_row = array(
0 =>'ID ANGEBOT',
1 =>'ANGEBOT',
2 =>'ENDDATUM',
3 =>'FIRMENNAMEN',
4 =>'CODE',
5 =>'VERWENDET',
6 =>'TITEL',
7 =>'NACHNAME',
8 =>'VORNAME',
9 =>'HERUNTERLADEN DATUM'
);
$data_rows = array();
$query = $wpdb->prepare("SELECT * FROM wpPGRmaplus_angebote WHERE `id_angebot`=$ID_angebot ");
$results = $wpdb->get_results($query);
foreach ( $results as $result ) {
$row = array();
$row [0] = $result -> id_angebot;
$row [1] = $result -> angebot_name;
$row [2] = $result -> enddatum;
$row [3] = $result -> firmenname;
$row [4] = $result -> code;
$row [5] = $result -> verwendet;
$row [6] = $result -> Titel;
$row [7] = $result -> Nachname;
$row [8] = $result -> Vorname;
$row [9] = $result -> herunterladen_datum;
$data_rows[] = $row;
}
fputcsv( $fh, $header_row,"\t", '"' );
foreach ( $data_rows as $data_row ) {
fputcsv( $fh, $data_row ,"\t", '"');
}
fprintf( $fh, chr(0xEF) . chr(0xBB) . chr(0xBF) );
header("Content-Type: application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=".date('Ymd')."-"."Export-Angebot-".$ID_angebot.".xls"); //File name extension was wrong
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
}
?>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post" id="export-form">
<table class="form-table">
<tbody>
<tr><th> </br> </br> </th> </tr>
<tr><th> </br> </br> </th> <td style="padding-bottom:60px; font-size: 25px; font-weight:bold;">Exportcodes und ihre Benutzer </td> </tr>
<tr><th> </br> </th> </tr>
<tr><th>ID des Angebots bezogen auf die Codeliste</th>
<?php $ID_angebot_enter = $custom_angebotenter["ID_angebot_enter"][0]; ?>
<td style="padding-top:20px;" ><input class="regular-text" id="ID_angebot_enter" type="text" name="ID_angebot_enter" value="<?php echo $ID_angebot_enter;?>" /></br>
<i> <?php echo 'Die ID wird im Angebot angezeigt -> Teil "Wie benutzt man das Angebot in Wordpress?"'; ?></i> <br/>
<i> <?php echo 'ACHTUNG, Export der Datenbank, abhängig vom gewählten Angebot;' ?></i> <br/> <br/> <br/> </td>
</tr>
<tr><th> Export in Excel File</th>
<td> <input class="button button-primary exportbtn" name="exportbtn" type="submit" name="table_display" value="Export"/></td>
</tr>
</tbody>
</table>
</form>
<?php } } -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.