Fonctions aléatoire php avec une variable!

Résolu
francois59510 Messages postés 20 Statut Membre -  
sheik54 Messages postés 76 Statut Membre -
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. sheik54 Messages postés 76 Statut Membre 11
     
    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
  2. Dynamix Messages postés 206 Statut Membre 76
     
    Je n'ai pas trop compris ton problème, tu veux générer un nombre aléatoire allant de combien à combien?
    0
  3. francois59510 Messages postés 20 Statut Membre
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. francois59510 Messages postés 20 Statut Membre
     
    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
  6. sheik54 Messages postés 76 Statut Membre 11
     
    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
  7. francois59510 Messages postés 20 Statut Membre
     
    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. sheik54 Messages postés 76 Statut Membre 11
       
      Voir message précédent pour l'erreur spécifié au dessus.
      0
    2. francois59510 Messages postés 20 Statut Membre
       
      on a envoyé le message en meme temp c'est pour sa ^^
      0
  8. francois59510 Messages postés 20 Statut Membre
     
    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
  9. sheik54 Messages postés 76 Statut Membre 11
     
    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
  10. francois59510 Messages postés 20 Statut Membre
     
    désolé mais je ne suis plus ^^je n'ai pas vraiment compris tu dépasse mes connaisances! :p
    0
  11. sheik54 Messages postés 76 Statut Membre 11
     
    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
  12. francois59510 Messages postés 20 Statut Membre
     
    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
  13. francois59510 Messages postés 20 Statut Membre
     
    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
  14. francois59510 Messages postés 20 Statut Membre
     
    j'ai pas compris comment ta fait mais sa marche!!!!! ;) tu gère!
    0
    1. sheik54 Messages postés 76 Statut Membre 11
       
      Si la réponse est satisfaisante à ton problème, merci de mettre le sujet comme "Résolu"
      0