Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1709 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  erreur de requete??MySQL server version for the right syntax to use ne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

erreur de requete??MySQL server version for the right syntax to use ne

n°1798876
keo64
Posté le 12-10-2008 à 17:22:21  profilanswer
 

bonjour a tous  
je souhaite testé mon scripte mais il ne fonctoinne pas  :(  
voici ma table t_commande
 
http://keokaz.fr/test.jpg
 
j'ai préalablement remplie manuellement avec phpadmin toute les case de la table t_commmande comme sur le lien donnée
et je souhaireais testé la reponse
 

Code :
  1. $sql="SELECT * FROM t_commande WHERE idfacture='8' ";
  2. $resultat=mysql_query($sql);
  3. $commande=mysql_fetch_array($resultat);
  4. $produit=$commande['idproduit'];


 
 
echo $produit;
 
pourquoi $produit n'affiche pas "l'idproduit 1"    :(   pourtant j'ai utilisé un fetch_array!
il m'affiche que la dernière ligne de réponse c'est a dire  3


Message édité par keo64 le 17-10-2008 à 18:05:21
mood
Publicité
Posté le 12-10-2008 à 17:22:21  profilanswer
 

n°1798877
dwogsi
Défaillance cérébrale...
Posté le 12-10-2008 à 17:25:30  profilanswer
 

Et ça affiche quoi?
Tu as bien établi ta connexion à la BBD avant de lancer une requête?
T'as bien sélectionné la base?
Tu fais l'affichage comment?
ça te sort une erreur?
 
Détails!


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1798878
keo64
Posté le 12-10-2008 à 17:28:34  profilanswer
 

le résultat ca affiche 3 seulement  mais normalement il devrait avoir un 1 avant le 3  :sweat:  
il n'y a pas d'erreur sur ma connection bdd
 
voici la version complete:
 

Code :
  1. <?php
  2. $liendb = mysql_connect('localhost','root','');
  3. mysql_select_db('try');
  4. $sql="SELECT nom FROM t_client WHERE idclient='3'";/*client 3=toto*/
  5. $resultat=mysql_query($sql);
  6. $boite=mysql_fetch_array($resultat);
  7. $nom=$boite['nom'];/*cherche le nom*/
  8. $sql="SELECT idproduit,quantite FROM t_commande WHERE idfacture='8' ";
  9. $resultat=mysql_query($sql);
  10. $commande=mysql_fetch_array($resultat);
  11. $produit=$commande['idproduit'];
  12. echo "$produit";
  13. mysql_close ($liendb);
  14. ?>


Message édité par keo64 le 12-10-2008 à 17:34:56
n°1798881
dwogsi
Défaillance cérébrale...
Posté le 12-10-2008 à 17:39:59  profilanswer
 

Ouai mais il ne te sort pas forcément les résultats dans l'ordre où tu les as saisi. Ajoute un ORDER BY à ta requête si tu les veux dans un ordre particulier ou précise un peu tes conditions pour n'avoir qu'un seul résultat.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1798885
keo64
Posté le 12-10-2008 à 17:51:40  profilanswer
 

merci de ta réponse
par contre sur la table t_commande je n'ai pas mis de clet et d'index est ton oblité d'en mettre , et s'il le faut le primaire je choisi idclient ou idfacture?

n°1798886
morphy
Posté le 12-10-2008 à 17:54:14  profilanswer
 

Si tu ne fais pas de boucle, c'est normal que tu n'aies qu'une ligne.
Essaye ça :  
 

Code :
  1. <?php
  2. $liendb = mysql_connect('localhost','root','');
  3. mysql_select_db('try');
  4. $sql="SELECT nom FROM t_client WHERE idclient='3'";/*client 3=toto*/
  5. $resultat=mysql_query($sql);
  6. $boite=mysql_fetch_array($resultat);
  7. $nom=$boite['nom'];/*cherche le nom*/
  8. $sql="SELECT idproduit,quantite FROM t_commande WHERE idfacture='8' ";
  9. $resultat=mysql_query($sql);
  10. // on fait une boucle sur le résultat de la requête
  11. while( $commande = mysql_fetch_array( $resultat ) )
  12. {
  13.    $produit = $commande['idproduit'];
  14.    echo $produit."<br/>";
  15. }
  16. mysql_close ($liendb);
  17. ?>


---------------
TFC4EVER
n°1798890
keo64
Posté le 12-10-2008 à 17:58:53  profilanswer
 

Merci en effet si je ne fait pas de boucle il ne vas pas cherché tous les résulat
merci a toi :)
 
maintenant comment récupéré le 1 et le 3
pour les transcrire en vis et en rondelle??
 
http://keokaz.fr/test.jpg


Message édité par keo64 le 12-10-2008 à 18:10:52
n°1798899
morphy
Posté le 12-10-2008 à 18:26:20  profilanswer
 

Essaye ça (j'ai pas testé) :
 

Code :
  1. <?php
  2. $liendb = mysql_connect('localhost','root','');
  3. mysql_select_db('try');
  4. $sql="SELECT nom FROM t_client WHERE idclient='3'";/*client 3=toto*/
  5. $resultat=mysql_query($sql);
  6. $boite=mysql_fetch_array($resultat);
  7. $nom=$boite['nom'];/*cherche le nom*/
  8. $sql="SELECT p.produit, c.quantite FROM t_produit p, t_commande c WHERE c.idproduit = p.idproduit AND c.idfacture='8' ";
  9. $resultat=mysql_query($sql);
  10. // on fait une boucle sur le résultat de la requête
  11. while( $commande = mysql_fetch_array( $resultat ) )
  12. {
  13.    $produit = $commande['p.produit'];
  14.    $qte = $commande['c.quantite'];
  15.    echo $produit." : ".$qte."<br/>";
  16. }
  17. ?>


---------------
TFC4EVER
n°1798903
keo64
Posté le 12-10-2008 à 18:35:03  profilanswer
 

merci pour ce sript mais le résultat il affiche  
:
:
 

n°1798906
morphy
Posté le 12-10-2008 à 18:41:46  profilanswer
 

Et comme ça ?
Sinon tes tables s'appellent bien t_client, t_commande et t_produit ?
 

Code :
  1. <?php
  2. $liendb = mysql_connect('localhost','root','');
  3. mysql_select_db('try');
  4. $sql="SELECT nom FROM t_client WHERE idclient='3'";/*client 3=toto*/
  5. $resultat=mysql_query($sql);
  6. $boite=mysql_fetch_array($resultat);
  7. $nom=$boite['nom'];/*cherche le nom*/
  8. $sql="SELECT p.produit as nom, c.quantite as qte FROM t_produit p, t_commande c WHERE c.idproduit = p.idproduit AND c.idfacture='8' ";
  9. $resultat=mysql_query($sql);
  10. // on fait une boucle sur le résultat de la requête
  11. while( $commande = mysql_fetch_array( $resultat ) )
  12. {
  13.    $produit = $commande['nom'];
  14.    $qte = $commande['qte'];
  15.    echo $produit." : ".$qte."<br/>";
  16. }
  17. ?>


---------------
TFC4EVER
mood
Publicité
Posté le 12-10-2008 à 18:41:46  profilanswer
 

n°1798925
keo64
Posté le 12-10-2008 à 19:44:02  profilanswer
 

merci merci :)
ca fonctionne je vois les 114 vis et les 50 rondelle!
 
par contre comment se fait t'il que avec cette ligne il reconnaisse quantite??
 
$qte=$commande['qte'];  
 
dans ma base de donné la champs s'appelle bien quantite
les lettres que tu appose avant tu peut mettre ce que tu veux (abc def..)....
ou il faut mettre les lettre p,c


Message édité par keo64 le 12-10-2008 à 19:53:09
n°1798927
morphy
Posté le 12-10-2008 à 19:58:22  profilanswer
 

Parce que dans la requete SQL j'ai créé un alias "qte" qui correspond au champ "quantite" de la table "c" :

Code :
  1. c.quantite as qte


Mais tu vas me dire que tu n'as pas de table "c".
Et bien "c" est lui même un alias pour la table "t_commande" :

Code :
  1. t_commande c


Par "alias" il faut comprendre "nom raccourci"
Bref étudie un peu la requête SQL et tu comprendras mieux :

Code :
  1. SELECT p.produit as nom, c.quantite as qte FROM t_produit p, t_commande c WHERE c.idproduit = p.idproduit AND c.idfacture='8'


Message édité par morphy le 12-10-2008 à 19:59:46

---------------
TFC4EVER
n°1798928
keo64
Posté le 12-10-2008 à 20:01:51  profilanswer
 

ok je l'avais pas vu le c.qte!! :)
en tous cas merci pour le coup de main


Message édité par keo64 le 13-10-2008 à 19:56:49
n°1798931
morphy
Posté le 12-10-2008 à 20:05:39  profilanswer
 

Ya pas de quoi  :)  
 :hello:


---------------
TFC4EVER
n°1799697
keo64
Posté le 13-10-2008 à 19:56:34  profilanswer
 

une autre question j'écris ce script:
je remet ma table idclient
http://keokaz.fr/test.jpg
 

Code :
  1. <?php
  2. $liendb = mysql_connect('localhost','root','');
  3. mysql_select_db('try');
  4. echo $_REQUEST['nom'];/*il affiche toto la saisie est ok*/
  5. /*cherche qui est le idclient*/
  6. $sql="SELECT idclient FROM t_client WHERE idclient='".$_REQUEST['nom']."'";/*client ?*/
  7. $resultat=mysql_query($sql);
  8. $idclient=mysql_fetch_array($resultat);
  9. echo $idclient;
  10. mysql_close($liendb);
  11. ?>


 
le résultat c'est toto mais je voudrais l'idclient??
 
j'ai trouvé j'ai pas fait de fetch array...


Message édité par keo64 le 13-10-2008 à 21:15:44
n°1800010
dwogsi
Défaillance cérébrale...
Posté le 14-10-2008 à 14:38:50  profilanswer
 

:o
Tu vois pas comme un problème là :
WHERE idclient='".$_REQUEST['nom']."'"
 
idclient = nom ? T'es sûr de ça ?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1800749
keo64
Posté le 15-10-2008 à 22:08:35  profilanswer
 

en effet la faute est idclient=['3']
merci de ta remarque:)

n°1800752
keo64
Posté le 15-10-2008 à 22:11:14  profilanswer
 

Maintenant je suis je suis passé a autre chose.
j'ai fait une script pour véfifier si la case est correctement remplie
je l'ai récupéré sur un bouquin , ce que je ne comprend pas c'est qu'il faut une erreur.
voici la script
 

Code :
  1. if(empty($_REQUEST['reference'])||
  2. empty($_REQUEST['nom'])||
  3. empty($_REQUEST['prix'])||
  4. empty($_REQUEST['description']))
  5. die ("ERREUR:tous les champs doivent être remplis." );
  6. if(preg_match("/^\d+(\.\d+)?$/",S_REQUEST['prix'])==false)
  7. die ("ERREUR: prix incorrecte." );


 
voici l'erreur afficher:
Parse error: syntax error, unexpected '[' in C:\wamp\www\boutique\adm_produits.php on line 12
 
la ligne 12 correpond au preg_match?
 

n°1800849
dwogsi
Défaillance cérébrale...
Posté le 16-10-2008 à 09:29:08  profilanswer
 

S_REQUEST['prix'] ?
Avec un S ça risque pas de marcher... Utilise plutôt un $ !


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1801081
keo64
Posté le 16-10-2008 à 17:20:06  profilanswer
 

décidément il faudrais que j'achète une loupe ...
cette ligne fonctionne.

n°1801591
keo64
Posté le 17-10-2008 à 17:54:16  profilanswer
 

j'ai fait ce script est php dit qu'il y a une erreur:
 

Code :
  1. $liendb=mysql_connect($bddserver,$bddlogin,$bddpassword);
  2. mysql_select_db($bdd);
  3. $sql="SELECT*FROM $table_produit"."WHERE idproduit IN(".implode(',',$_SESSION
  4. ['monpanier'])." )";
  5. $resultat=mysql_query($sql)or die(mysql_error());
  6. print("<table width='100%'>" );
  7. $tab=array_count_values($_SESSION['monpanier']);
  8. while ($prod=mysql_fetch_array($resultat))
  9. {
  10. print("<tr><td class='produit'>" );
  11. print("[".$prod['reference']."] ".$prod['nom']);
  12. print("(x".$tab[$prod['idproduit']]." )" );
  13. print("</td><td class='montant'>" );
  14. print($prod['prix']."  " );
  15. print("</td></tr>" );
  16. $montant +=$prod['prix']*$tab[$prod['idproduit']];
  17. $listeproduits.=','.$prod['reference'];
  18. }


 
php affiche cette erreur:
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 'IN(,3,2,3)' at line 1
 
la fonctionne implode est t'elle bien écrit ou j'ai oublité des " ou ':(
 

n°1801599
PunkRod
Digital Mohawk
Posté le 17-10-2008 à 18:16:22  profilanswer
 

la première virgule sans valeur doit gêner je pense :
IN(,3,2,3)'

n°1801622
keo64
Posté le 17-10-2008 à 19:30:36  profilanswer
 

merci de ta réponse
j'ai supprimer un ' et , par contre cela fait une erreur,
dans le bouqin c'est marqué que pour utiliser une chaine",2,3" il fallait faire split(",",",2,3)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  erreur de requete??MySQL server version for the right syntax to use ne

 

Sujets relatifs
Requete POSTerreur de tnsname
[SQL Server] Remplacer le nom d'une table dans des procédures stockéesRequête sql sous delphi
Erreur execution access 2000[Visual C++], erreur de compil d'un hello world
[SQL] Erreur syntaxe [RESOLU]SDL_GetKeyState version manette
Erreur lancement serveur Tomcat sur Eclipsexampp windows 2000 serveur mysql php5
Plus de sujets relatifs à : erreur de requete??MySQL server version for the right syntax to use ne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR