Eléphant du PHP |
372 Messages
31 juil. 2016, 11:06
Ca se complique quand même, pour rappel le but final et d'établir un ordre par defaut
1/ on affiche les annonce
heart
2/ Les annonces
différentes de id_usuer 999
3/ Les annonces de id_usuer 999 mais en les affichant par type de loisirs
En testant la requête je me retrouve avec une erreur:
Requete:
$sql = ' SELECT * FROM loisirs lo JOIN
(
SELECT MAX(id_type_loisirs) AS max_id, id_type_loisirs FROM loisirs GROUP BY id_type_loisirs
) req
ON lo.id_type_loisirs = req.max_id
ORDER BY CASE
WHEN heart = 1 THEN 3
WHEN id_simply_user != 999 THEN 2
WHEN id_simply_user = 999 THEN 1
END DESC
LIMIT '.intval(($page-1)*$parPage).", ".$parPage;
Erreur:
Warning: PDO::query(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT * FROM loisirs lo JOIN ( ' at line 1 in /home/www/lasortie/list.php on line 326
Fatal error: Call to a member function rowCount() on a non-object in /home/www/lasortie/list.php on line 327
Les lignes en question sont: ( 326 et ligne 327 )
$req = $bdd->query($sql);
$nb2 = $req->rowCount();
if($nb2 > 0) {
Merci à vous
PS, la requete executive nous donne :
SELECT * FROM loisirs JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE loisirs.date_fin_sortie > NOW() AND loisirs.valide = 1
AND regions.url = 'rhone-alpes' AND loisirs.city = 'Grenoble'
SELECT * FROM loisirs lo JOIN ( SELECT MAX(id_type_loisirs) AS max_id, id_type_loisirs FROM loisirs GROUP BY id_type_loisirs ) req ON lo.id_type_loisirs = req.max_id
ORDER BY CASE WHEN heart = 1 THEN 3
WHEN id_simply_user != 999 THEN 2
WHEN id_simply_user = 999 THEN 1
END DESC
J'ai testé mais sains succés :
// Ordre d'affichage
$sql .= " ORDER BY CASE
WHEN heart = 1 THEN 3
WHEN id_simply_user != 999 THEN 2
WHEN id_simply_user = 999 GROUP BY id_type_loisirs THEN 3
END DESC
LIMIT ".intval(($page-1)*$parPage).", ".$parPage;
Le problème est que par rapport à mon code je dois commencer par :
// Ordre d'affichage
$sql .= " ORDER BY....