Erreur mysql update

Résolu
bartimus37 Messages postés 301 Statut Membre -  
bartimus37 Messages postés 301 Statut Membre -
Bonjours, j'ai un problème avec mysql update :
Erreur SQL !mysql_query("UPDATE news SET reponse=réponse de test WHERE id=\'.$nid.\'");
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 'mysql_query("UPDATE news SET reponse=réponse de test WHERE id=\'.$nid.\'")' at line 1
Voici le code :
$nid= $_GET['id']; 
$rep = $_POST['reponse'];                      
    $sql = 'mysql_query("UPDATE news SET reponse='.$rep.' WHERE id='.$nid.'");';   
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
    mysql_close();  


page de code complète : https://pastebin.com/DMwgZPDy
Le fichier config.php en include_once contient la connexion a la base de donné .
Merci de vos réponse.

6 réponses

  1. Guiver Messages postés 270 Statut Membre 88
     
    Bizarre ton code, essaye ça :

     
    $sql = "UPDATE news SET reponse='".$rep."' WHERE id=".$nid."";
    

    ou si ton champs ID n'est pas de type nombre :
     
    $sql = "UPDATE news SET reponse='".$rep."' WHERE id='".$nid."'";
    

    Comme le dis "gardiendelanuit", ce n'est pas bon de concaténer les variables directement dans les requêtes.
    De plus, le mysql est obsolète depuis quelques années. privilégie mysqli ou PDO dorénavant ;)
    2
  2. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
     
    Bonjour,

    Il faut rajouter des magiques quotes pour les values de la requête surtout pour les chaînes de caractères:
    $sql = mysql_query("UPDATE news SET reponse=\''.$rep.\'' WHERE id=\''.$nid.'\'");'; 


    EDIT: mysql query est une fonction et tu la met dans ta string??
    Merci de mettre "Résolu" quand le problème est réglé!
    La connaissance c'est comme la confiture: moins on en a et plus on l'étale.
    0
    1. bartimus37 Messages postés 301 Statut Membre 14
       
      ne fonctionne pas : Parse error: syntax error, unexpected T_STRING in /beta/reponse.php on line 30
      0
    2. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
       
      Renseigne toi sur les " et '
      Pour ton cas
      $sql = mysql_query("UPDATE news SET reponse='$rep' WHERE id='$nid';");

      Ton code est sujet aux injections SQL aussi.
      0
    3. bartimus37 Messages postés 301 Statut Membre 14
       
      Toujours une erreur ...
      Erreur SQL !1
      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 '1' at line 1
      0
    4. bartimus37 Messages postés 301 Statut Membre 14
       
      je crois que la variable $nid pose problème car elle est appelé en $_GET
      $nid = $_GET['id'];
      on arrive sur la page reponse.php?id=2
      ensuite on remplit le formulaire et on reviens sur reponse.php qui dit que
      $nid = $_GET['id'];
      et $nid est vide
      Je ne vois pas comment résoudre ça ...?
      0
    5. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
       
      Si tu utilises un form, c'est pas mieux de mettre un input type="hidden" ?
      0
  3. Guiver Messages postés 270 Statut Membre 88
     
    Salut,

    C'est une bonne idée de mette le code sur pastebin.
    Mais tu peux l'indenter correctement stp la prochaine fois ?
    Je viens de passer 5 minutes à le faire pour le lire correctement.

    Donc
    <INPUT TYPE=HIDDEN NAME=id VALUE=<?$_GET['id']?>> 

    Inutile de le mettre dans un <TD>, ça fait un espace vide dedans, mets le juste en dessous de ton <form>. Et écris le plutôt comme ça :
    <INPUT TYPE="HIDDEN" NAME="id" VALUE="<?php $_GET['id'] ?>" /> 

    Ensuite, tu as une balise <td> en trop juste avant <td align="right">
    Pour finir, sur ton dernier if, tu ferme l'accolade après $erreur; mais tu ne l'ouvre pas (accolade que tu ne mets pas dans ton premier if d'ailleurs).
    0
  4. bartimus37 Messages postés 301 Statut Membre 14
     
    j'ai fait tout ce que tu m'a dit : https://pastebin.com/HQxYgF1C
    mais ça ne fonctionne pas : Parse error: syntax error, unexpected $end
    in reponse.php on line 38 .
    C'est le dernier if ...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Guiver Messages postés 270 Statut Membre 88
     
    L'indentation n'est pas ton fort on dirait ^_^
    Mais c'est déjà beaucoup mieux, merci pour l'effort.

    J'ai pas le temps de regarder en détail se soir, mais je vois déjà que ton
    if ( $pseudo =='admin')
    {

    n'est pas fermé.
    Ensuite, tu as oublié un double quote dans ton form :
    <form action="reponse.php method="post">
    au lieu de
    <form action="reponse.php" method="post">
    0
  7. bartimus37 Messages postés 301 Statut Membre 14
     
    Il n'y a plus aucune erreur mais l'id ne s'affiche pas ...
    https://pastebin.com/qyjUzZ8e
    0
    1. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
       
      <?php echo $_GET['id']; ?>

      Sûrement non? :D
      0
    2. bartimus37 Messages postés 301 Statut Membre 14
       
      Merci !!!!!!!!
      0