affichage custom post type dans liste déroulante (Créer un compte)

  • WordPress :4.9.4
  • Statut : non résolu
2 sujets de 1 à 2 (sur un total de 2)
  • Auteur
    Messages
  • #2171374
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    Bonjour,

    Ma configuration WP 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) :

    Bonjour,

    J’ai créé un plugin, sous wordpress, d’export xsl.

    Il fonctionne très bien.

    Mais j’aimerai lui ajouter une fonctionnalité, et là j’ai un problème.

    Voici mon plugin qui fonctionne

    ob_start();
    add_action('admin_menu', function() {
        add_submenu_page('edit.php?post_type=angebote', 'My Code-XLS Export plugin', 'My Code-XLS Export plugin', 'read', 'Code_CSV_export', 'Code_CSV_export_page' );
    });
     
    function Code_CSV_export_page() {
        if(is_admin()){
            global $wpdb;
     
            if(isset($_POST['exportbtn'])){
                if(empty($_POST['ID_angebot_enter']))
                { ?>
                <tr> <th></th><td><br/><br/><br/> </td></tr>
                <tr>
                <th style="color:red";>VORSICHT</th>
                <td style="color:red";> - Entschuldigung, Bitte, nicht vergessen die Angebots-ID-<br/><br/><br/></td>
               </tr>
               <tr> <th>Zum Export Seite </th><td > <a href="https://programm-maplus.de/wp-admin/edit.php?post_type=angebote&page=Code_CSV_export"> Hier clicken </a></td></tr>
     
               <?php exit();
                }
                    $ID_angebot = $_POST['ID_angebot_enter'];
                        ob_clean();
                        $fh = @fopen( 'php://output', 'w' );
                        //fprintf($fp, chr(0xEF).chr(0xBB).chr(0xBF));
     
                        $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] = utf8_decode($result -> angebot_name);
                            $row [2] = $result -> enddatum;
                            $row [3] = html_entity_decode(utf8_decode($result -> firmenname), ENT_QUOTES, 'UTF-8');
                            $row [4] = $result -> code;
                            $row [5] = $result -> verwendet;
                            $row [6] = $result -> Titel;
                            $row [7] = html_entity_decode(utf8_decode($result -> Nachname), ENT_QUOTES, 'UTF-8');
                            $row [8] = html_entity_decode(utf8_decode($result -> Vorname), ENT_QUOTES, 'UTF-8');
                            $row [9] = $result -> herunterladen_datum;
                            $data_rows[] = $row;
                        }
                                     
                        fputcsv( $fh, $header_row,"\t", '"' );
                        foreach ( $data_rows as $data_row ) {
                           fputcsv( $fh, $data_row ,"\t", '"');
                        }
     
                         
                        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);
     
                        fclose( $fh );
     
                        die();
                     
            }
    ?>
     <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> </br>  </th> <td style="padding-bottom:30px; font-weight:bold;"></br> Sie können auch die GANZ Codelist mit plugin "Database to Excel" exportieren  </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 } }

     

    J’ai donc sous wordpress, la possibilité d’exporter des données à partir d’un table.

    Dans cette table, il y a des offres (angebote dans mon programme). Il y a bien sûr des ID pour chaque offre.

    Dans le plugin, l’utilisateur doit entrer l’ID de l’offre.

    Ce qui n’est pas pratique car il doit le connaitre ou aller les chercher sur une autre page.

    Au lieu de mettre un input classique,

     

    <input class="regular-text" id="ID_angebot_enter" type="text" name="ID_angebot_enter" value="<?php echo $ID_angebot_enter;?>" />

     

    je voudrais donc mettre une liste déroulante des offres existante.

    Je vais donc chercher mes offres dans la base de données et je les mets dans ma liste déroulante.

    mais cela ne fonctionne pas.

    VOici la partie du code que j’ai modifier pour mettre la liste déroulante

    <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>
                <td style="padding-top:20px;" >
     
                <?php
                wp_reset_postdata();   
                global $dropdownlist, $post;
                   $args_dropdownlist= array(
                    'post_type' => 'angebote',
                    //'orderby'   => 'meta_value',
                    //'meta_key'  => 'firmenname',
                    //'order'     => 'asc',
                    'posts_per_page' =>-1,
                );                   
                $dropdownlist = new WP_Query($args_dropdownlist);
                var_dump($dropdownlist);
     
                ?>
                <select>
                <?php
                if ( $dropdownlist-> have_post()){
                    while ($dropdownlist->have_posts()) :
                        $dropdownlist->the_post();
                        $id_angebot = get_post_meta( $post->ID, 'id_angebot', true );
                        $angebot_name = get_post_meta( $post->ID, 'angebot_name', true );
                        $firmenname = get_post_meta( $post->ID, 'firmenname', true );
     
                        echo 'id_angebot= ' .$id_angebot;
                        echo 'angebot_name= ' .$angebot_name;
                        echo 'firmenname= ' .$firmenname;
     
                        ?>
                    <option value="<?php echo $id_angebot;?>"> <?php echo $angebot_name.' / '.$firmenname.' / '.$id_angebot;?>  </option>
                    <?php
                    endwhile;
                    wp_reset_postdata();   
                }?>               
                </select>
     
                </br>
                <i> <?php echo 'ACHTUNG, Export der Datenbank, abhängig vom gewählten Angebot;' ?></i> <br/> <br/> <br/> </td>
                </tr>
                <tr><th> </br>  </th> <td style="padding-bottom:30px; font-weight:bold;"></br> Sie können auch die GANZ Codelist mit plugin "Database to Excel" exportieren  </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 } }

     

    Le problème est que le var_dump m’affiche quelque chose que je ne comprend pas ou en tout cas qui n’indique rien sur les offres.

    Et pour mon test
    <div>
    <div>if ( $dropdownlist-> have_post())</div>
    </div>
    cela n’entre pas dedans.

    Avez vous une remarque pour l’affichage de ces cutom post typ dnas la liste déroulante ?

    Merci beaucoup pour votre aide, remarques, avis ou indices

     

    Timama

     

    #2171379
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    Je me dit qu’il y a peut etre interférence entre

                        $query = $wpdb->prepare("SELECT * FROM wpPGRmaplus_angebote WHERE `id_angebot`=$ID_angebot ");
                        $results = $wpdb->get_results($query); 

    et 
    
    
                $dropdownlist = new WP_Query($args_dropdownlist);

    
    c'est possible ?
    • Cette réponse a été modifiée le il y a 1 année et 11 mois par Timama.
2 sujets de 1 à 2 (sur un total de 2)
  • Vous devez être connecté pour répondre à ce sujet.