Partage
  • Partager sur Facebook
  • Partager sur Twitter

affichage de liste

    10 octobre 2021 à 18:47:46

    Bonjour,
    je suis en train de m'initier au php et en abordant la manipulation de la base de données de mon serveur local(MAMP)et en utilisant le formulaire mis en place je n'ai aucun affichage de liste de messages apres avoir mis au début du code "var_dump($_POST);pour voir les éventuelles erreurs.En affichage j'ai ceci:

    "array(0) { }

    voici les codes:
    -formulaire et liste de messages
    <?php
    var_dump($_POST);
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root','root');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
    
    $reponse = $bdd->query('SELECT pseudo,date_creation, message FROM tchat ORDER BY ID DESC LIMIT 0, 10');
    
    while ($donnees = $reponse->fetch())
    {
        echo '<p><strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' .' '.htmlspecialchars($donnees['date_creation']).' '.htmlspecialchars($donnees['message']) . '</p>';
    }
    $reponse->closeCursor();
    
    ?>
    
    :enregistrement et redirection
    <?php
    //connection
    var_dump($_POST);
    try
    {
     $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
    
    //requete
    $req = $bdd->prepare('INSERT INTO tchat (pseudo,date_creation, message) VALUES(?,?,?)');
    $req->execute(array($_POST['pseudo'],$_POST['date_creation'], $_POST['message']));
    
    //redirection
    header('Location: tchat.php');
    ?>
    merci de m'aider

    -
    Edité par AhmindahBowRaghBah 10 octobre 2021 à 18:50:38

    • Partager sur Facebook
    • Partager sur Twitter
      10 octobre 2021 à 20:29:38

      var dump détaille une variable ou un tableau... qui lui est passé s'il n'y a rien dedans alors il te renverra vide c'est normal.

      -
      Edité par zvheer 10 octobre 2021 à 20:30:40

      • Partager sur Facebook
      • Partager sur Twitter
        10 octobre 2021 à 21:08:29

        Bonsoir,

        Je pense que le dernier message de la FAQ PHP est pour toi

        Et je rappel que travailler a l'aveugle sans afficher les erreurs, c'est un peu comme chercher une aiguille dans une botte de foin mais sans aimant (cf signature)

        • Partager sur Facebook
        • Partager sur Twitter
          10 octobre 2021 à 22:27:35

          Salut

          A mon avis, ton formulaire (dont tu ne fournis pas le code) a quelque chose d'incohérent avec le code que tu nous montres. Soit tu voulais effectivement envoyer "en GET" et ça ne joue pas parce que tu récupères "en POST", soit tu voulais envoyer "en POST" mais ce n'est pas le cas. Adapte soit ce que tu nous as fourni soit le formulaire pour avoir GET ou POST dans le formulaire et dans ton script.

          Je te recommande d'utiliser les outils de présentation de code prévus sur ce forum (bouton </>) la prochaine fois, et si tu pouvais éditer ton premier message pour déjà l'utiliser, ce serait super (un lien "Modifier" apparaît au survol du message).

          -
          Edité par Ymox 10 octobre 2021 à 22:32:32

          • Partager sur Facebook
          • Partager sur Twitter
            10 octobre 2021 à 22:27:55

            Aurélien10! a écrit:

            Bonsoir,

            Je pense que le dernier message de la FAQ PHP est pour toi

            Et je rappel que travailler a l'aveugle sans afficher les erreurs, c'est un peu comme chercher une aiguille dans une botte de foin mais sans aimant (cf signature)



            • Partager sur Facebook
            • Partager sur Twitter
              10 octobre 2021 à 23:27:22 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


                10 octobre 2021 à 23:35:58

                Utilise l'outil pour présenter le code correctement (bis). La prochaine fois, c'est un modérateur qui viendra te le demander, voire fermera le sujet parce que tu ne l'auras toujours pas fait après deux demandes.


                A mon avis, ton script de traitement (accueil1.php si j'en crois le HTML ci-dessus, maintenant allons savoir lequel des deux scripts fournis dans le premier message est celui qui nous intéresse) ne reçoit pas les données "en POST" au vu de ce que tu nous fournis comme informations.

                • Partager sur Facebook
                • Partager sur Twitter
                  10 octobre 2021 à 23:45:10

                  OK quel outil ?merci de m'eclairer
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 octobre 2021 à 0:17:36

                    AhmindahBowRaghBah a écrit:

                    OK quel outil ?merci de m'eclairer

                    Bonjour,

                    Merci de colorer votre code à l'aide du bouton Code

                    Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: php;">Votre code ici</pre>.

                    Merci de modifier votre message d'origine en fonction. En image cela donne :

                    Liens conseillés



                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 octobre 2021 à 7:05:56

                      AhmindahBowRaghBah a écrit:

                      ? C'est quoi votre aide?


                      Ta question de base etait

                       je n'ai aucun affichage de liste de messages apres avoir mis au début du code "var_dump($_POST);pour voir les éventuelles erreurs.En affichage j'ai ceci:

                      C'est bien ce qu'on t'a repondu si on lui envoie une valeur vide var_dump va retourner vide c'est normal ( l voici l'aide) . Il faudrait l'ensemble du code qui concerne ce que tu cherches a faire comme l'a dis ymox. 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 octobre 2021 à 17:56:58

                        bonsoir , j'ai peut être mal formulé ma question aprèsavoir utilisé le formulaire et constaté qu'il n'y avait aucun affichage que j'ai intégré dans mon code
                        var_dump($_POST);
                        j'espère que maintenant on va m'aider pour laffichage .Merci pour votre  aide
                        • Partager sur Facebook
                        • Partager sur Twitter
                          11 octobre 2021 à 21:53:07

                          dans ta requete select limit 0,10 si tu veux juste en afficher 10 limit 10 suffit je ne sais meme pas si limit 0,10 fonctionne si julp passe par la il nous dira :)

                          ensuite au niveau de ta boucle tant que je ne crois pas qu'il y ait d'erreur sur le echo en tous cas je n'en vois pas

                          mais pense a verifier si donnees contient bien quelque chose le var dump sur la variable "donnee" du coup serait utilie.

                          Si le limite 0,10 ne fonctionne pas ca vient surement de la car si la requete sql n'envoie rien il n'y a rien a afficher sinon si ce n'est pas ca var dump sur "donnees" devrait nous dire.

                          Je t'avoues que je n'ai toujours pas compris a quoi sert le var dump sur $post tu as dit que c'etait car on avait rien a l'affichage mais tu n'utilises pas de $post quand tu fais le echo donc ca ne peut pas t'aider la dessus. 

                          -
                          Edité par zvheer 11 octobre 2021 à 21:58:07

                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 octobre 2021 à 22:40:48

                            Derien fais nous un retour quand tu auras check
                            • Partager sur Facebook
                            • Partager sur Twitter
                              12 octobre 2021 à 11:22:43

                              bonjour, c'est toujours le cambouis voici l'affichage de la page de retour

                              <form style="text-align: center; font-family: 'Times New Roman'; font-size: medium;" action="http://localhost:81/projet/accueil1.php" method="post">
                              <label for="pseudo">Pseudo</label> :<input id="pseudo" type="text" name="pseudo" />
                              <label for="message">Message</label> : <input id="message" type="text" name="message" />
                              <input type="submit" value="Envoyer" />
                              
                              </form>

                              les cases du pseudo ,du message, de la validation.


                              array(0) { }

                              Où me suis planté?

                              -
                              Edité par AhmindahBowRaghBah 12 octobre 2021 à 11:58:51

                              • Partager sur Facebook
                              • Partager sur Twitter
                                12 octobre 2021 à 14:09:49

                                Comme deja dis au dessus montre le maximum de code concernant ton soucis

                                Là je vois un formulaire et un vardump vide

                                mais ce n'est pas de ça qu'on parlait au dessus ou alors c'est le formulaire qui servait pour ce qu'il y a dau dessus ? Il faut mieux expliquer

                                Et si c'est bien le formulaire qui servait pour ce qu'il y a dessus il y a deja une erreur tu tentes d'inserer dans ta base un $post date creation mais tu ne l'envoies pas dans ton formulaire.

                                Je redis reprend tout le soucis depuis le debut avec le formulaire le code php qui va avec et explique ce que tu veux faire réellement du debut a la fin ca ira plus vite 

                                -
                                Edité par zvheer 12 octobre 2021 à 14:13:24

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  12 octobre 2021 à 14:48:58

                                  Je suis septique pour le port dans l'url, j'ai toujours vu 4 chiffres et non deux.

                                  essaie avec une url relative car quand tu uploadra ton site sur un serveur distant localhost n'existera pas.

                                  <form  action="accueil1.php" method="post">

                                  Post la page accueil1.php complète et la page qui contient le formulaire complet. je pense que l'on y verra plus clair.



                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    12 octobre 2021 à 17:41:03

                                    Bonjour,je vais essayer de tout expliquer au risque de me répéter:j'ai créé un formulaire pour avoir une liste de messages.simplement en l'essayant(j'ai mis un pseudo ,un message et cliqué sur envoyer)rien ne se passe

                                    voici les codes;

                                    formulaire et liste de messages

                                    <!DOCTYPE html>
                                    <html>
                                        <head>
                                            <meta charset="utf-8" />
                                            <title>tchat</title>
                                        </head>
                                        <style>
                                        form
                                        {
                                            text-align:center;
                                        }
                                        </style>
                                        <body>
                                        
                                        <form action="accueil.php" method="post">
                                            <p>
                                            <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
                                    <label for="date_creation">date_creation</label>:<input type="datetime"name="date_creation" id="date_creation"/></br>
                                     

                                    <label for="message">Message</label> : <input type="text" name="message" id="message" /><br /> <input type="submit" value="Envoyer" /> </p> </form> <?php try { $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root','root'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT Pseudo,date_creation, Message FROM tchat ORDER BY ID DESC LIMIT 0, 10'); while ($donnees = $reponse->fetch()) { echo '<p><strong>' . htmlspecialchars($donnees['Pseudo']) .'</strong>:' . htmlspecialchars($donnees['date_creation']) . htmlspecialchars($donnees['Message']) .'</p>'; } $reponse->closeCursor(); ?> </body> </html>
                                    enregistrement et redirection
                                    <?php
                                    //connection
                                    
                                    try
                                    {
                                    	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root');
                                    }
                                    catch(Exception $e)
                                    {
                                            die('Erreur : '.$e->getMessage());
                                    }
                                    
                                    //requete
                                    $req = $bdd->prepare('INSERT INTO tchat (Pseudo,date_creation, Message) VALUES(?,?,?])');
                                    $req->execute(array($_POST['Pseudo'],$_POST['date_creation'],$_POST['Message']));
                                    
                                    
                                    //redirection
                                    header('Location: tchat.php');
                                    ?>
                                     où me suis-je planté?Merci de m'aider

                                    -
                                    Edité par AhmindahBowRaghBah 14 octobre 2021 à 12:01:41

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      14 octobre 2021 à 10:15:54

                                      Il y a deux choses :

                                      1. MAMP non pro n'a pas par défaut l'affichage des erreurs PHP d'activé à ma connaissance ;
                                      2. Même si c'était le cas, il faut en plus demander à PDO de signaler les erreurs SQL rencontrées (cf. FAQ PHP ou documentation officielle) pour PHP avant la version 8.

                                      Pour le premier script, tu y arrives "en GET", donc il me paraît logique que $_POST soit vide.

                                      Pour le second, vu que tu ne nous donnes que le contexte et pas le nom des fichiers, je vais partir du principe que c'est accueil.php, et que prendre en compte les deux choses listées ci-avant ainsi que commenter la ligne 19 pourrait apporter plus d'information.

                                      -
                                      Edité par Ymox 14 octobre 2021 à 10:16:13

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        14 octobre 2021 à 11:34:08

                                        Bonjour, En plus de ce que Ymox à dit :

                                        La valeur de l'attribut name d'un élément de formulaire donne le nom de l'index de la superglobal qui récupère les informations soumise.

                                        Tu as comme champs pseudo et message, dans ton deuxième code tu récupères en $_POST Pseudo, Message, et date_creation.

                                        Tu posts des données et tu récupères des des données dans des index qui n'existe null part. Modifie pour qu'il y aie une correspondance entre les noms des attributs name du formulaire et l'index de $_POST. Si tu postes deux champs tu récupères deux indices dans la superglobal pas trois.

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          14 octobre 2021 à 12:10:10

                                          Bonjourn,j'ai modifié le code du formulaire avec le champ "date"(je pensais que la date est automatique avec le post du message!) je ne vois toujours aucune liste de message qui s'affiche..Merci
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            14 octobre 2021 à 12:20:12

                                            Mets le nouveau code dans les réponses, ne modifie pas un message existant, ça fausse totalement la discussion pour ceux qui reviendraient dessus par la suite.

                                            Imagine que tu donnes un code complètement faux, mais que tu corriges ensuite avec les indications dans les réponses qui suivent : les remarques qui t'ont été faites ne sont plus pertinentes, et on ne peut plus voir l'évolution.

                                            Là par exemple, il y a eu deux réponses d'autres personnes depuis ton dernier code, mais tu as modifié ce dernier code près d'une demi-heure après la dernière réponse. Non seulement on n'a aucune notification des modifications, mais en plus on ne peut plus savoir ce que tu as changé vu qu'on n'a plus de quoi faire la comparaison.

                                            Maintenant, pour ce qui est de ton problème, on t'a fourni deux pistes : à toi de les suivre.

                                            -
                                            Edité par Ymox 14 octobre 2021 à 12:20:50

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              14 octobre 2021 à 12:27:24

                                              N'édite pas ton code, reposte le au besoin, car on ne s'y retrouve plus, et nos réponses ne corresponde plus au code poster.

                                              On va procéder une chose à la fois. La première page soit l'affichage de la liste. Après on verra pour le formulaire poster car la tu nous décrit deux problèmes.

                                              active les erreurs PDO => https://www.php.net/manual/fr/pdo.error-handling.php As tu une erreurs qui s'affiche au chargement de la première page?

                                              As tu passé ta requête sql dans PHPMyAdmin par exemple? Retourne t-elle les informations voulue. Une capture écran de la base serait peut être utile pour comprendre d'où vient ce problème d'affichage de liste.

                                              Question bête, as tu des informations à afficher en base?

                                              -
                                              Edité par AbcAbc6 14 octobre 2021 à 12:31:21

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                14 octobre 2021 à 12:28:39

                                                Actives les erreurs PDO car tu as une faute dans ta requête d'insertion.

                                                Peux t on avoir une image de ta bdd ?

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  15 octobre 2021 à 18:31:47

                                                  Bonsoir,j'ai tout refait sans le champ 'date_creation' ça marche mais lorsque j'insere 'date_creation' aucun affichage.

                                                  voici ,un aperçu de la bdd:

                                                  voici les codes:

                                                  formulaire et liste de messages 

                                                  <!DOCTYPE html>
                                                  <html>
                                                      <head>
                                                          <meta charset="utf-8" />
                                                          <title>Mini-chat</title>
                                                      </head>
                                                      <style>
                                                      form
                                                      {
                                                          text-align:center;
                                                      }
                                                      </style>
                                                      <body>
                                                      
                                                      <form action="accueil.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 
                                                  try
                                                  {
                                                      $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root');
                                                  }
                                                  catch(Exception $e)
                                                  {
                                                          die('Erreur : '.$e->getMessage());
                                                  }
                                                  
                                                  // Récupération 
                                                  $reponse = $bdd->query('SELECT Pseudo,date_creation, Message FROM tchat ORDER BY ID DESC LIMIT 0, 10');
                                                  
                                                  // Affichage 
                                                  while ($donnees = $reponse->fetch())
                                                  {
                                                      echo '<p><strong>' . htmlspecialchars($donnees['Pseudo']) . '</strong> : '. htmlspecialchars($donnees['date_creation']) . htmlspecialchars($donnees['Message']) . '</p>';
                                                  }
                                                  
                                                  $reponse->closeCursor();
                                                  
                                                  ?>
                                                      </body>
                                                  </html>

                                                  enregistrement et redirection

                                                  <?php
                                                  // Connexion 
                                                  try
                                                  {
                                                  	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root');
                                                  }
                                                  catch(Exception $e)
                                                  {
                                                          die('Erreur : '.$e->getMessage());
                                                  }
                                                  
                                                  // Insertion du message 
                                                  $req = $bdd->prepare('INSERT INTO tchat (pseudo, ,date_creation,message) VALUES(?, ?, ?)');
                                                  $req->execute(array($_POST['pseudo'], $_POST['date_creation'], $_POST['message']));
                                                  
                                                  // Redirection 
                                                  header('Location: tchat.php');
                                                  ?>





                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    15 octobre 2021 à 18:43:30

                                                    Salut, ton image de la DB n'est pas passée, tu n'as pas affiché les erreurs PDO.

                                                    -
                                                    Edité par AbcAbc6 15 octobre 2021 à 18:43:59

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      15 octobre 2021 à 18:50:07

                                                      > $_POST['date_creation']

                                                      La variable n'existe pas, ça devrait te valoir une notice: undefined index date_creation et une erreur SQL si la colonne est non-nullable comme elle est censée l'être. Sauf que cette seconde, tu ne l'as pas car comme mes prédécesseurs l'ont déjà dit à de multiples reprises, les erreurs PDO/SQL ne sont toujours pas activées sur tes codes (et tu n'utilises pas une version 8 de PHP) - paradoxalement, tes try/catch ne servent pas à grand chose.

                                                      Logiquement, c'est la date/heure courante que tu dois reprendre, ce n'est pas l'utilisateur qui doit la fournir, donc soit tu le fais via la fonction SQL NOW() qui t'économise un bind soit tu prends celle de PHP via la fonction date (l'avantage de le faire en PHP c'est que tu as le contrôle sur le fuseau horaire).

                                                      -
                                                      Edité par julp 15 octobre 2021 à 18:56:42

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        15 octobre 2021 à 18:57:08

                                                        ok je revois ma copie:

                                                        image de la bdd

                                                        voila les erreurs affichées:Notice: Undefined index: date_creation in C:\MAMP\htdocs\projet\accueil.php on line 16


                                                        Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 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 'date_creation,message) VALUES('ali ', NULL, 'salam')' at line 1 in C:\MAMP\htdocs\projet\accueil.php:16 Stack trace: #0 C:\MAMP\htdocs\projet\accueil.php(16): PDOStatement->execute(Array) #1 {main} thrown in C:\MAMP\htdocs\projet\accueil.php on line 16
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        affichage de liste

                                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                        • Editeur
                                                        • Markdown