2 requetes en Une pour optimiser

Mammouth du PHP | 643 Messages

17 mars 2018, 16:00

Bonjour,
Je ne sais même pas si ce que je souhaite est possible d'où ma question.

J'ai une requete qui me permet d'afficher mes annonces.
$sql = 'SELECT * FROM `loisirs` JOIN regions ON regions.region_id = loisirs.id_region WHERE loisirs.date_fin_sortie >= NOW() AND loisirs.valide = 1 AND id_type_loisirs <> 1 ';
if (!empty($_GET['ville'])) {
	$sql .= ' AND loisirs.city = \''. getRealValue($_GET['ville']). '\'';
}
$req = $bdd->query($sql);

<?php
			  $sql .= " ORDER BY `id_loisirs` DESC LIMIT 4,4";
			  $req = $bdd->query($sql);  
			  while($ligne = $req->fetch(PDO::FETCH_ASSOC)){    
				  $dated = DateTime::createFromFormat('Y-m-d H:i:s', $ligne['date_debut_sortie']);
				  $ligne['date_debut_sortie'] = ucfirst($jour[$dated->format('N')]).' '.$dated->format('d').' '.ucfirst($mois[$dated->format('n')]);
				  $image = !empty($ligne['photo']) && file_exists('img-big-format/miniature/'.$ligne['photo']) ? '../img-big-format/miniature/'.$ligne['photo'] : '../img-big-format/remplacement/min/'.simplification($aLoisirs[$ligne['id_type_loisirs']]).'.jpg';
	
			  	
				echo'<li class="item col-lg-3 col-md-3 col-sm-3 col-xs-12">
                  <div class="item-inner">
                    <div class="item-img">
                      <div class="item-img-info"><a href="#" title="'.strtolower($ligne['titre']).' '.strtolower($ligne['city']).'" class="product-image"><img class="img-responsive thumbnai post-img" src="'.$ligne['photo'].'" alt="'.ucfirst(strtolower($ligne['titre'])).'" title="'.strtolower($ligne['titre']).' - '.ucfirst(strtolower($ligne['city'])).'"></a>
                        
                        <div class="like"></div>
                      </div>
                    </div>
                    <div class="item-info">
                      <div class="info-inner">
                        <div class="item-title"> <a title="'.strtolower($ligne['titre']).' '.strtolower($ligne['city']).'" href="#"> '.ucfirst($ligne['titre']).' </a> </div>
                        <div class="item-content">
                          <div class="item-price">
                            <div class="price-box">
                            <p>'.$ligne['date_debut_sortie'].'<br>
							'.ucfirst(strtolower($ligne['manufacturer'])).'-'.ucfirst(strtolower($ligne['city'])).'
							</p>
                            </div>
                          </div>       
                        </div>
                      </div>
                    </div>
                  </div>
                </li>';
				}
			  ?>
On se rerouve donc avec les 4 dernieres annonce c'est ok.
Maintenant à la suite j'aimerais faire une deuxième selection mais surtout pour les classé d'une facon différentes par date pour le coup
Dois je refaire un SELECT ou puis je travailler uniquement sur mon ORDER si oui comment svp ?
Merci à vous

Mammouth du PHP | 1967 Messages

18 mars 2018, 21:25

Tu peux stocker ta requète et sa clause ORDER BY dans des variables différentes.
$sql = 'SELECT * FROM `loisirs` JOIN regions ON regions.region_id = loisirs.id_region WHERE loisirs.date_fin_sortie >= NOW() AND loisirs.valide = 1 AND id_type_loisirs <> 1 ';
if (!empty($_GET['ville'])) {
  $sql .= ' AND loisirs.city = \''. getRealValue($_GET['ville']). '\'';
}

        $post_sql = " ORDER BY `id_loisirs` DESC LIMIT 4,4";
        $req = $bdd->query($sql.$post_sql);  
        while($ligne = $req->fetch(PDO::FETCH_ASSOC)){   ...

 $post_sql = "NOUVELLES CLAUSES ORDER";
        $req = $bdd->query($sql.$post_sql);  
        while($ligne = $req->fetch(PDO::FETCH_ASSOC)){   ...
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube