IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Probleme avec livre d'or [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Par défaut Probleme avec livre d'or
    Voila mes code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
    	'http://www.w3.org/TR/xhtml/DTD/xhtml1-strict.dtd'>
    <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='fr' lang='fr'>
     
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<link rel="stylesheet" href="livredor.css" type="text/css" />
    	<title>Livre d'Or</title>
    </head>
     
    <body>
     
    	<h3> Laissez votre opinion ici! </h3>
    	<hr />
     
    <form action="commentaires.php" method="post">
     
    <table>
    <tr>
    	<td><label for="nom">Nom :</label></td>
    	<td><input type="text" class="txt" name="nom" id="nom" value="" /></td>
    </tr>
    <tr>
    	<td><label for="email">Email (facultatif):</label></td>
    	<td><input type="text" class="txt" name="email" id="email" value="" /></td>
                    </tr>
    </table>
     
    <p>
    	<label for="commentaire">Commentaire :</label><br />
    	<textarea class="txt" id="commentaire" name="commentaire" cols="50" rows="10"></textarea>
    </p>
     
    <input type="submit" value="Ajouter" /></p>
     
    </form>
     
     
     
    </body>
     
    </html>
    Et voila le php permettant d'enregistrer dans ma base sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
    	'http://www.w3.org/TR/xhtml/DTD/xhtml1-strict.dtd'>
    <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='fr' lang='fr'>
     
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<link rel="stylesheet" href="livredor.css" type="text/css" />
    	<title>Livre d'Or</title>
    </head>
     
    <body>
     
    	<h3> Laissez votre opinion ici! </h3>
    	<hr />
     
    <?php
    $connexion = mysql_connect("localhost","chabaro","chabaro");
    mysql_select_db("chabaro", $connexion);
    $date = date("d-m-Y");
    $nom="'".mysql_escape_string($_REQUEST['nom'])."'"; 
    $email="'".mysql_escape_string($_REQUEST['email'])."'"; 
    $com="'".mysql_escape_string($_REQUEST['commentaire'])."'"; 
    if( empty($nom) || empty($com))
    {
    echo "Vous n'avez pas renseigné toutes les informations nécessaires.";
    }
    else
    {
    mysql_query("INSERT INTO commentaires(Date, Nom, Email, Commentaire) VALUES('$date','$nom','$email','$com')",$connexion) or die (mysql_error()); 
    echo"Votre commentaire a bien ete posté.";
    mysql_close($connexion); 
    }
     
    ?>
    </body>
    </html>
    Et l'erreur etant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 'fhj'',''dgh'',''hg'')' at line 1
    Et meme si je ne rentre pas de nom ou de commentaire il m'affiche cette erreur or il devrait m'afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Vous n'avez pas renseigné toutes les informations nécessaires."
    Merci de m'aider.

  2. #2
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom="'".mysql_escape_string($_REQUEST['nom'])."'";
    A cette ligne, tu mets dans noms une quote (') suivit du contenu de $_REQUEST['nom'] que tu as protégé au besoin, suivit a nouveau d'une quote.
    Donc, si dans le champs nom tu avais écrit "toto", dans $nom tu récupere 'toto' (avec les quote). De la même maniere si tu n'avais rien mis, tu récupere ''.

    Simplifie en mettant juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom = mysql_escape_string($_REQUEST['nom']);
    pour tous les champs, et avec un peu de bol, ca va même résoudre ton erreur sql (en gros dans ta requete, tu as deux ' pour proteger les champs, alors elle se vautre).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Par défaut
    Puré tout ce temps passé pour ça. Merci cela fonctionne.
    Kevin

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Attention aux fonctions que vous utilisez :
    A la version 4.3.0, cette fonction [mysql_escape_string] devient dépréciée, ne l'utilisez pas. À la place, utilisez la fonction mysql_real_escape_string().
    mysql_escape_string() est identique à la fonction mysql_real_escape_string() hormis le fait que mysql_real_escape_string() requiert une ressource de connexion et protège la chaîne en fonction du jeu de caractères courant. mysql_escape_string() ne demande pas de connexion comme argument, et ne respecte pas le jeu de caractères courant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Plugin php livré par default avec Eclipse PHP ganymede (POO)
    Par lerieure dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 06/05/2009, 11h54
  2. [Dates] Probleme avec un livre d'or
    Par kev484 dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2008, 13h15
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo