pb d'insertion de données dans une table

Eléphant du PHP | 120 Messages

02 mai 2006, 10:43

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 ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 mai 2006, 10:46

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       
  }
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

02 mai 2006, 10:46

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 ;)

Eléphant du PHP | 120 Messages

02 mai 2006, 11:15

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 mai 2006, 11:18

Autour d'un nom de table, il faut utiliser le caractère ALT+è => ` non pas l'apostrophe ' ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 493 Messages

02 mai 2006, 11:19

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

Eléphant du PHP | 120 Messages

02 mai 2006, 12:13

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 ?

Eléphant du PHP | 120 Messages

02 mai 2006, 12:16

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 ?

Eléphant du PHP | 493 Messages

02 mai 2006, 12:18

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 ? :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 mai 2006, 12:22

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 120 Messages

02 mai 2006, 12:24

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 mai 2006, 12:29

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 120 Messages

02 mai 2006, 12:33

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.

Eléphant du PHP | 120 Messages

02 mai 2006, 12:35

nikel ! ca marche !

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