[RESOLU] Problème conditions avec boucle foreach

Eléphanteau du PHP | 11 Messages

15 mars 2023, 15:13

Bonjour la communauté,

Voilà, j’ai un petit soucis avec des conditions (if else else if) et deux boucles. J’aimerais que sur ma page d’accueil s’affiche la première boucle avec les annonces d’enchères « En cours » et que s’il n’y en a pas, que cela soit la boucle avec les annonces « A venir » qui s’affiche.

Le problème est qu’a présent, les deux boucles s’affichent en même temps et non pas l’une ou l’autre (comme vous pouvez le voir sur la page d’accueil actuelle).

Je suppose qu’il faut que je puisse afficher la conditions (venant de la table postmeta des annonces) avant les boucles? (Si oui comment récupérer l’ID de l’annonce?).

Ou dois-je faire deux meta-query différentes?

J’espère avoir été assez clair sur ce que je désir effectuer, j’aimerais vraiment que s’affiche soit l’un soit l’autre, mais pas les deux en même temps.

Je vous remercie d’avance et vous souhaite ne bonne journée.

Le code:

$args = array
    (
        'post_type'        => 'vehica_car',
        'posts_per_page'   => -1,
        'cache_results'  => false,
        'update_post_meta_cache' => false, 
        'update_post_term_cache' => false,
        'tax_query' => array(
            array (
                'taxonomy' => 'vehica_19636',
                'field' => 'slug',
                'terms' => array( 'voitures', 'motocycles', 'vehicules-utilitaires', 'autres-annonces'),
            )
        ), 
        'meta_query' => array( 
            'relation' => 'OR',
            array(
                'key' => 'auction_status',
                'value' => 'demarrer', 
                'compare' => 'IN', 
            ),
            array(
                'key' => 'auction_status',
                'value' => 'soon', 
                'compare' => 'IN', 
            ),
            
        ),
       
    );

    $start_query = new WP_Query( $args );
    $all_annonces = $start_query->posts;
    
    ob_start();  ?>

        <div class="container">
            <div class="row">
                <div id="users">
                    <div class="filter-group row">
                        
                        <div class="filter-title">
                            <p>Filtrer</p>
                        </div>
                        <div class="form-group">
                            <div class="radio-inline">
                                <label>
                                    <input class="filter-all" type="radio" value="all" name="gender" id="gender-all" checked /> Tout
                                </label>
                            </div>
                            <div class="radio-inline">
                                <label>
                                    <input class="filter" type="radio" value="voitures" name="gender" id="gender-car" /> Voitures
                                </label>
                            </div>
                            <div class="radio-inline">
                                <label>
                                    <input class="filter" type="radio" value="vehicules-utilitaires" name="gender" id="vehicules-utilitaires" /> Utilitaires
                                </label>
                            </div>
                            <div class="radio-inline">
                                <label>
                                    <input class="filter" type="radio" value="motocycles" name="gender" id="gender-motos" /> Motos
                                </label>
                            </div>
                            <div class="radio-inline">
                                <label>
                                    <input class="filter" type="radio" value="autres-annonces" name="gender" id="gender-other" /> Autres
                                </label>
                            </div>
                        </div>
                        <label class="filter-title" style="margin-right: 2em;">Rechercher par marque
                            <input style="margin-left: 0.5em;" type="text" class="search form-control" placeholder="Exemple: Audi" />
                        </label>
                        <div class="form-group col-xs-12 col-sm-12">
                            <button class="btn btn-danger" onclick="resetList();">Annuler</button>
                        </div>
                    </div>

                    <ul class="list afs-list">
                    
                        <?php                            

                                // Loop all annonces
                                foreach($all_annonces as $annonce)
                                {
                                    $all_post_meta = get_post_meta($annonce->ID);
                                    $auction_type = get_the_terms($annonce->ID, 'vehica_19636');
                                    $auction_type_slug = $auction_type[0]->slug;                                      
                                    $annonce_auction_list = get_post_meta($annonce->ID, 'auction_list');
                                    $annonce_auction_status = get_post_meta($annonce->ID, 'auction_status', true);
                                    $annonce_auction_date = get_post_meta($annonce->ID, 'vehica_20836', true);
                                    $annonce_auction_hour = get_post_meta($annonce->ID, 'vehica_20856', true);
                                    $annonce_auction_date_hour = $annonce_auction_date . ' ' . $annonce_auction_hour;
                                    $get_title = get_the_title($annonce->ID);                                    

                                    // Info du véhicule
                                    $get_mark = get_post_meta($annonce->ID, 'vehica_39814', true);
                                    $get_carburant = get_post_meta($annonce->ID, 'vehica_19618', true);
                                    $get_boite = get_post_meta($annonce->ID, 'vehica_19620', true);
                                    $get_km = get_post_meta($annonce->ID, 'vehica_48173', true);                                   
                                    $images_gallery = get_post_meta($annonce->ID, 'vehica_19246');
                                    $first_img_src = wp_get_attachment_image_src($images_gallery[0], 'medium');
                                    $link_to_annonce = get_permalink($annonce->ID);
                                    $get_first_imm = get_post_meta($annonce->ID, 'vehica_19190', true); 
                                    
                                    $content = wp_trim_words(get_post_field('post_content', $annonce->ID), 8, '...');                                   
                                       
                                    
                                    if($annonce_auction_status == 'demarrer') { 

                                        echo'  
                                    
                                        <li class="afs-list-item list--list-item afs-car-' . $annonce->ID . '" data-id="' . $annonce->ID . '" data-gender="' . $auction_type_slug . '">  

                                            <div class="name" style="height: 1px;">' . $get_mark . '</div>

                                            <div class="afs-card__inner">

                                                <a href="' . $link_to_annonce . '" class="afs-card-link"></a>

                                                <div class="afs-list-item__featured">
                                                    <div class="afs-list-item__featured__inner in-progress-featured">En cours</div>    
                                                </div>   

                                                <div class="afs-list-item__image-bg" >
                                                    <div class="afs_list_item__image">
                                                        <img src="' . $first_img_src[0] . '" data-sizes="auto" alt="' . $get_title . '" class="lazyautosizes lazyloaded" sizes="248px" srcset="">
                                                    </div>
                                                </div>                                                        
                                                          
                                                <div class="afs-list-item__content">

                                                    <a href="' . $link_to_annonce . '"title="' . $get_title . '"class="afs-list-item__name">' . $get_title . '</a>                                                     

                                                    <div class="afs-card-card__separator"></div>';

                                                    if($auction_type_slug == 'autres-annonces')
                                                    {
                                                        echo $content;
                                                    }
                                                    else
                                                    {
                                                        echo'
                                                        
                                                        <div class="afs-list-item-card__info"> 
                                                            <div class="afs-list-item__info__single">' . $get_first_imm . '</div>
                                                            <div class="afs-list-item__info__single">' . number_format($get_km, 0, ".", "'") . ' Km</div>
                                                            <div class="afs-list-item__info__single">' . $get_boite . '</div>
                                                            <div class="afs-list-item__info__single">' . $get_carburant . '</div>       
                                                        </div>';   
                                                    }
                                                '</div>                          
                                                    
                                            </div>                                             

                                        </li>';                                      

                                    } 
                                    else if ($annonce_auction_status == 'soon') {

                                        echo' 
                                    
                                        <li class="afs-list-item list--list-item afs-car-' . $annonce->ID . '" data-id="' . $annonce->ID . '" data-gender="' . $auction_type_slug . '">     
                                        
                                            <div class="name" style="height: 1px;">' . $get_mark . '</div>
                                            
                                            <div class="afs-card__inner">

                                                <a href="' . $link_to_annonce . '" class="afs-card-link"></a>

                                                <div class="afs-list-item__featured">
                                                    <div class="afs-list-item__featured__inner soon-featured">A venir</div>    
                                                </div>   

                                                <div class="afs-list-item__image-bg" >
                                                    <div class="afs_list_item__image">
                                                        <img src="' . $first_img_src[0] . '" data-sizes="auto" alt="' . $get_title . '" class="lazyautosizes lazyloaded" sizes="248px" srcset="">
                                                    </div>
                                                </div>                                                        
                                                          
                                                <div class="afs-list-item__content">

                                                    <a href="' . $link_to_annonce . '"title="' . $get_title . '"class="afs-list-item__name">' . $get_title . '</a>                                                     

                                                    <div class="afs-card-card__separator"></div>';

                                                    if($auction_type_slug == 'autres-annonces')
                                                    {
                                                        echo $content;
                                                    }
                                                    else
                                                    {
                                                        echo '

                                                        <div class="afs-list-item-card__info"> 
                                                            <div class="afs-list-item__info__single">' . $get_first_imm . '</div>
                                                            <div class="afs-list-item__info__single">' . number_format($get_km, 0, ".", "'") . ' Km</div>
                                                            <div class="afs-list-item__info__single">' . $get_boite . '</div>
                                                            <div class="afs-list-item__info__single">' . $get_carburant . '</div>    
                                                        </div>';
                                                    }
                                                    
                                                '</div>                          
                                                    
                                            </div>                                             

                                        </li>';                                        

                                    } 
                                }
                            
                                                            
                                
                            
                        ?>                   
                    </ul>
                    <div class="no-result">Aucun résultat ne correspond à votre recherche</div>  
                    <ul class="pagination"></ul>  
                </div>
            </div>
        </div>
            
        <?php
    return ob_get_clean();

Avatar du membre
Mammouth du PHP | 1609 Messages

15 mars 2023, 17:31

Salut, soit tu fais 2 requêtes, soit tu filtres les résultats dans 2 tableaux (array_filter). Ensuite tu boucles sur l'un ou l'autre selon que le premier est rempli ou pas.
Développeur web depuis + de 20 ans