[Résolu] Plugin perso d’Export CSV

  • WordPress :4.9.4
  • Statut : résolu
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Messages
  • #2161423
    Timama
    Participant
    Chevalier WordPress
    271 contributions

    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>
     

    #2161776
    Timama
    Participant
    Chevalier WordPress
    271 contributions

    oups 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

    #2163192
    Timama
    Participant
    Chevalier WordPress
    271 contributions

    Bonjour,

     

    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 } }

3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.