Fonctions aléatoire php avec une variable!

Résolu
Bonjour, je cherche une fonctions php qui trouve un nombre aux hasard(type rand()), voici mon exemple

$maVariable=10
$nombreAuxHasard=rand($maVariable)
je ne peux pas rentrer 2valeurs($min,$max) car je ne les connai pas!
merci de votre aide si vous avez une solution :)

15 réponses

  1. Je n'ai pas trop compris ton problème, tu veux générer un nombre aléatoire allant de combien à combien?
    0
    1. voila mon problème en plus détaillé, je possède un base de donné avec des mots rangé par catégories, voici un exemple:
      Anglais Français Catégories
      bold courageux adjectif

      les mot sont rentré dans le désorde dans la table mysql par l'internote mais du coup si je veux selectionner tt une catégorie et sortir un mot aléatoirement de celle si je ne sait pas comment faire ^^j'espère que s t'éclaire
      0
      1. je l'adapte a ma situation et j'ai donc :

        $res = $db->query('SELECT id FROM voc_anglais_essentiel WHERE categories=\'' . $_GET['categories'] . '\'');
        $result=$res->fetchAll(PDO::FETCH_COLUMN, 0);
        $nombreAuHasard = $result[array_rand($result)];
        et il me met:

        Notice: Undefined variable: db in C:\wamp\www\qcm_pour_moi\anglais_voc_essentiel_an.php on line 18
        Fatal error: Call to a member function query() on a non-object in C:\wamp\www\qcm_pour_moi\anglais_voc_essentiel_an.php on line 18

        ^^
        0
        1. Notice: Undefined variable: db

          Ca veut dire que tu stock le connexion à la base dans une autre variable que db. Si je m'en réfère à l'autre sujet (dont la réponse est toujours valable), il faut que tu remplace $db par $bdd

          Soit :
          $res = $bdd->query('SELECT id FROM voc_anglais_essentiel WHERE categories="'. $_GET['categories'].'";); 
          $result=$res->fetchAll(PDO::FETCH_COLUMN, 0); 
          $nombreAuHasard = $result[array_rand($result)];
          


          EDIT : tant que j'y suis je corrige le code faux ^^
          0
          1. si sa peut t'aider voici mon script:
            <?php include('connexion.inc');
            // cherche le nombre aux hasard
            $res = $db->query('SELECT mot FROM voc_anglais_essentiel WHERE categories=\'' . $_GET['categories'] . '\'');
            $result=$res->fetchAll(PDO::FETCH_COLUMN, 0);
            $nombreAuHasard = $result[array_rand($result)];

            $res->closeCursor();

            //selectionne le mot anglais aléatoirement
            $bdd->exec('SET NAMES utf8');
            $reponseFrancais= $bdd->query('SELECT francais FROM voc_anglais_essentiel WHERE id='.$nombreAuHasard);
            $donnees = $reponseFrancais->fetch();
            $motFrancaisPropose=$donnees['francais'];
            $_SESSION['motFrancais']= $motFrancaisPropose;

            ?>

            <!--Formulaire pour rentrer la traduction -->
            <p>La traduction du mot "<strong><?php echo $motFrancaisPropose; ?></strong>" est:
            <form method="post" action="anglais_voc_essentiel_an_traitement.php?categories=<?php echo $_GET['categories']; ?>" autocomplete="off">
            <input type="text" name="reponse_qcm" />
            <input type="submit" value="valider"/>
            </form><br /></p>
            <?php
            $reponseFrancais->closeCursor();
            ?>

            </div>
            0
            1. Voir message précédent pour l'erreur spécifié au dessus.
              0
            2. on a envoyé le message en meme temp c'est pour sa ^^
              0
          2. on y est presque, il me met une dernière erreure
            Fatal error: Call to a member function fetchAll() on a non-object in C:\wamp\www\qcm_pour_moi\anglais_voc_essentiel_an.php
            je te remet le script complet:

            <?php session_start();

            ?>
            <!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" >
            <head>
            <title>QCM</title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <link rel="stylesheet" media="screen" type="text/css" title="designqcm" href="designqcm.css" />
            <link rel="shortcut icon" type="image/x-icon" href="php.ico" />
            </head>
            <body>
            <div class="header"><img src="header.png" alt="qcm" class="header"/></div>
            <?php include 'menu.php' //menu?>
            <div id="corp">
            <?php include('connexion.inc');
            // cherche le nombre aux hasard
            $res = $bdd->query('SELECT id FROM voc_anglais_essentiel WHERE categories="'. $_GET['categories'] . '\'');
            $result=$res->fetchAll(PDO::FETCH_COLUMN, 0);
            $nombreAuHasard = $result[array_rand($result)];

            $res->closeCursor();

            //selectionne le mot anglais aléatoirement
            $bdd->exec('SET NAMES utf8');
            $reponseFrancais= $bdd->query('SELECT francais FROM voc_anglais_essentiel WHERE id='.$nombreAuHasard);
            $donnees = $reponseFrancais->fetch();
            $motFrancaisPropose=$donnees['francais'];
            $_SESSION['motFrancais']= $motFrancaisPropose;

            ?>

            <!--Formulaire pour rentrer la traduction -->
            <p>La traduction du mot "<strong><?php echo $motFrancaisPropose; ?></strong>" est:
            <form method="post" action="anglais_voc_essentiel_an_traitement.php?categories=<?php echo $_GET['categories']; ?>" autocomplete="off">
            <input type="text" name="reponse_qcm" />
            <input type="submit" value="valider"/>
            </form><br /></p>
            <?php
            $reponseFrancais->closeCursor();
            ?>

            </div>
            <div class="nombreReponses">
            <p>
            nombre de bonnes réponses: <strong><?php echo $_SESSION['nombreDeBonnesReponses']?></strong><br />
            nombre de mauvaises réponses: <strong><?php echo $_SESSION['nombreDeMauvaisesReponses']?></strong><br />
            </p>
            </div>
            <?php include ('heure.php');?>

            </body>
            </html>
            je sais je suis un peut mauvais je viens de commencer j'ai 15ans^^
            0
            1. Je crois comprendre ce que tu veux. Voici un exemple de code (pour remplacer toute ta page)

               $res = $bdd->query('SELECT anglais, francais FROM voc_anglais_essentiel'); 
               $result=$res->fetchAll(); 
               $alea = array_rand($result); 
               echo  $result[$alea]['anglais']; 
               echo  $result[$alea]['francais']; 
               $bdd = null; 
              


              EDIT : oups, oublié de changer la requête ^^
              0
              1. désolé mais je ne suis plus ^^je n'ai pas vraiment compris tu dépasse mes connaisances! :p
                0
                1. Le code total de ta page sera :

                  <?php session_start();?>
                  <!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" >
                  <head>
                  <title>QCM</title>
                  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                  <link rel="stylesheet" media="screen" type="text/css" title="designqcm" href="designqcm.css" />
                  <link rel="shortcut icon" type="image/x-icon" href="php.ico" />
                  </head>
                  <body>
                  <div class="header"><img src="header.png" alt="qcm" class="header"/></div>
                  <?php
                  include 'menu.php';
                  
                  echo '<div id="corp">';
                  
                  include('connexion.inc');
                  
                   $res = $bdd->query('SELECT anglais, francais FROM voc_anglais_essentiel;'); 
                   $result=$res->fetchAll(); 
                   $alea = array_rand($result); 
                  
                  echo 'Le mot anglais : '.$result[$alea]["anglais"].' veut dire en français '.$result[$alea]["francais"];
                  
                  ?>
                  </div>
                  </body>
                  </html> 
                  


                  Cette page va t'afficher la valeur anglais et la valeur française de la même ligne présente dans la table 'voc_anglais_essentiel'. Tu peux ajouter des critères de recherche dans la table mais test cette page et dis moi si ça bug.
                  0
                  1. en je vais t'expliquer le but de ce que je fait: c'est un qcm ou on choisi la catégorie il nous met un mot francais et on doit ecrire dans un formulaire la traduction anglais ^^
                    voici ma page:
                    <?php session_start();?>
                    <!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" >
                    <head>
                    <title>QCM</title>
                    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                    <link rel="stylesheet" media="screen" type="text/css" title="designqcm" href="designqcm.css" />
                    <link rel="shortcut icon" type="image/x-icon" href="php.ico" />
                    </head>
                    <body>
                    <div class="header"><img src="header.png" alt="qcm" class="header"/></div>
                    <?php
                    include 'menu.php';

                    echo '<div id="corp">';

                    include('connexion.inc');

                    $res = $bdd->query('SELECT anglais, francais FROM voc_anglais_essentiel WHERE categories="'. $_GET['categories'] . '\''';
                    $result=$res->fetchAll();
                    $alea = array_rand($result);

                    echo 'La traduction du mot : '.$result[$alea]["anglais"].' est<br /><form method="post" action="anglais_voc_essentiel_an_traitement.php?categories='. $_GET['categories'].'" autocomplete="off">
                    <input type="text" name="reponse_qcm" />
                    <input type="submit" value="valider"/>
                    </form><br /></p>

                    ?>
                    </div>
                    </body>
                    </html>
                    et sa ne marche pas ^^
                    0
                    1. en fait mon problème vient de cette ligne:
                      $result=$res->fetchAll(PDO::FETCH_COLUMN, 0);
                      puisqu il me met :
                      Fatal error: Call to a member function fetchAll() on a non-object in
                      0
                      1. L'erreur là viens d'un problème avec la création de l'objet $res.

                        Si je reprend le dernier code donné. L'erreur viens de :

                        $res = $bdd->query('SELECT anglais, francais FROM voc_anglais_essentiel WHERE categories="'. $_GET['categories'] . '\'''; 
                        

                        Il manque des morceaux à la fin. Ca donnerai :
                        $res = $bdd->query('SELECT anglais, francais FROM voc_anglais_essentiel WHERE categories="'.$_REQUEST["categories"].'";');
                        


                        Si ca ne fonctionne pas, marque en dessous du code précédent le code suivant et recolle le ici :
                        echo 'SELECT anglais, francais FROM voc_anglais_essentiel WHERE categories="'.$_REQUEST["categories"].'";';
                        1
                        1. j'ai pas compris comment ta fait mais sa marche!!!!! ;) tu gère!
                          0
                          1. Si la réponse est satisfaisante à ton problème, merci de mettre le sujet comme "Résolu"
                            0