Page 1 sur 3

Erreur SQL SYNTAX

Posté : 25 févr. 2006, 15:47
par Dom!
Bonjour à tous,

J'effectue cette requete :
<? 
require_once('cagnes.php'); 
include ("conffile.php");
@ mysql_pconnect($hostname, $user, $passwd) or die ("Impossible de se connecter");
mysql_select_db($dbname);
?>
<?
  $age = $_POST['age'];  
  $id_categorie = $_POST['categorie'];  
  $entrain_out = $_POST['entrain_out'];  
  $sexe = $_POST['section'];  
  $joueur_out = $_POST['joueur_out'];  
  $dir_out = $_POST['dir_out'];  
  $numero = $_POST['numero'];  
  $nom = $_POST['nom'];  
  $abreviation = $_POST['abreviation'];  
  $photo_p = $_POST['photo_p'];  
  $photo_g = $_POST['photo_g'];  
  $id = $_POST['id']; 


$temp = implode(",",$entrain_out);

$temp1 = implode(",",$dir_out);

$temp2 = implode(",",$joueur_out);
 
 $sql_ajout = 'update tb_equipes set id_age='.$age.', id_categorie='.$categorie.', list_id_entraineur ="'.$temp.'", sexe='.$section.', liste_id_joueur ="'.$temp2.'", liste_id_dirigeant ="'.$temp1.'", numero ='.$numero.', nom ="'.$nom.'", abreviation ="'.$abreviation.'", photo_p ="'.$photo_p.'", photo_g ="'.$photo_g.'" where id_equipe = '.$id;
  $nbsql += 1;
  $result_ajout = mysql_query($sql_ajout)or die(mysql_error()); 
  $ecrire = 0;
  
echo $temp1;
echo $id;
 // echo "<meta http-equiv=\"refresh\" content=\"0; url=index.php?file=Page&name=menu_convoc\">";
?>
Et j'ai une erreur de ce type :

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 ' list_id_entraineur ="24,54", sexe="", liste_id_joueur ="97,124

Que veux dire cette erreur ?
Merci pour votre aide

Posté : 25 févr. 2006, 15:56
par HD
erreur de syntaxe
essaye ceci :
$sql_ajout = " update tb_equipes set
id_age='.$age.', 
id_categorie='.$categorie.', 
list_id_entraineur =' ".$temp." ', 
sexe='.$section.', 
liste_id_joueur =' ".$temp2." ', 
liste_id_dirigeant =' ".$temp1." ', 
numero ='.$numero.', 
nom =' ".$nom." ', 
abreviation =' ".$abreviation." ', 
photo_p =' ".$photo_p." ', 
photo_g =' ".$photo_g." ' 
where id_equipe = '.$id' "; 

Posté : 25 févr. 2006, 16:00
par Dom!
Oui effectivement je n'ai plus d'erreur SQL mais plus rien ne s'enregistre dans ma base :(

Posté : 25 févr. 2006, 16:05
par HD
avant la ligne
$sql_ajout = " update tb_equipes set 
met des
echo "$variable ok<br>"
pour toutes les variables que tu vas enregister
puis montre nous ce que ca affiche

Posté : 25 févr. 2006, 16:07
par Dom!
J'ai une erreur à la ligne 30 :
$sql_ajout = " update tb_equipes set 
???? bizare :shock:

Posté : 25 févr. 2006, 16:08
par Cyrano
Il y a des erreurs dans la proposition de HD, ce me semble. Proposition:
$sql_ajout = "UPDATE tb_equipes set
              id_age = ". $age .", 
              id_categorie = ". $categorie .", 
              list_id_entraineur = ". $temp .", 
              sexe = '". $section ."', 
              liste_id_joueur = '". $temp2 ."', 
              liste_id_dirigeant = '". $temp1 ."', 
              numero = ". $numero .", 
              nom = '". $nom ."', 
              abreviation = '". $abreviation ."', 
              photo_p = '". $photo_p ."', 
              photo_g = '". $photo_g ."' 
              WHERE id_equipe = ".$id;
Attention où tu mets des espaces et à tes concaténations, tu vas avoir des surprises sinon.

Posté : 25 févr. 2006, 16:09
par HD
$sql_ajout = "UPDATE tb_equipes set 
              id_age = ". $age .", 
(...)
ou plutot
$sql_ajout = "UPDATE tb_equipes set 
              id_age = '. $age .', 
(...)
:? :?:

Posté : 25 févr. 2006, 16:11
par Dom!
Avec la proposition de hd je n'ai plus d'erreur de syntaxe par contre avec la proposition de Cyrano j'ai une erreur de syntaxe :

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 ' list_id_entraineur = 24,54, sexe

JE ne comprend pas pourtant je suis sur de ma requete

Posté : 25 févr. 2006, 16:13
par HD
ca devrait marcher :
$sql_ajout = " update tb_equipes set 
id_age='. $age .', 
id_categorie='. $categorie .', 
list_id_entraineur ='. $temp .', 
sexe='. $section .', 
liste_id_joueur ='. $temp2 .', 
liste_id_dirigeant ='. $temp1 .', 
numero ='. $numero .', 
nom ='. $nom .', 
abreviation ='. $abreviation .', 
photo_p ='. $photo_p .', 
photo_g ='. $photo_g .' 
where id_equipe = '. $id' "; 

Posté : 25 févr. 2006, 16:17
par Dom!
Oui efectivement ca fonctionne mais rien en s'enregistre dans ma base je coprend pas la !!!!

je mets des echo ca m'affiche bien les valeurs mais dans ma base rien !

Posté : 25 févr. 2006, 16:19
par HD
j'ai edité le code precedent
et essaye aussi ca :
$sql_ajout = " update tb_equipes set 
id_age='. $age .', 
id_categorie='. $categorie .', 
list_id_entraineur ='. $temp .', 
sexe='. $section .', 
liste_id_joueur ='. $temp2 .', 
liste_id_dirigeant ='. $temp1 .', 
numero ='. $numero .', 
nom ='. $nom .', 
abreviation ='. $abreviation .', 
photo_p ='. $photo_p .', 
photo_g ='. $photo_g .' 
where id_equipe = '$id' "; 
c'est peut etre la condition WHERE et donc le id qui pose problème :?

Posté : 25 févr. 2006, 16:22
par Cyrano
HD : à quoi servent les points dans ta chaine : regarde la coloration syntaxique de ta requête et compare avec la mienne; tu devrais voir une différence notable, demande toi pourquoi ;)

Dom!, fais afficher ta requête et fais un copier/coller directement dans phpMyAdmin pour vérifier ce qui se passe.

Posté : 25 févr. 2006, 16:23
par Dom!
Ton dernier POST fonctionne OUF ! par contre j'ai deux points qui s'enregistre avant et aprés les données de list_id_dirigeant !

comme ceci : . 45,56 .

Posté : 25 févr. 2006, 16:27
par HD
autant pour moi :oops:
en tous cas je suis convaincu que l'erreur vient (si on applique le code de cyrano ) de se qui vient après
WHERE id_equipe =

Posté : 25 févr. 2006, 16:27
par HD
Ton dernier POST fonctionne OUF ! par contre j'ai deux points qui s'enregistre avant et aprés les données de list_id_dirigeant !

comme ceci : . 45,56 .
le dernier post de qui ?