Probleme avec mysql_real_escape_string

Résolu
Bonjour,

Alors je suis en train de créer un site et j'ai une page forum ou une personne peut rentrer son nom, et son message. et ensuite cliquer sur poster.
Lorsque l'on clique sur poster ça me rajoute bien une ligne à ma base de donnée mais ça ne me rajoute que des espaces car je ne sais pas quoi mettre entre les parenthèse de $parole=mysql_real_escape_query pour que ça me retourne dans ma base de donnée ce que la personne à tapé et non des espaces.

Pouvez vous m'aider?

Voici mon code: (PS: j'utilise PhpMyAdmin, et wamp server et mySQL)

<html>

<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="page_css3.css" />
<title>parcs d'attraction</title>
</head>
<body>

<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = '';
$mysql_base = 'projet_bdd';
$link = @mysql_connect($mysql_host,$mysql_user,$mysql_password) or mysqlerr(mysql_error());
@mysql_select_db($mysql_base) or mysqlerr(mysql_error());
mysql_query('SET NAMES UTF8');

?>

<p><b>POSTEZ UN NOUVEAU MESSAGE!</b></p>

<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="forum_html.php" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($user)) echo htmlentities(trim($user)); ?>">
</td></tr><tr><td>

<span class="gras">Message :</span>
</td><td>
<textarea name="message" cols="50" rows="10"><?php if (isset($parole)) echo htmlentities(trim($parole)); ?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Poster">
</td></tr></table>
</form>
<?php

// on affiche les erreurs éventuelles
if (isset($erreur)) echo '<br /><br />',$erreur;
?>

<?php
//on recupere la date de l'instant présent
$date = date("Y-m-d H:i:s");
//on recupere l'heure de l'instant présent
$heure = time ("Y-m-d H:i:s");

$user=mysql_real_escape_string(''); C'est ici que je ne sais pas quoi mettre!!!!<gras></gras
$parole=mysql_real_escape_string('');
// préparation de la requête d'insertion (table forum)
$sql=mysql_query('INSERT INTO forum VALUES("", "'.$user.'", "'.$parole.'", "'.$date.'","'.$heure.'")');

4 réponses

  1. Contributeur
    if (isset($_POST)) {
        if (isset($_POST['auteur']) && $_POST['auteur'] !== '') {
            $user=mysql_real_escape_string($_POST['auteur']);
        }
        if (isset($_POST['message']) && $_POST['message'] !== '') {
            $user=mysql_real_escape_string($_POST['message']);
        }
    }
    0
    1. je vous remercie, mais maintenant ça me met une erreur à la ligne :
      $sql=mysql_query('INSERT INTO forum VALUES("", "'.$user.'", "'.$parole.'", "'.$date.'","'.$heure.'")');

      ça me met: Undefined variable!
      Savez-vous ce qu'il faut que je rajoute ou modifie?
      0
    2. ça me remet la même erreur, je ne comprend pas...
      0
    3. Contributeur
      je peux avoir l'erreur entière ?
      0
    4. oui c'est: Notice: Undefined variable: user in C:\wamp\www\Project_bdd\forum_html.php on line 63
      et :
      Notice: Undefined variable: parole in C:\wamp\www\Project_bdd\forum_html.php on line 63
      0
  2. Contributeur
    c'est une erreur de ma part, pardon

    if (isset($_POST)) {
        if (isset($_POST['auteur']) && $_POST['auteur'] !== '') {
            $user=mysql_real_escape_string($_POST['auteur']);
        }
        if (isset($_POST['message']) && $_POST['message'] !== '') {
            $parole=mysql_real_escape_string($_POST['message']);
        }
    }
    0
    1. Contributeur
      remplace toutes les lignes après //on recupere la date de l'instant présent
      par :

      if (isset($_POST)) {
          $err = "";
          //on recupere la date de l'instant présent
          $date = date("Y-m-d H:i:s");
          //on recupere l'heure de l'instant présent
          $heure = time ("Y-m-d H:i:s");
          if (isset($_POST['auteur']) && $_POST['auteur'] !== '') {
              $user=mysql_real_escape_string($_POST['auteur']);
          }
          else {
              $err .= "Veuillez renseigner votre nom<br />\n";
          }
          if (isset($_POST['message']) && $_POST['message'] !== '') {
              $user=mysql_real_escape_string($_POST['message']);
          }
          else {
              $err .= "Veuillez renseigner votre message<br />\n";
          }
      }
      
      if ($err === "") {
          // préparation de la requête d'insertion (table forum)
          $sql=mysql_query('INSERT INTO forum VALUES("", "'.$user.'", "'.$parole.'", "'.$date.'","'.$heure.'")');
      }
      else {
          echo $err;
      }
      0
      1. alors c'est mieux, sauf que dans ma base de donnée, ça m'enregistre dans l'attribut user, ce que je tape dans message et dans message, ça ne me met rien.
        0
      2. c'est bon j'ai réglé le problème!
        merci beaucoup de votre aide!
        bonne continuation =)
        0
    2. Contributeur
      j'ai refait la même erreur que tout à l'heure.

      if (isset($_POST)) {
          $err = "";
          //on recupere la date de l'instant présent
          $date = date("Y-m-d H:i:s");
          //on recupere l'heure de l'instant présent
          $heure = time ("Y-m-d H:i:s");
          if (isset($_POST['auteur']) && $_POST['auteur'] !== '') {
              $user=mysql_real_escape_string($_POST['auteur']);
          }
          else {
              $err .= "Veuillez renseigner votre nom<br />\n";
          }
          if (isset($_POST['message']) && $_POST['message'] !== '') {
              $parole=mysql_real_escape_string($_POST['message']);
          }
          else {
              $err .= "Veuillez renseigner votre message<br />\n";
          }
      }
      
      if ($err === "") {
          // préparation de la requête d'insertion (table forum)
          $sql=mysql_query('INSERT INTO forum VALUES("", "'.$user.'", "'.$parole.'", "'.$date.'","'.$heure.'")');
      }
      else {
          echo $err;
      }


      Par contre si tu n'as pas les bonnes infos dans les bons champs, c'est que tu n'as pas mis les champs dans le bon ordre. Vérifie l'ordre des champs dans ta base de données et mets la même chose dans ta requête
      0