Probleme avec mysql_real_escape_string

Résolu/Fermé
elodiej - 25 févr. 2013 à 15:48
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 - 25 févr. 2013 à 16:49
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

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
25 févr. 2013 à 15:52
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
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
ça me remet la même erreur, je ne comprend pas...
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
25 févr. 2013 à 16:21
je peux avoir l'erreur entière ?
0
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
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
25 févr. 2013 à 16:12
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
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
25 févr. 2013 à 16:34
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
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
c'est bon j'ai réglé le problème!
merci beaucoup de votre aide!
bonne continuation =)
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
25 févr. 2013 à 16:49
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