Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Sql] Sélection au hazard dans une table

Sujet résolu
    19 février 2006 à 18:10:53

    Bonsoir

    J'ai une table "astuces" avec 3 champs (id, titre, texte)

    Je voudrait créer une fonction pour séléctionner une astuce au hazard dans ma table.

    Si quelqu'un peut me dire comment faire ou me dire comme débuter.

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2006 à 18:18:24

      utilise la fonction rand()

      va voir la doc sur comment l'utiliser

      ensuite tu fait quelque chose du genre ;

      $aleatoire = ranf (1, 100) // en fonction

      et dans ta requete tu fait avec un where = $aleatoire

      ++
      • Partager sur Facebook
      • Partager sur Twitter
        19 février 2006 à 18:20:41

        mt_rand serait mieux ;) Mais il te faudra récupérer le nombre d'entrées.
        • Partager sur Facebook
        • Partager sur Twitter
          19 février 2006 à 18:24:54

          tu peux le faire avec un count :)

          c'etait juste l'idee de base que je donnée à lui de choisir la fonctione qu'il vaut :p
          • Partager sur Facebook
          • Partager sur Twitter
            19 février 2006 à 18:30:21

            et sinon, il vaut peut-être mieux ne pas mettre WHERE id = $aleatoire, car si l'entrée correspondate à été supprimée :p
            • Partager sur Facebook
            • Partager sur Twitter
              19 février 2006 à 19:26:13

              J'ai essayé :

              <?
              $result = mysql_query("SELECT titre, astuce FROM astuces ORDER BY rand() limit 1");
              ?>
              <link href="../style.css" rel="stylesheet" type="text/css">
              <table width="100%"  border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td class="grandtitre">Astuce : <? echo $result['titre']; ?></td>
                </tr>
                <tr>
                  <td class="texte"><? echo $result['text']; ?></td>
                </tr>
              </table>


              Mais cela n'affiche rien du tout.
              Un petit conseil svp
              • Partager sur Facebook
              • Partager sur Twitter
                19 février 2006 à 19:28:48

                order by rand ? :-° Nan, va vérifier l'utilisation de rand ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  19 février 2006 à 19:30:58

                  Erf je trouver sa bizard aussi sa aurait été trop façile :D

                  Ma source :

                  <lien url="http://www.comscripts.com/sources/php.fonction-rand-avec-sql.80.html"></lien>

                  Je continu mes recherche :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 février 2006 à 19:48:52

                    $count = mysql_query("SELECT COUNT(*) AS nbreAstuces FROM astuces");
                    $objetNombre  = mysql_fetch_object($count)
                    $nombreAstuces = $objetNombre->nbreAstuces
                    $astuce = mt_rand('0, '.$nombreAstuces);
                    $astuces = mysql_query("SELECT titre, text FROM astuces WHERE id='".$astuce."'");
                    $result = mysql_fetch_object($astuces);
                    ?>
                    <link href="../style.css" rel="stylesheet" type="text/css">
                    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
                      <tr>
                        <td class="grandtitre">Astuce : <? echo $result->titre; ?></td>
                      </tr>
                      <tr>
                        <td class="texte"><? echo $result->text; ?></td>
                      </tr>
                    </table>

                    Voila voila :) Essaie ça et donne moi des nouvelles :D
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 février 2006 à 19:51:44

                      J'été parti sur un truc du jor :

                      $result = mysql_query("SELECT COUNT(*) FROM astuces");
                      $numb = mysql_fetch_array($result);


                      Mais bon dur dur..

                      Je vais essayer ton code

                      Merci

                      Alors petit problème

                      Parse error: parse error, unexpected T_VARIABLE in astuces.php on line 6


                      Ce qui correspond a :
                      $nombreAstuces = $objetNombre->nbreAstuces
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 février 2006 à 20:01:03

                        il manque un ; à la fin de la ligne ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 février 2006 à 20:19:06

                          Bonjour,

                          Je suis debutant, mais je propose :

                          $aupif = rand (0, 50)

                          echo $données["$aupif"]


                          $données étant la même chose que dans les cours

                          J'éspère que ma reponse t'aura aidé
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 février 2006 à 20:22:15

                            Citation : Freezix

                            Bonjour,

                            Je suis debutant, mais je propose :


                            $aupif = rand (0, 50)

                            echo $données["$aupif"]


                            $données étant la même chose que dans les cours

                            J'éspère que ma reponse t'aura aidé



                            marchera pas ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 février 2006 à 20:24:35

                              moi j'ai fais ça
                              <?php
                                              $date = array("5 mai 1789", "20 juin 1789", "14 juillet 1789", "4 août 1789", "26 août 1789", "12 juillet 1790", "20 juin 1791", "20 avril 1792", "10 août 1792", "20 septembre 1792", "22 septembre 1792", "21 janvier 1793", "septembre 1793", "27 juillet 1794");
                                              $evenement = array("ouverture des états généraux", "Serment du jeu de paume", "Prise de la bastille", "Abolition des privilèges", "DDHC", "constitution civile du clergé", "Fuite rapée du roi arrété à Varennes" ,"Déclaration de guerre à l'Autriche", "Journée revolutionnaire à Paris ; le roi est emprisonné", "victoire de Valmy", "proclamation de la Répblique et élection de la Convention", "Exécution de Louis XVI", "Lois des suspects et du maximum : début de la Terreur", "arrestation et exécution de Robespierre, fin du comité de Salut public");
                                              $aupif = rand(0, 13);
                                              echo $date["$aupif"];
                                              ?>

                              et ça marche
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 février 2006 à 20:36:06

                                Ca me serait super utile aussi !
                                Mais si on fais un rand ca risque de foirer.... par exemple imaginez (je prends mon cas^^) que vous avez 20 jeux enregistrés dans une table jeux et que les id ne vont pas exactement croissant (du genre ca fait, 1, 2, 3, 6, 9, 10 etc...) car vous en avez supprimé par exemple. Et bien des fois le random vous fera tomber sur un jeu qui existe pas !
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 février 2006 à 20:42:15

                                  Citation : Quadehar

                                  il manque un ; à la fin de la ligne ;)



                                  Hélas sa vien pas de sa car j'ai toujour mon


                                  Parse error: parse error, unexpected T_VARIABLE in astuces.php on line 6
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 février 2006 à 20:43:13

                                    Il en manque deux en fait : un à la ligne 5 et un à la 6.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 février 2006 à 20:47:02


                                      while ($aupif == $id_de_ma_base_de_donnee_qui_existent)
                                      {
                                      $aupif = rand (0,9)
                                      }
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        19 février 2006 à 20:49:57

                                        Dans la série " J'ai des erreurs "


                                        Warning: mt_rand() expects exactly 2 parameters, 1 given in astuces.php on line 7


                                        $astuce = mt_rand('0, '.$nombreAstuces);


                                        Encore besoin d'aide svp
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          19 février 2006 à 20:51:37

                                          Citation : Freezix

                                          moi j'ai fais ça

                                          <?php
                                                          $date = array("5 mai 1789", "20 juin 1789", "14 juillet 1789", "4 août 1789", "26 août 1789", "12 juillet 1790", "20 juin 1791", "20 avril 1792", "10 août 1792", "20 septembre 1792", "22 septembre 1792", "21 janvier 1793", "septembre 1793", "27 juillet 1794");
                                                          $evenement = array("ouverture des états généraux", "Serment du jeu de paume", "Prise de la bastille", "Abolition des privilèges", "DDHC", "constitution civile du clergé", "Fuite rapée du roi arrété à Varennes" ,"Déclaration de guerre à l'Autriche", "Journée revolutionnaire à Paris ; le roi est emprisonné", "victoire de Valmy", "proclamation de la Répblique et élection de la Convention", "Exécution de Louis XVI", "Lois des suspects et du maximum : début de la Terreur", "arrestation et exécution de Robespierre, fin du comité de Salut public");
                                                          $aupif = rand(0, 13);
                                                          echo $date["$aupif"];
                                                          ?>


                                          et ça marche



                                          Rien à voir ;)


                                          Citation : TosTos


                                          Mais si on fais un rand ca risque de foirer.... par exemple imaginez (je prends mon cas^^) que vous avez 20 jeux enregistrés dans une table jeux et que les id ne vont pas exactement croissant (du genre ca fait, 1, 2, 3, 6, 9, 10 etc...) car vous en avez supprimé par exemple. Et bien des fois le random vous fera tomber sur un jeu qui existe pas !



                                          C'est ce que j'avais précisé plus haut. Ca se règle en mettant cette requête à la place de l'autre :


                                          $astuces = mysql_query('SELECT titre, text FROM astuces ORDER BY id LIMIT ('.$astuce.' - 1), '.$astuce.');
                                           



                                          EDIT : ArC3Nik =>

                                          Remplace :
                                          $astuce = mt_rand('0, '.$nombreAstuces);

                                          par :
                                          $astuce = mt_rand(1, $nombreAstuces);
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            19 février 2006 à 20:52:20

                                            il faut que tu mettes une apostrophe juste après le 0 !
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              19 février 2006 à 20:54:15

                                              Citation : Sitevolution

                                              il faut que tu mettes une apostrophe juste après le 0 !



                                              Nan, pas exactement ça, j'ai édité mon message juste au-dessus ;)
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                19 février 2006 à 20:56:08

                                                Ahh voila sa marche :p


                                                <?
                                                $count = mysql_query("SELECT COUNT(*) AS nbreAstuces FROM astuces");
                                                $objetNombre  = mysql_fetch_object($count);
                                                $nombreAstuces = $objetNombre->nbreAstuces;
                                                $astuce = mt_rand(1, $nombreAstuces);
                                                $astuces = mysql_query("SELECT titre, text FROM astuces WHERE id='".$astuce."'");
                                                $result = mysql_fetch_object($astuces);
                                                ?>


                                                Quadehar je comprend pas trop pour eviter si l'id n'existe plus

                                                Je doit remplacer :

                                                $astuces = mysql_query("SELECT titre, text FROM astuces WHERE id='".$astuce."'");


                                                Par

                                                $astuces = mysql_query('SELECT titre, text FROM astuces ORDER BY id LIMIT ('.$astuce.' - 1), '.$astuce.');



                                                Enfin j'ai déja essayer et il y a un prob a la ligne 19 alors que la ligne 19 est égal a </table>
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  19 février 2006 à 21:06:54

                                                  <?
                                                  $count = mysql_query("SELECT COUNT(*) AS nbreAstuces FROM astuces");
                                                  $objetNombre  = mysql_fetch_object($count);
                                                  $nombreAstuces = $objetNombre->nbreAstuces;
                                                  $astuce = mt_rand(1, $nombreAstuces);
                                                  $debut = $astuce-1;
                                                  $astuces = mysql_query('SELECT titre, text FROM astuces ORDER BY id LIMIT '.$debut.', '.$astuce.');
                                                  $result = mysql_fetch_object($astuces);
                                                  ?>


                                                  Et comme ça ?

                                                  Sinon, il nous faudrait le reste de ton code.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    19 février 2006 à 21:09:58

                                                    Non marche pas


                                                    <?php require_once('la conection'); ?>
                                                    <? mysql_select_db($selection de la base); ?>
                                                    <?
                                                    $count = mysql_query("SELECT COUNT(*) AS nbreAstuces FROM astuces");
                                                    $objetNombre  = mysql_fetch_object($count);
                                                    $nombreAstuces = $objetNombre->nbreAstuces;
                                                    $astuce = mt_rand(1, $nombreAstuces);
                                                    $astuces = mysql_query("SELECT titre, text FROM astuces WHERE id='".$astuce."'");
                                                    $result = mysql_fetch_object($astuces);
                                                    ?>
                                                    <link href="../style.css" rel="stylesheet" type="text/css">
                                                    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
                                                      <tr>
                                                        <td class="grandtitre">Astuce : <? echo $result->titre; ?></td>
                                                      </tr>
                                                      <tr>
                                                        <td class="texte"><? echo $result->text; ?></td>
                                                      </tr>
                                                    </table>


                                                    EDIT : je pense que le problème vien de la ligne :

                                                    $astuces = mysql_query('SELECT titre, text FROM astuces ORDER BY id LIMIT '.$debut.', '.$astuce.');

                                                    vue la couleur que prend le code
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      19 février 2006 à 21:11:32

                                                      EDIT :


                                                      <?
                                                      $count = mysql_query("SELECT COUNT(*) AS nbreAstuces FROM astuces");
                                                      $objetNombre  = mysql_fetch_object($count);
                                                      $nombreAstuces = $objetNombre->nbreAstuces;
                                                      $astuce = mt_rand(1, $nombreAstuces);
                                                      $debut = $astuce-1;
                                                      $astuces = mysql_query('SELECT titre, text FROM astuces ORDER BY id LIMIT '.$debut.', '.$astuce);
                                                      $result = mysql_fetch_object($astuces);
                                                      ?>
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        19 février 2006 à 21:16:09

                                                        Alors avec :

                                                        <?
                                                        $count = mysql_query("SELECT COUNT(*) AS nbreAstuces FROM astuces");
                                                        $objetNombre  = mysql_fetch_object($count);
                                                        $nombreAstuces = $objetNombre->nbreAstuces;
                                                        $astuce = mt_rand(1, $nombreAstuces);
                                                        $debut = $astuce-1;
                                                        $astuces = mysql_query('SELECT titre, text FROM astuces ORDER BY id LIMIT '.$debut.', '.$astuce.');
                                                        $result = mysql_fetch_object($astuces);
                                                        ?>
                                                        <link href="../style.css" rel="stylesheet" type="text/css">
                                                        <table width="100%"  border="0" cellspacing="0" cellpadding="0">
                                                          <tr>
                                                            <td class="grandtitre">Astuce : <? echo $result->titre; ?></td>
                                                          </tr>
                                                          <tr>
                                                            <td class="texte"><? echo $result->text; ?></td>
                                                          </tr>
                                                        </table>
                                                        ?>
                                                        <link href="../style.css" rel="stylesheet" type="text/css">
                                                        <table width="100%"  border="0" cellspacing="0" cellpadding="0">
                                                          <tr>
                                                            <td class="grandtitre">Astuce : <? echo $result->titre; ?></td>
                                                          </tr>
                                                          <tr>
                                                            <td class="texte"><? echo $result->text; ?></td>
                                                          </tr>
                                                        </table>


                                                        J'ai :
                                                        Parse error: parse error, unexpected $ in astuces.php on line 32


                                                        La ligne 32 est égal a

                                                        </table>
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          19 février 2006 à 21:16:56

                                                          je viens de te redonner la soluce au-dessus ;)
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            19 février 2006 à 21:20:56

                                                            Oki merci beaucoup sa fonctionne super bien

                                                            Pour ceux que sa pourait aider le code final est :

                                                            <?php require_once('fichier connection'); ?>
                                                            <? mysql_select_db(sélection de la bdd); ?>
                                                            <?
                                                            $count = mysql_query("SELECT COUNT(*) AS nbreAstuces FROM astuces");
                                                            $objetNombre  = mysql_fetch_object($count);
                                                            $nombreAstuces = $objetNombre->nbreAstuces;
                                                            $astuce = mt_rand(1, $nombreAstuces);
                                                            $debut = $astuce-1;
                                                            $astuces = mysql_query('SELECT titre, text FROM astuces ORDER BY id LIMIT '.$debut.', '.$astuce);
                                                            $result = mysql_fetch_object($astuces);
                                                            ?>
                                                            <link href="../style.css" rel="stylesheet" type="text/css">
                                                            <table width="100%"  border="0" cellspacing="0" cellpadding="0">
                                                              <tr>
                                                                <td class="grandtitre">Astuce : <? echo $result->titre; ?></td>
                                                              </tr>
                                                              <tr>
                                                                <td class="texte"><? echo $result->text; ?></td>
                                                              </tr>
                                                            </table>


                                                            Merci encore
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            [Sql] Sélection au hazard dans une table

                                                            × 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