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

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

Marsh Posté le 12-10-2008 à 17:22:21    

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
Reply

Marsh Posté le 12-10-2008 à 17:22:21   

Reply

Marsh Posté le 12-10-2008 à 17:25:30    

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})/
Reply

Marsh Posté le 12-10-2008 à 17:28:34    

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
Reply

Marsh Posté le 12-10-2008 à 17:39:59    

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})/
Reply

Marsh Posté le 12-10-2008 à 17:51:40    

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?

Reply

Marsh Posté le 12-10-2008 à 17:54:14    

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
Reply

Marsh Posté le 12-10-2008 à 17:58:53    

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
Reply

Marsh Posté le 12-10-2008 à 18:26:20    

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
Reply

Marsh Posté le 12-10-2008 à 18:35:03    

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

Reply

Marsh Posté le 12-10-2008 à 18:41:46    

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
Reply

Marsh Posté le 12-10-2008 à 18:41:46   

Reply

Marsh Posté le 12-10-2008 à 19:44:02    

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
Reply

Marsh Posté le 12-10-2008 à 19:58:22    

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
Reply

Marsh Posté le 12-10-2008 à 20:01:51    

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
Reply

Marsh Posté le 12-10-2008 à 20:05:39    

Ya pas de quoi  :)  
 :hello:


---------------
TFC4EVER
Reply

Marsh Posté le 13-10-2008 à 19:56:34    

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
Reply

Marsh Posté le 14-10-2008 à 14:38:50    

: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})/
Reply

Marsh Posté le 15-10-2008 à 22:08:35    

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

Reply

Marsh Posté le 15-10-2008 à 22:11:14    

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?
 

Reply

Marsh Posté le 16-10-2008 à 09:29:08    

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})/
Reply

Marsh Posté le 16-10-2008 à 17:20:06    

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

Reply

Marsh Posté le 17-10-2008 à 17:54:16    

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 ':(
 

Reply

Marsh Posté le 17-10-2008 à 18:16:22    

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

Reply

Marsh Posté le 17-10-2008 à 19:30:36    

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)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed