Partage
  • Partager sur Facebook
  • Partager sur Twitter

Boucle while, je comprend pas..

    29 décembre 2005 à 19:56:30

    Bonjour :D

    Voila ce code ( en exemple ) :
    <?php
    mysql_connect("localhost", "sdz", "mot_de_passe");
    mysql_select_db("coursphp");

    // On récupère les 5 dernières news
    $retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
    while ($donnees = mysql_fetch_array($retour))
    {
    ?>

    <div class="news">
        <h3>
            <?php echo $donnees['titre']; ?>
            <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
        </h3>
       
        <p>
        <?php
        // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
        $contenu = nl2br(stripslashes($donnees['contenu']));
        echo $contenu;
        ?>
        </p>
    </div>
    <?php
    } // Fin de la boucle des news
    ?>

    </body>
    </html>

    Ici, une seul news est affiché mais on peut en affichier 5 (
    BY id DESC LIMIT 0, 5');
    mais comme les variables représentent un champ de la bdd, elles devraient afficher seulement la premiére table avec id = 1...

    Je ne comprends pas, comment ici afficher les 5 champs de la table 'news' avec une seul requette sql? un pti exemple, merci ^^

    Bonne journée :)
    • Partager sur Facebook
    • Partager sur Twitter
      29 décembre 2005 à 20:02:52

      Eeeeeeeeuuuuuuuuuuuh soit j'ai mal compris soit c'est déjà le cas :euh:


      Lpu8er
      • Partager sur Facebook
      • Partager sur Twitter
        29 décembre 2005 à 21:32:51

        Salut :) ,

        Voila dans ce code :
        $retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');

        Il y'a une selection de 5 news (dans la bdd) ^^
        Mais comment on affiche ces 5 news, doit on faire 5 requette sql?
        D'aprés ce code non, vu qu'il en séléctionne 5, mais un petit exemple pour afficher les 5 sa serait sympa :)

        Merci ;)
        • Partager sur Facebook
        • Partager sur Twitter
          29 décembre 2005 à 21:35:52

          <?php
          while ($donnees = mysql_fetch_array($retour))
          {
          ?>

          <div class="news">
              <h3>
                  <?php echo $donnees['titre']; ?>
                  <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
              </h3>
             
              <p>
              <?php
              // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
              $contenu = nl2br(stripslashes($donnees['contenu']));
              echo $contenu;
              ?>
              </p>
          </div>
          <?php
          } // Fin de la boucle des news
          ?>


          Tu affiche tout avec une boucle while ...
          Je crois pas avoir bien compris ta question ...
          • Partager sur Facebook
          • Partager sur Twitter
            29 décembre 2005 à 21:40:30

            à la place de faire ceci :
            <?php
            mysql_connect("localhost", "sdz", "mot_de_passe");
            mysql_select_db("coursphp");

            // On récupère la premiére news
            $retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 1');
            while ($donnees = mysql_fetch_array($retour))
            {
            ?>

            <div class="news">
                <h3>
                    <?php echo $donnees['titre']; ?>
                    <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
                </h3>
               
                <p>
                <?php
                // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
                $contenu = nl2br(stripslashes($donnees['contenu']));
                echo $contenu;
                ?>
                </p>
            </div>
            <?php
            } // Fin de la boucle des news

            ////////////////////////////////////////////
            ////////////////////////////////////////////
            ///




            // On récupère la 2 iéme news
            $retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 1, 2');
            while ($donnees = mysql_fetch_array($retour))
            {
            ?>

            <div class="news">
                <h3>
                    <?php echo $donnees['titre']; ?>
                    <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em>
                </h3>
               
                <p>
                <?php
                // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
                $contenu = nl2br(stripslashes($donnees['contenu']));
                echo $contenu;
                ?>
                </p>
            </div>
            <?php
            } // Fin de la boucle des news


            /////////////////////
            //////////////etccccccccccc...
            ?>


            Voila avec tout ce code j'ai affiché deux news, mais y'a pas un moyen d'afficher justment ces deux news (voir plus..) avec une seul requette sql?

            Merci :D
            • Partager sur Facebook
            • Partager sur Twitter
              29 décembre 2005 à 21:40:44

              Ton code fait déjà ce qu'il faut pour afficher les 5 news ... a moins que j'ai mal lu ... :/
              • Partager sur Facebook
              • Partager sur Twitter
                29 décembre 2005 à 21:54:21

                Ah daccord, escusez-moi, j'ai maintenant compris :)
                Mais j'ai un souci :
                <?php


                   $reponse = mysql_query("SELECT * FROM type ");
                   while($donnees = mysql_fetch_array($reponse))
                   {
                           
                ?>

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

                <select name="type" size="1">
                <option value="<?php echo $donnees['type'] ?>"><?php echo $donnees['type'] ?></option>

                </select>

                                <?php
                }
                mysql_close();
                ?>


                Si par exemple, il y'a 3 champs remplis dans la table news, sa va me mettre 3 formulaires, je voudrais qu'il y'en ait qu'un seul avec plusieurs propostitions comme ceci :
                <select name="cat" size="1">
                <option value="test">test</option>
                <option value="test02">test02</option>

                </select>


                Voila merci :)
                • Partager sur Facebook
                • Partager sur Twitter
                  29 décembre 2005 à 22:03:00

                  <?php
                  <form method="post" action="recherche.php">
                  <?php
                  $reponse = mysql_query("SELECT * FROM type ");
                  while($donnees = mysql_fetch_array($reponse))
                  {

                  echo('
                  <select name="type" size="1">
                  <option value="'
                  . $donnees['type'] . '">' . $donnees['type'] . '</option>
                  </select>
                  '
                  );
                  }

                  mysql_close();
                  ?>
                  </form>


                  Il suffit de mettre le <form> à l'exterieur du while ;)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Boucle while, je comprend pas..

                  × 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