Afficher des données en les ordonnant selon un champ d'une autre BDD
Résolu/Fermé
polarbird
Messages postés
105
Date d'inscription
vendredi 24 juin 2011
Statut
Membre
Dernière intervention
16 décembre 2023
-
Modifié le 6 mai 2020 à 22:15
polarbird Messages postés 105 Date d'inscription vendredi 24 juin 2011 Statut Membre Dernière intervention 16 décembre 2023 - 8 mai 2020 à 15:21
polarbird Messages postés 105 Date d'inscription vendredi 24 juin 2011 Statut Membre Dernière intervention 16 décembre 2023 - 8 mai 2020 à 15:21
A voir également:
- Afficher des données en les ordonnant selon un champ d'une autre BDD
- Effacer les données de navigation - Guide
- La zone de données passée à un appel système est insuffisante - Windows 11
- Afficher appdata - Guide
- Excel validation des données liste - Guide
4 réponses
yg_be
Messages postés
23415
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 janvier 2025
Ambassadeur
1 557
7 mai 2020 à 09:14
7 mai 2020 à 09:14
bonjour, ton ancienne requête ne retourne pas les enregistrements triés par date_creation?
polarbird
Messages postés
105
Date d'inscription
vendredi 24 juin 2011
Statut
Membre
Dernière intervention
16 décembre 2023
1
7 mai 2020 à 14:37
7 mai 2020 à 14:37
Bonjour yg_be,
Non, lorsque je met cette requête (celle avec JOIN), rien ne s'affiche, c'est comme si ça plantait. Malheureusement, comme je bosse sur serveur, je ne peux pas voir les erreurs SQL. Avec la requête simple, ça me les affiche en aléatoire, alors qu'avec le JOIN ça plante complètement.
Non, lorsque je met cette requête (celle avec JOIN), rien ne s'affiche, c'est comme si ça plantait. Malheureusement, comme je bosse sur serveur, je ne peux pas voir les erreurs SQL. Avec la requête simple, ça me les affiche en aléatoire, alors qu'avec le JOIN ça plante complètement.
yg_be
Messages postés
23415
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 janvier 2025
1 557
7 mai 2020 à 15:40
7 mai 2020 à 15:40
pourquoi ne peux-tu pas voir les erreurs SQL?
qu'est-ce qui t’empêche de tester la requête sans passer par un programme?
comment affichais-tu les résultats sans le JOIN?
comment tentes-tu d'afficher les résultats avec le JOIN?
qu'est-ce qui t’empêche de tester la requête sans passer par un programme?
comment affichais-tu les résultats sans le JOIN?
comment tentes-tu d'afficher les résultats avec le JOIN?
polarbird
Messages postés
105
Date d'inscription
vendredi 24 juin 2011
Statut
Membre
Dernière intervention
16 décembre 2023
1
>
yg_be
Messages postés
23415
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 janvier 2025
7 mai 2020 à 23:50
7 mai 2020 à 23:50
Les erreurs SQL ne s'affichent pas puisque je ne suis pas en local, mais sur serveur. Je ne pense pas que l'on puisse afficher les erreurs SQL ou PHP en mode serveur, alors qu'elle s'affichent automatiquement en local.
Sans le JOIN, j'affichais mes résultats avec la requête suivante
SELECT SQL_CALC_FOUND_ROWS * FROM tags WHERE tag_slug=:tag_slug LIMIT :limite OFFSET :debut
Avec le JOIN, je fais la même chose, mais avec la requête JOIN présentée plus haut.
Sans le JOIN, j'affichais mes résultats avec la requête suivante
SELECT SQL_CALC_FOUND_ROWS * FROM tags WHERE tag_slug=:tag_slug LIMIT :limite OFFSET :debut
Avec le JOIN, je fais la même chose, mais avec la requête JOIN présentée plus haut.
jordane45
Messages postés
38367
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 janvier 2025
4 721
Modifié le 8 mai 2020 à 08:46
Modifié le 8 mai 2020 à 08:46
Bonjour,
Ben si....
Vu que tu parles de PHP ... je t'invite à consulter ceci :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Puis, au cas où tu serais en PDO, ça :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Quoi qu'il en soit, ta question concerne une requête SQL ... il faut donc, avant d'essayer de l'utiliser dans un code PHP, commencer par la tester DIRECTEMENT dans sa BDD ( via phpmyadmin par exemple ou en lignes de commandes ).
Tu aurais donc vu, déjà, une erreur... de virgule manquante
Les erreurs SQL ne s'affichent pas puisque je ne suis pas en local, mais sur serveur. Je ne pense pas que l'on puisse afficher les erreurs SQL ou PHP en mode serveur,
Ben si....
Vu que tu parles de PHP ... je t'invite à consulter ceci :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Puis, au cas où tu serais en PDO, ça :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Quoi qu'il en soit, ta question concerne une requête SQL ... il faut donc, avant d'essayer de l'utiliser dans un code PHP, commencer par la tester DIRECTEMENT dans sa BDD ( via phpmyadmin par exemple ou en lignes de commandes ).
Tu aurais donc vu, déjà, une erreur... de virgule manquante
SELECT SQL_CALC_FOUND_ROWS t.art_id
polarbird
Messages postés
105
Date d'inscription
vendredi 24 juin 2011
Statut
Membre
Dernière intervention
16 décembre 2023
1
8 mai 2020 à 12:16
8 mai 2020 à 12:16
Bonjour jordane45,
Merci pour ta réponse. Je me rappelais vaguement d'un truc comme ça pour MySQL, mais je ne savais pas pour PDO. Je l'ai donc activé et maintenant je les vois sur serveur comme en local.
J'ai testé ma requête directement en SQL sur ma BDD, mais comme ma requête comprend des variables PHP, la requête n'aboutit à rien. J'ai donc remplacé mes variables PHP par des données réelles présentes dans ma BDD, sans succès non plus, puisque là où MySQL aurait dû me retourner 2 lignes pour ma requête, MySQL a retourné un résultat vide.
En testant cette requête
j'obtiens le message suivant :
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /home/arhljqap/public_html/ts.php:84 Stack trace: #0 /home/arhljqap/public_html/ts.php(84): PDOStatement->execute() #1 {main} thrown in /home/arhljqap/public_html/ts.php on line 84
Que sont les tokens ? Je n'ai jamais vu ça, je ne sais pas ce que c'est !?
Merci pour ta réponse
Cordialement
Merci pour ta réponse. Je me rappelais vaguement d'un truc comme ça pour MySQL, mais je ne savais pas pour PDO. Je l'ai donc activé et maintenant je les vois sur serveur comme en local.
J'ai testé ma requête directement en SQL sur ma BDD, mais comme ma requête comprend des variables PHP, la requête n'aboutit à rien. J'ai donc remplacé mes variables PHP par des données réelles présentes dans ma BDD, sans succès non plus, puisque là où MySQL aurait dû me retourner 2 lignes pour ma requête, MySQL a retourné un résultat vide.
En testant cette requête
SELECT SQL_CALC_FOUND_ROWS t.art_id, t.tag_name, t.tag_slug, t.tag_code, a.id_article, a.date_creation FROM tags t INNER JOIN articles a ON t.id_article = t.art_id WHERE t.tag_slug = ':tag_slug' ORDER BY a.date_creation DESC LIMIT :limite OFFSET :debut
j'obtiens le message suivant :
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /home/arhljqap/public_html/ts.php:84 Stack trace: #0 /home/arhljqap/public_html/ts.php(84): PDOStatement->execute() #1 {main} thrown in /home/arhljqap/public_html/ts.php on line 84
Que sont les tokens ? Je n'ai jamais vu ça, je ne sais pas ce que c'est !?
Merci pour ta réponse
Cordialement
jordane45
Messages postés
38367
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 janvier 2025
4 721
>
polarbird
Messages postés
105
Date d'inscription
vendredi 24 juin 2011
Statut
Membre
Dernière intervention
16 décembre 2023
8 mai 2020 à 12:20
8 mai 2020 à 12:20
Comme je te l'ai indiqué.. tu as déjà une erreur à la première ligne de ta requête
Il manque une virgule.
Ensuite.. les tocken . se sont les "variables nommées" qui se trouvent dans ta requête.
Ton autre problème.. c'est que tu as mis des quotes autour d'une de tes variables
Et il faut les retirer !
Il manque une virgule.
Ensuite.. les tocken . se sont les "variables nommées" qui se trouvent dans ta requête.
Ton autre problème.. c'est que tu as mis des quotes autour d'une de tes variables
':tag_slug'
Et il faut les retirer !
polarbird
Messages postés
105
Date d'inscription
vendredi 24 juin 2011
Statut
Membre
Dernière intervention
16 décembre 2023
1
>
jordane45
Messages postés
38367
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 janvier 2025
8 mai 2020 à 12:34
8 mai 2020 à 12:34
D'accord, merci pour ta réponse.
J'ai donc procédé en suivant tes conseils.
J'ai testé la requête suivante (en rajoutant la virgule après SQL_CALC_FOUND_ROWS et en omettant les 'quotes') :
et j'ai obtenu le message suivant :
Fatal error: Uncaught PDOException: 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 ' t.art_id, t.tag_name, t.tag_slug, t.tag_code, a.id_article, a' at line 1 in /home/arhljqap/public_html/ts.php:84 Stack trace: #0 /home/arhljqap/public_html/ts.php(84): PDOStatement->execute() #1 {main} thrown in /home/arhljqap/public_html/ts.php on line 84
J'ai réessayé en omettant la virgule après SQL_CALC_FOUND_ROWS :
et là ça fonctionne parfaitement, je suis parvenu à obtenir le résultat que je voulais, c'est-à-dire que les articles regroupés sous un même mot-clé sont ordonnés du plus récent au plus ancien, et je n'ai plus aucune erreur d'affichée.
J'en conclus que le problème venait bien des quotes.
Merci beaucoup pour ton aide Jordane ! ;)
J'ai donc procédé en suivant tes conseils.
J'ai testé la requête suivante (en rajoutant la virgule après SQL_CALC_FOUND_ROWS et en omettant les 'quotes') :
SELECT SQL_CALC_FOUND_ROWS, t.art_id, t.tag_name, t.tag_slug, t.tag_code, a.id_article, a.date_creation FROM tags t INNER JOIN articles a ON a.id_article = t.art_id WHERE t.tag_slug = :tag_slug ORDER BY a.date_creation DESC LIMIT :limite OFFSET :debut
et j'ai obtenu le message suivant :
Fatal error: Uncaught PDOException: 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 ' t.art_id, t.tag_name, t.tag_slug, t.tag_code, a.id_article, a' at line 1 in /home/arhljqap/public_html/ts.php:84 Stack trace: #0 /home/arhljqap/public_html/ts.php(84): PDOStatement->execute() #1 {main} thrown in /home/arhljqap/public_html/ts.php on line 84
J'ai réessayé en omettant la virgule après SQL_CALC_FOUND_ROWS :
SELECT SQL_CALC_FOUND_ROWS t.art_id, t.tag_name, t.tag_slug, t.tag_code, a.id_article, a.date_creation FROM tags t INNER JOIN articles a ON a.id_article = t.art_id WHERE t.tag_slug = :tag_slug ORDER BY a.date_creation DESC LIMIT :limite OFFSET :debut
et là ça fonctionne parfaitement, je suis parvenu à obtenir le résultat que je voulais, c'est-à-dire que les articles regroupés sous un même mot-clé sont ordonnés du plus récent au plus ancien, et je n'ai plus aucune erreur d'affichée.
J'en conclus que le problème venait bien des quotes.
Merci beaucoup pour ton aide Jordane ! ;)
yg_be
Messages postés
23415
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 janvier 2025
1 557
>
polarbird
Messages postés
105
Date d'inscription
vendredi 24 juin 2011
Statut
Membre
Dernière intervention
16 décembre 2023
8 mai 2020 à 14:10
8 mai 2020 à 14:10
pour info, MySQL va très bientôt arrêter d'accepter SQL_CALC_FOUND_ROWS.
polarbird
Messages postés
105
Date d'inscription
vendredi 24 juin 2011
Statut
Membre
Dernière intervention
16 décembre 2023
1
>
yg_be
Messages postés
23415
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 janvier 2025
8 mai 2020 à 15:21
8 mai 2020 à 15:21
Merci, je ne savais pas. Zut, il va falloir que je change toutes mes requêtes... Quelle alternative à SQL_CALC_FOUND_ROWS pour la pagination du coup stp ?
yg_be
Messages postés
23415
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 janvier 2025
Ambassadeur
1 557
8 mai 2020 à 10:00
8 mai 2020 à 10:00
as-tu testé ces requêtes en local, sans passer par un programme?
polarbird
Messages postés
105
Date d'inscription
vendredi 24 juin 2011
Statut
Membre
Dernière intervention
16 décembre 2023
1
8 mai 2020 à 12:41
8 mai 2020 à 12:41
Oui, finalement je les ai testé en local aussi. Merci pour ton aide ! ;)