Problème Requête UPDATE vers MySql

Bonjour,
Je vous explique le contexte de mon problème!
J'ai un formulaire de contact que tout utilisateur remplit, et j'aimerai que celui-ci une fois inscrit puisse revenir sur son profil et modifier ses données!

Voici mon code
Je récupère les noms des champs dans le formulaire :
<form method="POST" action="valider.php" name="f">
<input type="hidden" name="id" value="<? echo $res['idmaitre']; ?>">
<input type="hidden" name="nom" value="<? echo $res['nommaitre']; ?>">
<input type="hidden" name="prenom" value="<? echo $res['prenommaitre']; ?>">
<input type="hidden" name="email" value="<? echo $res['mailmaitre']; ?>">
<input type="hidden" name="mdp" value="<? echo $res['mdpmaitre']; ?>">
<input type="hidden" name="nom1" value="<? echo $res['nomanimal']; ?>">
<input type="hidden" name="deces" value="<? echo $res['datedecesanimal']; ?>">
<input type="hidden" name="age" value="<? echo $res['ageanimal']; ?>">
<input type="hidden" name="commentaire" value="<? echo $res['commentaireanimal']; ?>">
<input type="hidden" name="animal" value="<? echo $res['catanimal']; ?>">
<input type="hidden" name="race" value="<? echo $res['raceanimal']; ?>">
</form>

Et voici ma requête dans ma page "valider.php" :
$update=mysql_query ("UPDATE Maitre
SET nommaitre='".$nom."',
prenommaitre='".$prenom."',
mailmaitre='".$email."',
mdpmaitre='".$mdp."',
etatmaitre='A'
WHERE idmaitre='".$idmaitre."' ");

mysql_query($update) or die ("plantage de l'insertion : ".$update);

Voilà l'état de la situation.
La page "valider.php" afficher le message d'erreur dans l'echo "plantage de l'insertion", et rien ne se modifie sous MySql.

Y'aurai t'il de l'aide svp!
Merci d'avance.
Configuration: Windows XP
Internet Explorer 7.0

4 réponses

  1. Salut,

    Essaye d'afficher $update avant de l'exécuter et donne nous le résultat :
    $update="UPDATE Maitre SET nommaitre='".$nom."', prenommaitre='".$prenom."', mailmaitre='".$email."', mdpmaitre='".$mdp."', etatmaitre='A'";
    
    echo $update;
    
    mysql_query($update) or die ("plantage de l'insertion");
    1. La page "valider.php" affiche ceci :
      plantage de l'insertion : 1

      et avec le code echo $update, ceci :
      1plantage de l'insertion : 1

      Voilà chef !
    2. La page "valider.php" affiche ceci :
      plantage de l'insertion : 1

      et avec le code echo $update, ceci :
      1plantage de l'insertion : 1

      Y'a une soluce?
      Merci
  2. Bizarre que l'affichage de $update te donne 1. Normalement il devrait t'afficher ta requête SQL qu'il va exécuter. Tu es sûr de bien avoir recopié mon code ?
    1. Re!
      Oui effectivement erreur de ma part Désolé!

      La page "valider.php" renvoi ceci :
      UPDATE Maitre SET nommaitre='Zidane', prenommaitre='Zinedine', mailmaitre='zizou@zizou.com', mdpmaitre='zizou', etatmaitre='A'plantage de l'insertion2 :
  3. Essaye de faire ceci :
    $update="UPDATE Maitre SET nommaitre='".$nom."', prenommaitre='".$prenom."', mailmaitre='".$email."', mdpmaitre='".$mdp."', etatmaitre='A'";
    
    $result = mysql_query($update);
    
    if(!$result)
       die('Requête invalide : ' . mysql_error());
    else
       echo "Mise à jour effectuée";
    
    1. Alors là petit amélioration mais problème dans la bdd MySql!

      le nouveau code renvoi ceci :
      Mise à jour effectuéeplantage de l'insertion2 :

      et le pb sous mysql est que en fait:
      j'avais des inscrits de ce style :
      1. zidane zinedine zzizou@.com
      2. rafael nadal rafa@.com
      3. blanc laurent loloà.com
      etc..
      et maintenant ça me donne ceci dans la base
      1. zidane zinedine zzizou@.com
      2. zidane zinedine zzizou@.com
      3. zidane zinedine zzizou@.com
      4. zidane zinedine zzizou@.com
      5. zidane zinedine zzizou@.com

      est-ce Normal?
      Avant ceci , la base de données ne bougeait pas!, il n'y avait aucun UPDATE
      là ça a écrasé les autres en fait
  4. Oui c complètement normal. Ta requête ne précise pas de clause WHERE. Elle met donc à jour tous les enregistrements présents dans ta table. Il faudrait que tu puisses affiner ta mise à jour suivant un critère pour ne mettre à jour que l'enregistrement qui va bien. A mon avis ta requête devrait ressembler à ça :
    $update="UPDATE Maitre SET nommaitre='".$nom."', prenommaitre='".$prenom."', mailmaitre='".$email."', mdpmaitre='".$mdp."', etatmaitre='A' WHERE idmaitre='".$id."'";
    Le plantage de l'insertion 2 je ne vois pas d'où il vient car je ne dois pas avoir le bout de code qui affiche ce message.