Page 1 sur 1

pb d'insertion de données dans une table

Posté : 02 mai 2006, 10:43
par nabs
slt a tous,
j'ai un petit souci d'enregistrement dans une table en faite. je fais appel à un objet en lui envoyant les parametres a enregistrer, celui ci doit faire une concatenation de la requete dans la méthode appelée et et executer la methode, seulement a l'execution les infos ne sont pas stockées. voici le code :

création de l'objet :
$commande=new Commande("formation",$commentaire,$idform,$manager,$cel->id);
constructeur de l'objet :
function Commande($type,$commentaire,$idform,$manager,$idcel)
 {
  if($type=="formation")
  {
   $query="INSERT INTO 'fprev' ('idform','idcel','manager','commentaire') VALUES('";
   $query=$query.$idform."','".$idcel."','".$manager."','".$commentaire."');";
   $requete=mysql_query($query);       
  }
}
que se passe-t-il avec ma requete ?

Re: pb d'insertion de données dans une table

Posté : 02 mai 2006, 10:46
par zeus
2 conseils qui devraient te permettre de résoudre tout tes problèmes de requetes :
1/ affiche les messages d'erreur avec or die(mysql_error())
2/ affiche les requetes générées en cas d'erreur pour les tester sous phpMyAdmin
function Commande($type,$commentaire,$idform,$manager,$idcel) {
  if($type=="formation") {
   $query="INSERT INTO 'fprev' ('idform','idcel','manager','commentaire') VALUES('";
   $query=$query.$idform."','".$idcel."','".$manager."','".$commentaire."');";
   $requete=mysql_query($query) or die($query."<br />".mysql_error()); //En cass d'erreur d'execution, affichage de l'erreur       
  }
}

Posté : 02 mai 2006, 10:46
par ouckileou
Quand une requête ne renvoie pas (ou ne fait pas) ce que l'on attend :
- faire afficher les erreurs MySQL (ou autre)
ex :
mysql_query($requete) or die (mysql_error());
- afficher le SQL généré (c'est ce code qui est important) :
echo $requête;
- regarder si rien ne cloche
- tester directement dans MySQL (ex : via phpMyAdmin) et ajuster

Fais ça, dis nous ce que ça donne et on pourra t'aider ;)

Posté : 02 mai 2006, 11:15
par nabs
comme conseillé j'ai rajouté l'affichage de l'erreur et voici ce qui apparait :
Erreur de syntaxe près de ''fprev' ('idform','idcel','manager','commentaire') VALUES(2,5,'B' à la ligne 1
et franchement j'arrive pas a comprendre cette erreur. j'essaye avec phpmyadmin et il me génère la meme erreur. si vous la voyez merci de bien vouloir me l'indiquer car la je suis aveugle.

Posté : 02 mai 2006, 11:18
par zeus
Autour d'un nom de table, il faut utiliser le caractère ALT+è => ` non pas l'apostrophe ' ;)

Posté : 02 mai 2006, 11:19
par Vaedan
Il manque un '.' (point) !!!
function Commande($type,$commentaire,$idform,$manager,$idcel)
{
  if($type=="formation")
  {
   $query="INSERT INTO fprev ('idform','idcel','manager','commentaire') VALUES('";
   $query .=$query.$idform."','".$idcel."','".$manager."','".$commentaire."');";
   //     ^
   // Ici le point
   $requete=mysql_query($query);       
  }
}
EDIT: ptite correction

Posté : 02 mai 2006, 12:13
par nabs
voici la correction :
   $query="INSERT INTO `fprev` (`idform`,`idcel`,`manager`,`commentaire`) VALUES('";
   $query.=$query.$idform."','".$idcel."','".$manager."','".$commentaire."');";
   $requete=mysql_query($query)or die($query."<br />".mysql_error()); 
et voici le resultat :
Erreur de syntaxe près de '4','5','NOM Prenom','test ')' à la ligne 1
que se passe-t-il ? j'ai franchement tout essayé. il doit surement y avoir un truc que j'ai pas encore fait mais lequel ?

Posté : 02 mai 2006, 12:16
par nabs
petite indication, il y a dans cette table un champs que je ne rempli pas par cette requete car c'est la clé primaire primaire qui doit s'autoincrémenter, devrai-je la faire apparaitre dans la requete ou c'est pas necesaire ?

Posté : 02 mai 2006, 12:18
par Vaedan
Pour le debug :
$requete=mysql_query($query)or die($query."<br />".mysql_error());
Or, dans l'erreur que tu nous montes, il n'y a pas le $query. Pourrait on l'avoir ? :)

Posté : 02 mai 2006, 12:22
par zeus
Est-ce que dans les champs de ta base de données, tu n'aurais pas des champs numeric ou decimal ?

dans ce cas, il ne faut pas les encadrer par des '

Sinon, si tu as un auto-increment, ce n'est pas la peine de le préciser, il se rempli tout seul ;)

Posté : 02 mai 2006, 12:24
par nabs
ok alors voici la derniere modif et la derniere erreur complete :
   $query="INSERT INTO `fprev` (`idform`,`idcel`,`manager`,`commentaire`,ìdfp`) VALUES('";
   $query=$query.$idform."','".$idcel."','".$manager."','".$commentaire."','');";
   $requete=mysql_query($query)or die($query."<br />".mysql_error()); 
erreur :
INSERT INTO `fprev` (`idform`,`idcel`,`manager`,`commentaire`,ìdfp`) VALUES('2','5','NOM Prenom','test','');
Erreur de syntaxe près de ') VALUES('2','5','NOM Prenom','test','')' à la ligne 1

Posté : 02 mai 2006, 12:29
par zeus
quand tu fait un `, je te conseille de faire un espace pour valider le caractère ;)

tu as un ì au lieu d'un `i dans le dernier champs de ta requete ;)

Posté : 02 mai 2006, 12:33
par nabs
Est-ce que dans les champs de ta base de données, tu n'aurais pas des champs numeric ou decimal ?
oui j'ai des champs numeriques (idform et idcel) mais en faite en utilisant le phpmyadmin, j'ai vu que les requetes qui étaient executées integraient les cotes (') meme pour les champs numeriques.

Posté : 02 mai 2006, 12:35
par nabs
nikel ! ca marche !

en effet c'etait le "ì" qyui bloquait avec cette derniere modif. merci bcp zeus, et merci a tous.