Erreur Unknown Requète SQL
Résolu/Fermé
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
-
11 déc. 2017 à 23:26
yg_be Messages postés 23399 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 - 14 déc. 2017 à 21:30
yg_be Messages postés 23399 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 décembre 2024 - 14 déc. 2017 à 21:30
A voir également:
- Erreur Unknown Requète SQL
- Erreur 0x80070643 - Accueil - Windows
- Usb\unknown - Télécharger - Optimisation
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Requête sql pix - Forum Python
10 réponses
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
11 déc. 2017 à 23:30
11 déc. 2017 à 23:30
Bonjour,
Déjà .. quand tu as un souci de requête ... commence par en faire un ECHO et regarde ce que ça donne...
Lorsque je vois :
Tu vois bien que tu as la table TBADH et la table TBPERS ... mais tu essaies de récupérer le champ publier de la table TBMANIF
Normal que ça plante.
Déjà .. quand tu as un souci de requête ... commence par en faire un ECHO et regarde ce que ça donne...
Lorsque je vois :
SELECT nom,prenom,email,annee,".TBMANIF.".publier FROM ".TBADH." LEFT JOIN ".TBPERS."
Tu vois bien que tu as la table TBADH et la table TBPERS ... mais tu essaies de récupérer le champ publier de la table TBMANIF
Normal que ça plante.
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
12 déc. 2017 à 08:57
12 déc. 2017 à 08:57
Bonjour
En fait je suis obligé de faire 2 requètes à ton avis? ou il y a une autre possibilité.
Merci
En fait je suis obligé de faire 2 requètes à ton avis? ou il y a une autre possibilité.
$requete = "SELECT publier FROM ".TBMANIF." WHERE ".TBMANIF.".publier = false"; $resultat = ExecRequete($requete,$connexion); $requete = "SELECT nom,prenom,email,annee FROM ".TBADH." LEFT JOIN ".TBPERS." ON ".TBPERS.".idpers = ".TBADH.".idpers WHERE annee = '$aadh' AND ".TBADH.".idclas = 2"; $resultat = ExecRequete($requete,$connexion);
Merci
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
12 déc. 2017 à 11:14
12 déc. 2017 à 11:14
Bonjour,
Pas nécessairement. Tout dépend de la relation qui relie la table TBMANIF et les tables TBADH et/ou TBPERS. Y a-t-il un champ qui fasse le lien entre elles ?
Xavier
Pas nécessairement. Tout dépend de la relation qui relie la table TBMANIF et les tables TBADH et/ou TBPERS. Y a-t-il un champ qui fasse le lien entre elles ?
Xavier
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
12 déc. 2017 à 14:24
12 déc. 2017 à 14:24
Sans lien entre ces tables, le mettre dans la clause WHERE n'a aucun sens. Qu'est-ce que tu espères obtenir ?
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
12 déc. 2017 à 13:36
12 déc. 2017 à 13:36
Bonjour
Justement il n'y a pas de lien entre la table TBMANIF et les 2 autres tables. Et j'ai une clause WHERE de cette table en fait.
Justement il n'y a pas de lien entre la table TBMANIF et les 2 autres tables. Et j'ai une clause WHERE de cette table en fait.
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
12 déc. 2017 à 13:45
12 déc. 2017 à 13:45
On ne comprend plus rien ...
Commence déjà par :
- Nous montrer les REQUETES sql (sans le code php )
(donc suite à un echo ... )
- Nous montrer la structure de tes tables (nous faire un dump par exemple)
- Nous expliquer EXACTEMENT ce que tu souhaites obtenir.
Seulement la.. nous pourrons envisager de te répondre....
Commence déjà par :
- Nous montrer les REQUETES sql (sans le code php )
(donc suite à un echo ... )
- Nous montrer la structure de tes tables (nous faire un dump par exemple)
- Nous expliquer EXACTEMENT ce que tu souhaites obtenir.
Seulement la.. nous pourrons envisager de te répondre....
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
12 déc. 2017 à 14:46
12 déc. 2017 à 14:46
Bonjour
Alors voilà...
J'ai un formulaire, lorsque je renseigne le formulaire, j'envoie un mail aux membres uniquement si je coche via une checkbox qui correspond aux champ "publier" de ma table TBMANIF si publier est à false le mail est envoyé si publier est à true aucun mail ne sera envoyé.
Ensuite je ne souhaite pas envoyer le mail à tous mais seulement à une certaine catégorie de membre.
Voici la condition correspondante à la table TBMANIF
Et pour sélectionner certains membres il y a les tables TBADH et TBPERS. Voici ce que ça donne je n'ai pas tout mis la page après la boucle while il y a l'envoi de mail sans interet pour mon problème.
Je vous remercie.
Alors voilà...
J'ai un formulaire, lorsque je renseigne le formulaire, j'envoie un mail aux membres uniquement si je coche via une checkbox qui correspond aux champ "publier" de ma table TBMANIF si publier est à false le mail est envoyé si publier est à true aucun mail ne sera envoyé.
Ensuite je ne souhaite pas envoyer le mail à tous mais seulement à une certaine catégorie de membre.
Voici la condition correspondante à la table TBMANIF
WHERE ".TBMANIF.".publier = false";
Et pour sélectionner certains membres il y a les tables TBADH et TBPERS. Voici ce que ça donne je n'ai pas tout mis la page après la boucle while il y a l'envoi de mail sans interet pour mon problème.
Je vous remercie.
switch($_POST['haction']) { case 'new': $requete = "INSERT INTO ".TBMANIF." (lieu,dmanif,event,idhorai,idindem,publier,descmanif,inscrip) VALUES ('$lieu','$dmanif','$event','$idhorai','$idindem','$publier','$descmanif','$inscrip')"; $typenr = "enregistré"; $reqaj = $requete; $resultat = ExecRequete($requete,$connexion); $requete = "SELECT publier FROM ".TBMANIF." WHERE ".TBMANIF.".publier = false"; $resultat = ExecRequete($requete,$connexion); $requete = "SELECT nom,prenom,email,annee FROM ".TBADH." LEFT JOIN ".TBPERS." ON ".TBPERS.".idpers = ".TBADH.".idpers WHERE annee = '$aadh' AND ".TBADH.".idclas = 4"; $resultat = ExecRequete($requete,$connexion); while ($r = mysql_fetch_object($resultat)) {
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
12 déc. 2017 à 14:58
12 déc. 2017 à 14:58
Et dans TBMANIF, tu n'as qu'une seule ligne ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
12 déc. 2017 à 15:13
12 déc. 2017 à 15:13
Comment ça je ne comprends pas.....
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
12 déc. 2017 à 15:24
12 déc. 2017 à 15:24
Par contre si je fait comme ça avec l'ancienne syntaxe tout fonctionne bien...
switch($_POST['haction']) { case 'new': $requete = "INSERT INTO ".TBMANIF." (lieu,dmanif,event,idhorai,idindem,publier,descmanif,inscrip) VALUES ('$lieu','$dmanif','$event','$idhorai','$idindem','$publier','$descmanif','$inscrip')"; $typenr = "enregistré"; $reqaj = $requete; $resultat = ExecRequete($requete,$connexion); $requete = "SELECT nom,prenom,email,annee,publier FROM ".TBPERS.",".TBADH.",".TBMANIF." WHERE ".TBPERS.".idpers = ".TBADH.".idpers AND ".TBMANIF.".publier = false AND annee='$aadh' AND idclas = 4 $resultat = ExecRequete($requete,$connexion); while ($r = mysql_fetch_object($resultat)) {
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
13 déc. 2017 à 08:40
13 déc. 2017 à 08:40
Bonjour,
Mais en fait, tu sais déjà ce que vaut TBMANIF.publier puisque tu viens de l'insérer...
Donc pourquoi ne pas simplement faire
Dans les requête SQL, on ne peut pas faire appel, dans 99,9% des cas, à une table sans donner une clause de jointure. Tu vois bien que tu utilises TBPERS et TBADH en les reliant avec TBPERS.idpers = TBADH.idpers. Il FAUT faire pareil avec TBMANIF sinon tu ne maîtrises pas le résultat de la requête (plus précisément, elle effectuerait un produit cartésien de tes tables, démultipliant le nombre de lignes en résultat)
Xavier
Mais en fait, tu sais déjà ce que vaut TBMANIF.publier puisque tu viens de l'insérer...
Donc pourquoi ne pas simplement faire
if ($publier == "ce que tu veux")...
Dans les requête SQL, on ne peut pas faire appel, dans 99,9% des cas, à une table sans donner une clause de jointure. Tu vois bien que tu utilises TBPERS et TBADH en les reliant avec TBPERS.idpers = TBADH.idpers. Il FAUT faire pareil avec TBMANIF sinon tu ne maîtrises pas le résultat de la requête (plus précisément, elle effectuerait un produit cartésien de tes tables, démultipliant le nombre de lignes en résultat)
Xavier
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
13 déc. 2017 à 07:19
13 déc. 2017 à 07:19
Bonjour,
Pouvez-vous me dire si avec la nouvelle syntaxe je suis obligé de faire deux requète s'ils vous plait.
Je vous remercie.
Pouvez-vous me dire si avec la nouvelle syntaxe je suis obligé de faire deux requète s'ils vous plait.
Je vous remercie.
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
13 déc. 2017 à 09:39
13 déc. 2017 à 09:39
Bonjour,
Merci pour tes explications, je regarde tous ça.
Merci pour tes explications, je regarde tous ça.
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
13 déc. 2017 à 14:55
13 déc. 2017 à 14:55
Bonjour,
Alors j'ai fait comme ça peut tu me dire si c'est cohérent s'il te plait, merci.
Pour te faire une récap...
Si publier est à false la requète SELECT choisit la catégorie de membre pour envoyer le mail sinon juste l'INSERT sera exécuté.
Alors j'ai fait comme ça peut tu me dire si c'est cohérent s'il te plait, merci.
Pour te faire une récap...
Si publier est à false la requète SELECT choisit la catégorie de membre pour envoyer le mail sinon juste l'INSERT sera exécuté.
if($_POST['submit']) { $publier = $_POST['publier']=='true' ? true : false; switch($_POST['haction']) { case 'new': $requete = "INSERT INTO ".TBMANIF." (lieu,dmanif,event,idhorai,idindem,publier,descmanif,inscrip) VALUES ('$lieu','$dmanif','$event','$idhorai','$idindem','$publier','$descmanif','$inscrip')"; $typenr = "enregistré"; $reqaj = $requete; $resultat = ExecRequete($requete,$connexion); if(!$publier) { $requete = "SELECT nom,prenom,email,annee FROM ".TBADH." LEFT JOIN ".TBPERS." ON ".TBPERS.".idpers = ".TBADH.".idpers WHERE annee = '$aadh' AND ".TBADH.".idclas = 4"; $resultat = ExecRequete($requete,$connexion); while ($r = mysql_fetch_object($resultat)) { ICI SCRIPT POUR ENVOIE DE MAIL } }
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 717
13 déc. 2017 à 15:47
13 déc. 2017 à 15:47
Faut vraiment que tu te mettes à appliquer les conseils qui sont donnés ici :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et puis... tu utilises l'ancienne extension mysql qui est OBSOLETE.
Il faut que tu passes à mysqli ou pdo...
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Et puis... tu utilises l'ancienne extension mysql qui est OBSOLETE.
Il faut que tu passes à mysqli ou pdo...
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
13 déc. 2017 à 22:26
13 déc. 2017 à 22:26
Comme le dit Jordane45, cette façon d'utiliser une base en php est quelque peu datée. Penser à tout migrer vers les nouvelles méthodes est indispensable pour la maintenance future de ton application.
Ceci dit, d'un point de vue purement fonctionnel, ce que tu as écrit me semble correct.
Ceci dit, d'un point de vue purement fonctionnel, ce que tu as écrit me semble correct.
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
13 déc. 2017 à 23:24
13 déc. 2017 à 23:24
Bonjour,
Merci en ce qui concerne mon soucis cela marche bien.
Pour vos conseils je les suis petit à petit. En fait j'ai toute une partie administration avec un .htaccess et .htpasswd qui est fonctionnel mais obselete j'en suis conscient et j'ai le site de notre association qui est construit en PDO avec requète préparée. Je suis en train d'y regarder mais j'avais fait un gros travail pour la partie admin que migrer vers les nouvelles méthodes me font peur par pour le travail mais étant donné que dans la partie administration l y a souvent des mises à jour à faire alors je ne sais pas trop comment il va falloir aborder le problème car je vais rester avec la partie admin sans aucune mise à jour pendant un certain temps, mais bon j'y réfléchis...
Merci encore
Merci en ce qui concerne mon soucis cela marche bien.
Pour vos conseils je les suis petit à petit. En fait j'ai toute une partie administration avec un .htaccess et .htpasswd qui est fonctionnel mais obselete j'en suis conscient et j'ai le site de notre association qui est construit en PDO avec requète préparée. Je suis en train d'y regarder mais j'avais fait un gros travail pour la partie admin que migrer vers les nouvelles méthodes me font peur par pour le travail mais étant donné que dans la partie administration l y a souvent des mises à jour à faire alors je ne sais pas trop comment il va falloir aborder le problème car je vais rester avec la partie admin sans aucune mise à jour pendant un certain temps, mais bon j'y réfléchis...
Merci encore
yg_be
Messages postés
23399
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 décembre 2024
1 556
14 déc. 2017 à 21:30
14 déc. 2017 à 21:30
bonsoir, peux-tu marquer comme résolu (via la roue dentée à droite du titre)?