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 :

envoi d'un message par la méthode poste en php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 14
    Points : 10
    Points
    10
    Par défaut envoi d'un message par la méthode poste en php
    Bonjours à tous,
    je suis débutante en PHPMYSQL et j'ai essayé faire un petit site "mini-chat" , mais lors du test avec le web local, quand je fais des saisis dans la zone du texte pseudo et message et en appuyant sur le bouton envoyer; le résultat qu'il me donne est seulement pseudo et message.
    Mon problème se situe au niveau d'affichage du pseudo et message. merci d'avance
    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
    43
    44
    45
    46
    47
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
            <title>discution</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        </head>
        <style type="text/css">
        form
        {
            text-align:center;
        }
        </style>
        <body>
     
        <form action="discuter.php" method="post">
            <p>
            <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
            <label for="message">Message</label> :  <input type="text" name="message" id="message" /><br />
     
            <input type="submit" value="Envoyer" />
    	</p>
        </form>
     
     
    <?php
    // Connexion à la base de données
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=forum', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessages());
    }
     
    // Récupération des 10 derniers messages
    $reponse = $bdd->query('SELECT pseudo, messages FROM personne ORDER BY Idpersonne DESC LIMIT 0, 10');
     
    // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
    while ($donnees = $reponse->fetch())
    {
    	echo '<p><strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['messages']) . '</p>';
    }
     
    $reponse->closeCursor();
     
    ?>
    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
    <?php
    // Connexion à la base de données
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=forum', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessages());
    }
     
    // Insertion du message à l'aide d'une requête préparée
    $req = $bdd->prepare('INSERT INTO personne  VALUES('','pseudo','messages')');
    $req->execute(array($_POST['pseudo'], $_POST['messages']));
     
    // Redirection du visiteur vers la page discuter
    header('Location: discuter.php');
    ?>

  2. #2
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Outre les erreurs de syntaxe, les paramètres de la requête préparée sont mal utilisés :
    • soit on les nomme (le tableau de la méthode execute est associatif) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      $req = $bdd->prepare('INSERT INTO personne VALUES(:pseudo, :message)');
      $req->execute(array('pseudo' => $_POST['pseudo'], 'message' => $_POST['messages']));
    • soit non (le tableau de la méthode execute est numériquement indexé ; l'ordre de la requête devant être respecté) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      $req = $bdd->prepare('INSERT INTO personne VALUES(?, ?)');
      $req->execute(array($_POST['pseudo'], $_POST['messages']));


    Mais il faudrait penser à vérifier le retour des différentes méthodes PDO ici.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par julp Voir le message
    Outre les erreurs de syntaxe, les paramètres de la requête préparée sont mal utilisés :
    • soit on les nomme (le tableau de la méthode execute est associatif) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      $req = $bdd->prepare('INSERT INTO personne VALUES(:pseudo, :message)');
      $req->execute(array('pseudo' => $_POST['pseudo'], 'message' => $_POST['messages']));
    • soit non (le tableau de la méthode execute est numériquement indexé ; l'ordre de la requête devant être respecté) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      $req = $bdd->prepare('INSERT INTO personne VALUES(?, ?)');
      $req->execute(array($_POST['pseudo'], $_POST['messages']));


    Mais il faudrait penser à vérifier le retour des différentes méthodes PDO ici.
    t'a raison le problème d'affichage du pseudo et messages vient d'utilisation de la requête préparée, en réctifiant
    ceci, il m'affiche que le pseudo pas le message, voici l'imprimé écran:
    bianca :

    castafior :

    beate :

    durand15 :

  4. #4
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Vous développez visiblement vous aussi sans les notice puisque vous l'auriez vu sinon (index inexistant) car si on se réfère à votre formulaire :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="message" id="message" />
    La variable $_POST['messages'] devrait être $_POST['message'].

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    le problème d'affichage du message vient de la variable $_post['messages'] au pluriel, donc j'ai supprimé tous les pluriels et ça marche
    merci de votre aide

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

Discussions similaires

  1. [AJAX] Comment envoyer un fichier par la méthode post à l'aide d'ajax?
    Par othmane126 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/03/2008, 12h00
  2. [SD]Envoi d'un message par mail
    Par balawoo dans le forum SAP
    Réponses: 2
    Dernier message: 18/02/2008, 15h25
  3. Transfert de fichiers par la méthode POST
    Par febac20 dans le forum Langage
    Réponses: 1
    Dernier message: 03/10/2007, 21h53
  4. Réponses: 3
    Dernier message: 04/07/2007, 21h00
  5. Ouverture de connexion et envoi d'un message par socket
    Par loleske dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/02/2005, 12h52

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