Se connecter avec
S'enregistrer | Connectez-vous

probleme update base de donné mysql via un formulaire

Dernière réponse : dans Programmation

Salut à tous,
je suis actuellement en stage et je débute en php.
On m'a dans un premier temps demandé de créer un formulaire afin de remplir une base de donnée MYSQL ce que j ai réussi à faire après quelques galères. :pt1cable: 
Ma tache consiste maintenant à modifier ce formulaire et mon problème viens de la requête update que voici :
  1. $sql = "UPDATE `client` set id=NULL, nom='".$nom."', login='".$login."', pass='".$pass."', adresse='".$adresse."', cp='".$cp."', ville='".$ville."', tel='".$tel."', fax='".$fax."', email='".$email."' WHERE id=".$_GET['rec'];
  2. $res = mysql_query($sql);

Je n'arrive pas à trouver la solution !
J'en ai le cerveau qui brule ! :ouch: 

Merci d'avance !

EDIT: voici le message d'erreur que j'obtiens:
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 '' at line 1
Lassé par la pub ? Créez un compte

Citation :
C'est quoi ces anti-quotes ?
Pourquoi faire un SET id=NULL ?
As-tu des apostrophes dans tes variables ?


salut,
Je suis vraiment débutant voila le code qui fonctionne pour le premier formulaire il rempli la BDD.
il faudrait juste remplace la requete INSERT par UPDATE je pense....
  1. // vérification des champs
  2. if (empty($_POST['nom']))
  3. $message .= "nom<br/>";
  4. if (empty($_POST['login']))
  5. $message .= "login<br/>";
  6. if (empty($_POST['pass']))
  7. $message .= "pass<br/>";
  8. if (empty($_POST['adresse']))
  9. $message .= "adresse<br/>";
  10. if (empty($_POST['cp']))
  11. $message .= "cp<br/>";
  12. if (empty($_POST['ville']))
  13. $message .= "ville<br/>";
  14. if (empty($_POST['tel']))
  15. $message .= "tel<br/>";
  16. if (empty($_POST['fax']))
  17. $message .= "fax<br/>";
  18. if (empty($_POST['email']))
  19. $message .= "email<br/>";
  20.  
  21. // si un champ est vide, on affiche le message d'erreur
  22. if (strlen($message) > strlen($msg_erreur)) {
  23.  
  24. echo $message;
  25.  
  26. // sinon c'est ok
  27. } else {
  28.  
  29. foreach($_POST as $index => $valeur) {
  30. $$index = mysql_real_escape_string(trim($valeur));
  31. }
  32.  
  33. $interets = $_POST['interets'];
  34. $sqlinterets = '';
  35. for ($i=0; $i<count($interets); $i++)
  36. {
  37. $sqlinterets .= $interets[$i];
  38. $sqlinterets .= ', ';
  39. }
  40.  
  41.  
  42. $sql = "INSERT INTO `client` (`id`, `nom`, `login`, `pass`, `adresse`, `cp`, `ville`, `tel`, `fax`, `email`) VALUES (NULL, '".$nom."','".$login."', '".$pass."', '".$adresse."', '".$cp."', '".$ville."', '".$tel."', '".$fax."', '".$email."')";
  43. $res = mysql_query($sql);
  44.  
  45. if ($res) {
  46. echo $msg_ok;
  47. } else {
  48. echo mysql_error();
  49. }


Après pour la syntaxe utilisé je peut pas trop de dire pourquoi il y a des anti-quotes, pour id=NULL c'est la clef de ma table et elle s'autoincremente.

Voila ce que je peux te dire... :cry: 
Expert Programmation

Tu as cette requête qui fonctionne :
  1. INSERT INTO `client`
  2. ( `id`, `nom`, `login`, ... )
  3. VALUES ( NULL, 'venom', '551', ... )

Et tu te retrouves avec une requête qui ressemble à ça :
  1. UPDATE `client`
  2. SET nom = 'venom',
  3. login = '511',
  4. ...
  5. WHERE id=123456


Sans connaître MySQL, j'écrirais ça :
  1. UPDATE `client`
  2. SET `nom` = 'venom',
  3. `login` = '511',
  4. ...
  5. WHERE id=123456

Citation :
Tu as cette requête qui fonctionne :
  1. INSERT INTO `client`
  2. ( `id`, `nom`, `login`, ... )
  3. VALUES ( NULL, 'venom', '551', ... )

Et tu te retrouves avec une requête qui ressemble à ça :
  1. UPDATE `client`
  2. SET nom = 'venom',
  3. login = '511',
  4. ...
  5. WHERE id=123456


Sans connaître MySQL, j'écrirais ça :
  1. UPDATE `client`
  2. SET `nom` = 'venom',
  3. `login` = '511',
  4. ...
  5. WHERE id=123456



Merci de me consacrer un peut de ton temps je vais tester ca !
Je te tiens au courant.

Citation :
Salut à tous,
je suis actuellement en stage et je débute en php.
On m'a dans un premier temps demandé de créer un formulaire afin de remplir une base de donnée MYSQL ce que j ai réussi à faire après quelques galères. :pt1cable: 
Ma tache consiste maintenant à modifier ce formulaire et mon problème viens de la requête update que voici :
  1. $sql = "UPDATE `client` set id=NULL, nom='".$nom."', login='".$login."', pass='".$pass."', adresse='".$adresse."', cp='".$cp."', ville='".$ville."', tel='".$tel."', fax='".$fax."', email='".$email."' WHERE id=".$_GET['rec'];
  2. $res = mysql_query($sql);

Je n'arrive pas à trouver la solution !
J'en ai le cerveau qui brule ! :ouch: 

Merci d'avance !

EDIT: voici le message d'erreur que j'obtiens:
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 '' at line 1


Salut,
si tu fais un UPDATE c'est que ton client existe déjà, donc pas besoin d'updater l'id.
moi j'ferais
  1. $sql = "UPDATE client SET nom='$nom', login='$login', pass='$pass', adresse='$adresse', cp='$cp', ville='$ville', tel='$tel', fax='$fax', email='$email' WHERE id=$_GET['rec']";
  2.  
  3. mysql_query($sql) or die("Erreur SQL ! ".$sql."<br>".mysql_error());

Vérifie aussi que tu envoi bien l'id :
$_GET['rec'] signifie que tu appelles ta page, genre, page.php?rec=15 si l'id = 15

voilà j'espère que ca t'aidera
a+
Lassé par la pub ? Créez un compte