Dans une clause HAVING, tu ne peux pas utiliser les alias créer dans le SELECT
c'est pourquoi Ryle te proposait
HAVING COUNT(*) >= 1
le message est clair, query() retourne un objet PDOStatement, et il n'est pas possible de concatener un objet avec une chaine.Alors j'ai suivi tes conseils et j'en suis donc à:
Mais une erreur se produit:if (empty($_REQUEST['ville'])) { $liste = $bdd->query("SELECT id_type_loisirs,COUNT(*) as nb FROM loisirs WHERE id_region = ".$region_id." AND `loisirs`.`date_fin_sortie` > NOW() AND `loisirs`.`valide` = 1 GROUP BY id_type_loisirs " ); $liste .= " GROUP BY id_type_loisirs HAVING nb >= 1 ORDER BY nb DESC LIMIT 0,30";
Catchable fatal error: Object of class PDOStatement could not be converted to string in C:\wamp\www\digital\list.php on line 978
cette ligne correspond à :
$liste .= " GROUP BY id_type_loisirs HAVING nb >= 1 ORDER BY nb DESC LIMIT 0,30";
Quel est le problème ?
$liste = $bdd->query("SELECT ... " );
$liste .= " GROUP BY ... ";
Tu fais une requête que tu exécutes et tu stocke le résultat dans ta variable $liste, puis tu essayes d'ajouter un bout de requête SQL dans le résultat.. $sql = "SELECT id_type_loisirs, COUNT(*) as nb FROM loisirs";
$sqL.= " WHERE id_region = " . $region_id . " AND date_fin_sortie > NOW() AND valide = 1 ";
$sql.= " GROUP BY id_type_loisirs HAVING COUNT(*) >= 1 ORDER BY nb DESC LIMIT 0,30";
$liste = $bdd->query($sql);$liste = "SELECT id_type_loisirs, COUNT(*) as nb FROM loisirs";
$liste.= " WHERE city = '".$_REQUEST['ville']."' AND date_fin_sortie > NOW() AND valide = 1 ";
$liste.= " GROUP BY id_type_loisirs HAVING COUNT(*) >= 1 ORDER BY nb DESC LIMIT 0,30";
$liste = $bdd->query($sql);
$nb = $liste->rowCount();
while($row = $liste->fetch(PDO::FETCH_ASSOC)) {
// Si il y a un loisir de renseignée et aucune page demandée
if (empty($_REQUEST['loisir']) && empty($_GET['page']) && !empty($_REQUEST['region']) && empty($_REQUEST['departement'])) {
echo '<li><a href="ville-de-'.$_REQUEST['ville'].'/activite-'.simplification(strtolower($aLoisirs[$row['id_type_loisirs']])).'.html">'.$aLoisirs[$row['id_type_loisirs']].'</a><span class="subDropdown plus">'.$nb.'</span></li>'."\n";
}
else if (!empty($_REQUEST['loisir']) && empty($_GET['page']) && !empty($_REQUEST['region']) && empty($_REQUEST['departement'])) {
echo '<li><a href="activite-'.simplification(strtolower($v)).'.html">'.$v.'</a><span class="subDropdown plus">'.$nb.'</span></li>'."\n";
}
else if (empty($_REQUEST['loisir']) && !empty($_GET['page']) && !empty($_GET['ville']) && !empty($_REQUEST['region']) && empty($_REQUEST['departement'])) {
echo '<li><a href="ville-de-'.$_REQUEST['ville'].'/activite-'.simplification(strtolower($v)).'.html">'.$v.'</a><span class="subDropdown plus">'.$nb.'</span></li>'."\n";
}
// Si il y a un département de renseignée et aucune page
else if(!empty($_GET['page']) && !empty($_REQUEST['loisir']) && !empty($_REQUEST['ville']) && !empty($_REQUEST['region'])){
echo '<li><a href="activite-'.simplification(strtolower($v)).'.html">'.$v.'</a><span class="subDropdown plus">'.$nb.'</span></li>'."\n";
}
}
Cependant $nb à toujours la même valeur, qu'est ce qui bloque encore ?