Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment afficher des données avec un select ?

Sujet résolu
    30 janvier 2015 à 2:22:44

    Bonsoir, 

    Que je vous explique mon problème :

    J'aimerais en faite en utilisant une requête SELECT avec une condition particulière (WHERE prenom = :prenom)

    pouvoir afficher les données de ma table "note".

    Par exemple en entrant un prénom dans un input (prénom serait donc assigné à la variable prenom)

    pouvoir afficher le contenu des variables $titletext et $text (ces deux variables correspondent au titre et au texte de mes notes)

     correspondant au prénom écrit dans l'input.

    En faite après avoir fait le tour de certains tuto j'ai essayer d'utiliser fetch... Sauf que quand je lance mon code j'ai le droit à cette erreur :

     Call to a member function fetch() on a non-object in CHEMIN D'ACCES DU FICHIER on line 32

    de même pour Foreach et mysqli_fetch..

    Comment pourrais-je faire pour régler ce problème ?

    Merci d'avance pour vos futur réponses 

    @ Bientôt - Mika445


    -
    Edité par mika445 30 janvier 2015 à 2:25:02

    • Partager sur Facebook
    • Partager sur Twitter
      30 janvier 2015 à 8:28:25

      Salut,

      Deux remarques :

      • peux-tu nous montrer ton code ?
      • je vois que tu parle de mysqli, je ne peux que te conseiller de l'abandonner au profil de PDO, qui, bien utilisé, t'offrira plus de sécurité.
      • Partager sur Facebook
      • Partager sur Twitter
      Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
        30 janvier 2015 à 20:40:10

        Mon code :

         <html>
        <?php include'head.php'; ?>
        <body>
        	<div class="search">
        		<form action="view_1.php" method="POST">
        <label for="prenom" class="label_prenom"> Entrez votre pseudo : </label>
        <br>
        <br>
        <input type="text" name="prenom" class="pseudo">
        <br>
        <br>
        <input type="submit" class="button" value="Afficher mes notes">
        <br>
        <br>
        <a href="index.php"><input type="button" value="Retour" class="button"></a>
        </form>
        	</div>
        </body>
        </html>
        
        
        
        <?php
        require 'cnx.php';// Fichier distant de connexion à SQL
        ?>
        <?php
        
        try {
            $cnx = new PDO('mysql:host='.$serveur.';port='.$port.';dbname='.$bdd, $user, $pass);
        }
        catch(PDOException $e)
        {
            echo $e->getMessage();
        }
        
        //Au dessus Connexion à MySQL - En dessous de moi boucle pour afficher les notes
        
        $reponse = $cnx->query('SELECT titletext,text FROM note WHERE prenom = :prenom');
        
        
        while ($donnee = $reponse->mysqli_fetch())
        {
        ?>
        <div class="note">
        	<p class="title_text">
        	<?php echo htmlspecialchars($donnee['titletext']); ?>
        </p>
        <br>
        <p class="text_note">
        	<?php echo n12br(htmlspecialchars($donnee['text'])); ?>
        </p>
        </div>
        <?php
         }
        $req -> closeCursor();
         ?>



        -
        Edité par mika445 30 janvier 2015 à 20:40:54

        • Partager sur Facebook
        • Partager sur Twitter
          30 janvier 2015 à 20:42:26

          Ou et comment passe tu le marqueur :prenom dans ta requête ? Il fqut un prepare, un bind, et un execute, minimum

          • Partager sur Facebook
          • Partager sur Twitter
          Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
            30 janvier 2015 à 20:42:43

            Bonsoir en fait tu fait du PDo et du mysqli en meme temps corige ton while par ceci 

            while ($donnee = $reponse->fetch())

            Et comme la dit elyppire tu ne donne pas la valeur de :prenom

            -
            Edité par Haulier 30 janvier 2015 à 20:43:49

            • Partager sur Facebook
            • Partager sur Twitter
              30 janvier 2015 à 21:57:06

              Bonsoir, @elyppire:
              • je vois que tu parle de mysqli, je ne peux que te conseiller de l'abandonner au profil de PDO, qui, bien utilisé, t'offrira plus de sécurité.
              --> Pourquoi  o_O
              • Partager sur Facebook
              • Partager sur Twitter
              Comar
                30 janvier 2015 à 22:06:33

                Pour mille et une raisons. Par exemple, le jour où tu dois migrer d'une base MySQL à une base PgSQL, t'est bien content d'avoir choisi PDO.

                Pour ceux qui lisent l'anglais, http://code.tutsplus.com/tutorials/pdo-vs-mysqli-which-should-you-use--net-24059

                • Partager sur Facebook
                • Partager sur Twitter
                Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
                  30 janvier 2015 à 22:07:56

                  D'accord mais aucun rapport avec la sécurité, si ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Comar
                    30 janvier 2015 à 22:13:25

                    Avec les requêtes préparées en PDO (prepare, bind, execute), t'as pas à te poser de questions sur la sécurité. Avec mysqli, il fait bien penser aux mysqli_real_escape_string(). Mais les deux, bien utilisés, sont sécurisés. Ma tournure de phrase était maladroite, mais à mon sens ce serait bien dommage aujourd'hui de se priver de PDO.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
                      30 janvier 2015 à 22:13:59

                      Haulier a écrit:

                      Bonsoir en fait tu fait du PDo et du mysqli en meme temps corige ton while par ceci 

                      while ($donnee = $reponse->fetch())

                      Et comme la dit elyppire tu ne donne pas la valeur de :prenom

                      Sauf que quand j'utlise fetch j'ai le droit à l'erreur.. Comme je l'ai dit j'ai le droit à la même erreur à chaque fois..

                      Le seul truc qui change c'est le truc après function dans "Call to member function fetch()" 

                      Vous pensez que la cause du problème c'est que je ne "donne pas la valeur de :prenom" ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 janvier 2015 à 22:19:22

                        @elyppire --> je comprends la tournure de phrase. Ceci étant écrit tu peux faire des requêtes préparées sous mysqli idem(presque) PDO..
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Comar
                          1 février 2015 à 1:38:44

                          Je n'ai pas trouver comment donner la valeur à :prenom.

                          Help me please !

                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 février 2015 à 9:44:49

                            Regarde dans le cours comment se fait une requête préparée (prepare - bindValue - execute)

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Retrouvez-moi aussi sur Zeste de SavoirTutoriel WAMP • Nouvelle F.A.Q. PHP
                              1 février 2015 à 11:50:04

                              Bonjour, 

                              Quelque chose dans se style la : 

                              $reponse = $cnx->prepare('SELECT titletext,text FROM note WHERE prenom = :prenom');
                              $reponse->execute(array('prenom' => $prenom)); //A toi de trouvé la variable qui va bien
                               
                              while ($donnees = $reponse->fetch())
                              {
                              } 



                              • Partager sur Facebook
                              • Partager sur Twitter
                                1 février 2015 à 13:38:00

                                Haulier, 

                                J'ai utiliser ton code :

                                Et j'ai le droit à cette erreur : 

                                Parse error: syntax error, unexpected T_WHILE in /home/a1423747/public_html/view_1.php on line 42
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  1 février 2015 à 14:05:38

                                  En faite le problème principal que j'ai, c'est que je ne comprend pas le principe de while..

                                  Je sais que while signifie "tant que"..

                                  Mais je ne sais pas où placer telle ou telle variable ect...

                                  J'ai beau lire et relire les cours sur pas mal de site (Dont OCR) je ne comprend pas..

                                  -
                                  Edité par mika445 1 février 2015 à 14:06:52

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    1 février 2015 à 14:18:43

                                    Bonjour, peux-tu nous afficher le code concerné ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Comar
                                      1 février 2015 à 14:42:45

                                      Le code concerné par l'erreur :

                                       $reponse = $cnx->prepare('SELECT titletext,text FROM note WHERE prenom = :prenom');
                                      $reponse->execute(array('prenom' => $prenom)); //A toi de trouvé la variable qui va bien
                                        
                                      while ($donnees = $reponse->fetch())
                                      {
                                      }



                                      -
                                      Edité par mika445 1 février 2015 à 14:43:15

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        1 février 2015 à 16:09:53

                                        Bas en même temps si tu ne met rien dans ta boucle :/ sa pourrait expliquer l'erreur.

                                        En fait ce que la boucle va faire dans ton cas : 

                                        1/ On execute la requete
                                            Donc on va chercher tout les TITLETEXT et TEXT qui ont pour prénom ta variable.

                                        2/ La boucle va en faite faire afficher tous se quel a trouvé au 1/ et les lister les un à la suite des autres.

                                        C'est a dire qui si le 1/ à trouvé 10 infos la boucle va être parcouru 10 fois et faire un affichage des valeurs.

                                        Mais à chaque parcours de la boucle une nouvelle valeur.

                                        Dans ton cas dans le WHILE tu pourrait mettre.

                                         Attention je repète que j'avais placé $prenom uniquement pour un exemple oublie pas de la modifier si tel est le cas

                                        $reponse = $cnx->prepare('SELECT titletext,text FROM note WHERE prenom = :prenom');
                                        $reponse->execute(array('prenom' => $prenom)); //A toi de trouvé la variable qui va bien
                                           
                                        while ($donnees = $reponse->fetch())
                                        {
                                           echo 'Le titre est : '.$reponse['titletext'].' et son contenu est '.$reponse['text'].'';
                                        }

                                        -
                                        Edité par Haulier 1 février 2015 à 16:14:55

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          1 février 2015 à 16:22:01

                                          Re,

                                          Haulier a écrit:

                                          Bas en même temps si tu ne met rien dans ta boucle :/ sa pourrait expliquer l'erreur.

                                          --> ça m'étonnerait  ;)

                                           Attention je repète que j'avais placé $prenom uniquement pour un exemple oublie pas de la modifier si tel est le cas

                                          $reponse = $cnx->prepare('SELECT titletext,text FROM note WHERE prenom = :prenom');
                                          $reponse->execute(array('prenom' => $prenom)); //A toi de trouvé la variable qui va bien
                                             
                                          while ($donnees = $reponse->fetch())
                                          {
                                             echo 'Le titre est : '.$reponse['titletext'].' et son contenu est '.$reponse['text'].'';
                                          }

                                          Plutôt

                                          echo 'Le titre est : '.$donnees['titletext'].' et son contenu est '.$donnees['text'].'';





                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Comar
                                            1 février 2015 à 17:48:25

                                            Même avec le code "bien" intégré j'arrive quand même à avoir la même erreur que tout à l'heure.. 

                                            Au cas ou, mon code (uniquement le PHP vu que l'HTML n'est juste qu'un simple formulaire) : 

                                            <?php
                                            require 'cnx.php';
                                            ?>
                                            <?php
                                            // Connexion à la base de données
                                            try {
                                                $cnx = new PDO('mysql:host='.$serveur.';port='.$port.';dbname='.$bdd, $user, $pass);
                                            }
                                            catch(PDOException $e)
                                            {
                                                echo $e->getMessage();
                                            }
                                            $prenom = addslashes($_POST['prenom']);
                                            
                                            $reponse = $cnx->prepare('SELECT titletext,text FROM note WHERE prenom = :prenom');
                                            $reponse->execute(array('prenom' => $prenom)); //A toi de trouvé la variable qui va bien
                                                
                                            while ($donnees = $reponse->fetch())
                                            {
                                            	?>
                                            	<div class="note">
                                            		<p class="title-text">
                                            <?php
                                               echo 'Le titre est :' .$donnees['titletext'].'';
                                            ?>
                                            </p>
                                            <br>
                                            <p class="text-note">
                                            <?php
                                             echo 'et son contenu est :'.$donnees['text'].'';
                                            }
                                            ?>
                                            </p>
                                            <?php
                                            close_cursor();
                                            ?>
                                            



                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              1 février 2015 à 17:58:40

                                              As-tu activé les erreurs PDO ?
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Comar
                                                1 février 2015 à 18:00:27

                                                Comar91 a écrit:

                                                As-tu activé les erreurs PDO ?


                                                Non ! Comme tu peux le voir dans mon code.. 

                                                C'est bien avec "or die" qu'on affiche les erreurs.. Non ?

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  1 février 2015 à 18:01:38

                                                  try {
                                                      $cnx = new PDO('mysql:host='.$serveur.';port='.$port.';dbname='.$bdd, $user, $pass);
                                                  	$cnx->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
                                                  }
                                                  catch(PDOException $e)
                                                  {
                                                     die('Erreur : ' . $e->getMessage());
                                                  }

                                                  -
                                                  Edité par Haulier 1 février 2015 à 18:06:03

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    1 février 2015 à 18:04:51

                                                    Gestion des erreurs en PDO, voir ici
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Comar
                                                      1 février 2015 à 19:45:35

                                                      Ligne 37 sur le code - Je récupère le contenu du formulaire et l'attribut à la variable $prenom (celle qui sera utiliser plus tard)

                                                      Je pense qu'il y a vraiment un problème avec la ligne 42 du code.. Car j'ai tout le temps la même erreurs malgré que j'ai activer les erreurs PDO..

                                                      <html>
                                                      <?php include'head.php'; ?>
                                                      <body>
                                                      	<div class="search">
                                                      		<form action="view_1.php" method="POST">
                                                      <label for="prenom" class="label_prenom"> Entrez votre pseudo : </label>
                                                      <br>
                                                      <br>
                                                      <input type="text" name="prenom" class="pseudo">
                                                      <br>
                                                      <br>
                                                      <input type="submit" class="button" value="Afficher mes notes">
                                                      <br>
                                                      <br>
                                                      <a href="index.php"><input type="button" value="Retour" class="button"></a>
                                                      </form>
                                                      	</div>
                                                      </body>
                                                      </html>
                                                      
                                                      <?php
                                                      require 'cnx.php';
                                                      ?>
                                                      <?php
                                                      // Connexion à la base de données
                                                      try {
                                                          $cnx = new PDO('mysql:host='.$serveur.';port='.$port.';dbname='.$bdd, $user, $pass);
                                                          $cnx->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
                                                      }
                                                      catch(PDOException $e)
                                                      {
                                                         die('Erreur : ' . $e->getMessage());
                                                      }
                                                      
                                                      
                                                      
                                                      $prenom = addslashes($_POST['prenom']); //1)
                                                      
                                                      $reponse = $cnx->prepare('SELECT titletext,text FROM note WHERE prenom = :prenom');
                                                      $reponse->execute(array('prenom' => $prenom)); //A toi de trouvé la variable qui va bien
                                                          
                                                      while ($donnees = $reponse->fetch())
                                                      {
                                                      	?>
                                                      	<div class="note">
                                                      		<p class="title-text">
                                                      <?php
                                                         echo 'Le titre est :' .$donnees['titletext'].'';
                                                      ?>
                                                      </p>
                                                      <br>
                                                      <p class="text-note">
                                                      <?php
                                                       echo 'et son contenu est :'.$donnees['text'].'';
                                                      }
                                                      ?>
                                                      </p>
                                                      <?php
                                                      close_cursor();
                                                      ?>



                                                      -
                                                      Edité par mika445 1 février 2015 à 19:46:22

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        1 février 2015 à 23:24:14

                                                        Donne nous l'erreur aussi 

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          2 février 2015 à 9:43:57

                                                          Bonjour, as-tu essayé
                                                          $reponse->execute(array('prenom' => $_POST['prenom']));
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Comar
                                                            3 février 2015 à 23:06:30

                                                            Haulier a écrit:

                                                            Donne nous l'erreur aussi 


                                                            "Parse error: syntax error, unexpected T_WHILE in /home/a1423747/public_html/view_1.php on line 42"


                                                            -
                                                            Edité par mika445 3 février 2015 à 23:07:16

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            Comment afficher des données avec un select ?

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                            • Editeur
                                                            • Markdown