Problème de requète

Résolu
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - Modifié par msi79 le 9/10/2013 à 07:13
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 9 oct. 2013 à 15:42
Bonjour, quelqu'un peut il m'aider a retrouver l'erreur dans ma requète v? mercu d'avance.
voici l'erreur qui s'affiche :
Erreur SQL !
SELECT a.id_infoG,a.jugerV,a.JdateInt,a.MdateInt,a.AdateInt,a.JdateVerif,a.MdateVerif,a.AdateVerif,a.Jdatecod,a.Mdatecod,a.Adatecod,a.Jdatesaisi,a.Mdatesaisi,a.Adatesaisi,a.observationV,b.id_prejMat,b.pejudiceMateriels1,b.pejudiceMateriels2,b.pejudiceMateriels3,b.pejudiceMateriels4,b.pejudiceMateriels5,b.pejudiceMateriels6,b.pejudiceMateriels7,b.pejudiceMateriels8,b.autreprejudices,c.id,pereD,c.mereD,c.epouseD,d.id,d.nom_loc,e.id,e.nom_com,f.id,f.nom_sous_pref,g.id,g.nom_depart,h.matricule,h.nomV,h.prenomV,h.epouseV,h.lienV,h.autreLienV,h.sexeV,h.jourD,h.moisD,h.anneeD,h.ageD,h.nationaliteV,h.pieceV,h.autrepieceV,h.numeroPieceV,h.groupeEthniqueV,h.langue1,h.langue2,h.professionAct,h.professionD,h.religionP,h.autreReligion,h.lireV,h.radios_0,h.causedecedeD,h.observationV,h.ate_ohourd8,i.id_prejM,i.prejudiceMoraux1,i.prejudiceMoraux2,i.prejudiceMoraux3,i.prejudiceMoraux4,i.prejudiceMoraux5,i.prejudiceMoraux6,i.prejudiceMoraux7,i.prejudiceMoraux8,i.prejudiceMoraux9,i.prejudiceMoraux10 FROM infogenerale a , prejudicemateriel b , tb_parent c , tb_localite d, tb_commune e, tb_sous_prefecture f, tb_departement g , victime h ,prejudicemoraux i WHERE a.id_infoG = b.id_prejMat AND c.id = a.id_infoG AND d.id = a.id_infoG AND e.id = a.id_infoG AND f.id = a.id_infoG AND g.id = a.id_infoG AND h.matricule = a.id_infoG AND i.id_prejM = a.id_infoG AND a.id_infoG = '
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1'>
et voici le code
<?php
if(isset($_GET['id'])) $get_id = urldecode($_GET['id']);
// on crée la requête SQL
$sql = "SELECT a.id_infoG,a.jugerV,a.JdateInt,a.MdateInt,a.AdateInt,a.JdateVerif,a.MdateVerif,a.AdateVerif,a.Jdatecod,a.Mdatecod,a.Adatecod,a.Jdatesaisi,a.Mdatesaisi,a.Adatesaisi,a.observationV,b.id_prejMat,b.pejudiceMateriels1,b.pejudiceMateriels2,b.pejudiceMateriels3,b.pejudiceMateriels4,b.pejudiceMateriels5,b.pejudiceMateriels6,b.pejudiceMateriels7,b.pejudiceMateriels8,b.autreprejudices,c.id,pereD,c.mereD,c.epouseD,d.id,d.nom_loc,e.id,e.nom_com,f.id,f.nom_sous_pref,g.id,g.nom_depart,h.matricule,h.nomV,h.prenomV,h.epouseV,h.lienV,h.autreLienV,h.sexeV,h.jourD,h.moisD,h.anneeD,h.ageD,h.nationaliteV,h.pieceV,h.autrepieceV,h.numeroPieceV,h.groupeEthniqueV,h.langue1,h.langue2,h.professionAct,h.professionD,h.religionP,h.autreReligion,h.lireV,h.radios_0,h.causedecedeD,h.observationV,h.ate_ohourd8,i.id_prejM,i.prejudiceMoraux1,i.prejudiceMoraux2,i.prejudiceMoraux3,i.prejudiceMoraux4,i.prejudiceMoraux5,i.prejudiceMoraux6,i.prejudiceMoraux7,i.prejudiceMoraux8,i.prejudiceMoraux9,i.prejudiceMoraux10 FROM infogenerale a , prejudicemateriel b , tb_parent c , tb_localite d, tb_commune e, tb_sous_prefecture f, tb_departement g , victime h ,prejudicemoraux i WHERE a.id_infoG =  b.id_prejMat  AND c.id = a.id_infoG   AND d.id = a.id_infoG  AND  e.id = a.id_infoG  AND f.id = a.id_infoG AND g.id = a.id_infoG  AND  h.matricule = a.id_infoG  AND i.id_prejM = a.id_infoG    AND a.id_infoG  = '".$_GET['id']."' ";

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$res = mysql_num_rows($req);                               // 4 
?> 

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié par jordane45 le 9/10/2013 à 08:20
Bonjour.
Le message d'erreur se termine
sur le dernier And de ta clause
where par
='.
Autrement dit...to $_GET ['id'] semble être vide.
Ou avoir une valeur qui le dérange.
Que vaut ta variable dans ce cas precis ?
Encore une fois. ..ajoute un echo pour le vérifier.

Cordialement,
Jordane
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
9 oct. 2013 à 09:17
oui merci le problème est réglé . id mal renvoyé

mais dit mois est-ce que la longueur de la requête peut entrainer une lourdeur lors du chargement de la page . si oui quelle alternative pour éviter cela
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
9 oct. 2013 à 10:22
le problème est réglé

Si le souci est réglé.. pense à mettre la question en RESOLU.
Merci.


est-ce que la longueur de la requête peut entrainer une lourdeur lors du chargement de la page
La longueur de la requête en terme de longueur de la chaine de caractères.. non.
Par contre, une requête mal construite, qui va rechercher plein d'infos dans pleins de tables peut mettre du temps à s'éxectuter...et donc ralentir le chargement de ta page.
Pour éviter cela, pas d'autres choix que de revoir sa requête différemment.
Passer par des jointures par exemples.

PS: Lorsque tu écris tes requêtes, n'héistes pas à faire des retours à la ligne. Cela rend ta requête beaucoup plus lisible et comprehensible (pour toi .. . Ca ne change rien au fonctionnement. )
exemple:
$sql = "SELECT a.id_infoG
   ,a.jugerV
   ,a.JdateInt
   ,a.MdateInt
   ,a.AdateInt
   ,a.JdateVerif
   ,a.MdateVerif
   ,a.AdateVerif
   ,a.Jdatecod
   ,a.Mdatecod
   ,a.Adatecod
   ,a.Jdatesaisi
   ,a.Mdatesaisi
   ,a.Adatesaisi
   ,a.observationV
   ,b.id_prejMat
   ,b.pejudiceMateriels1
   ,b.pejudiceMateriels2
   ,b.pejudiceMateriels3
   ,b.pejudiceMateriels4
   ,b.pejudiceMateriels5
   ,b.pejudiceMateriels6
   ,b.pejudiceMateriels7
   ,b.pejudiceMateriels8
   ,b.autreprejudices
   ,c.id,pereD
   ,c.mereD
   ,c.epouseD
   ,d.id
   ,d.nom_loc
   ,e.id,e.nom_com
   ,f.id,f.nom_sous_pref
   ,g.id,g.nom_depart
   ,h.matricule
   ,h.nomV
   ,h.prenomV
   ,h.epouseV
   ,h.lienV
   ,h.autreLienV
   ,h.sexeV
   ,h.jourD
   ,h.moisD
   ,h.anneeD
   ,h.ageD
   ,h.nationaliteV
   ,h.pieceV
   ,h.autrepieceV
   ,h.numeroPieceV
   ,h.groupeEthniqueV
   ,h.langue1
   ,h.langue2
   ,h.professionAct
   ,h.professionD
   ,h.religionP
   ,h.autreReligion
   ,h.lireV
   ,h.radios_0
   ,h.causedecedeD
   ,h.observationV
   ,h.ate_ohourd8
   ,i.id_prejM
   ,i.prejudiceMoraux1
   ,i.prejudiceMoraux2
   ,i.prejudiceMoraux3
   ,i.prejudiceMoraux4
   ,i.prejudiceMoraux5
   ,i.prejudiceMoraux6
   ,i.prejudiceMoraux7
   ,i.prejudiceMoraux8
   ,i.prejudiceMoraux9
   ,i.prejudiceMoraux10
FROM infogenerale a
   , prejudicemateriel b
   , tb_parent c 
   , tb_localite d
   , tb_commune e
   , tb_sous_prefecture f
   , tb_departement g 
   , victime h 
   ,prejudicemoraux i 
WHERE a.id_infoG =  b.id_prejMat  
   AND c.id = a.id_infoG  
    AND d.id = a.id_infoG  
   AND  e.id = a.id_infoG  
   AND f.id = a.id_infoG
   AND g.id = a.id_infoG  
   AND  h.matricule = a.id_infoG  
   AND i.id_prejM = a.id_infoG    
   AND a.id_infoG  = '".$_GET['id']."' ";

0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
9 oct. 2013 à 15:09
vraiment ma requête marche mais ça tarde trop a charger . donnez moi une solution svp à ça.

AJAX peut il résoudre ce problème ? si oui comment m'y prendre .

NB : ce que j'ai écris comme requête est aussi une jointure donc je vois pas d'autre jointure encore.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié par jordane45 le 9/10/2013 à 15:44
ma requête marche mais ça tarde trop a charger . donnez moi une solution
Nous ne disposons pas de ta BDD... il ne nous est donc pas possible d'effectuer des tests.
Et puis, autant on peut t'aider lorsqu'il y a un problème technique identifié.. autant là.. pour optimiser une requête qui va chercher un max d'infos dans plein de tables différentes...pffff... ça risque d'être compliqué (hormis de conseiller de regarder les différentes formes de jointures existantes )

En tous cas :
Ceci est une nouvelle question.
donc merci de clôturer celle ci et d'en ouvrir une nouvelle.

AJAX peut il résoudre ce problème ?
Voyons voir.... Répond déjà à cette question : "A quoi sert AJAX ?"
-> tu devrais trouver la réponse à ta question assez facilement....


Concernant les jointures.. il en existe "différentes" formes.(je te laisse regarder sur le net)

De plus, penses, si ce n'est pas déjà fait, à déclarer des INDEX dans tes Tables.
http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
0
Rejoignez-nous