Fonctions aléatoire php avec une variable!
Résolu
francois59510
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
sheik54 Messages postés 76 Date d'inscription Statut Membre Dernière intervention -
sheik54 Messages postés 76 Date d'inscription Statut Membre Dernière intervention -
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 :)
$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 :)
A voir également:
- Fonctions aléatoire php avec une variable!
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Vba range avec variable ✓ - Forum VB / VBA
- Excel générer mot de passe aléatoire - Forum Excel
- Range avec une Variable ✓ - Forum VB / VBA
15 réponses
Si tu compte faire avec ta base de données je t'ai répondus sur l'autre topic (https://forums.commentcamarche.net/forum/affich-21917596-probleme-de-trie-avec-mysql#4)
Sinon rand te retourne une valeur entre un intervalle. Si tu ne peux pas spécifier 2 bornes comment veux-tu que rand sache quoi te rendre ?
Si c'est juste pour avoir un nombre aléatoire tu peux utiliser rand de cette sorte :
Sinon rand te retourne une valeur entre un intervalle. Si tu ne peux pas spécifier 2 bornes comment veux-tu que rand sache quoi te rendre ?
Si c'est juste pour avoir un nombre aléatoire tu peux utiliser rand de cette sorte :
echo rand();
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 :
Il manque des morceaux à la fin. Ca donnerai :
Si ca ne fonctionne pas, marque en dessous du code précédent le code suivant et recolle le ici :
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"].'";';
Je n'ai pas trop compris ton problème, tu veux générer un nombre aléatoire allant de combien à combien?
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
(Solution donnée ici : https://forums.commentcamarche.net/forum/affich-21917596-probleme-de-trie-avec-mysql#4)
Pour tout les mots de la catégorie "Anglais" (en PHP avec PDO) :
$res = $db->query('SELECT mot FROM voc_anglais_essentiel WHERE categorie="Anglais";');
$result=$res->fetchAll(PDO::FETCH_COLUMN, 0);
echo $result[array_rand($result)];
Pour tout les mots de la catégorie "Anglais" (en PHP avec PDO) :
$res = $db->query('SELECT mot FROM voc_anglais_essentiel WHERE categorie="Anglais";');
$result=$res->fetchAll(PDO::FETCH_COLUMN, 0);
echo $result[array_rand($result)];
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
^^
$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
^^
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 :
EDIT : tant que j'y suis je corrige le code faux ^^
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 ^^
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>
<?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>
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^^
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^^
Je crois comprendre ce que tu veux. Voici un exemple de code (pour remplacer toute ta page)
EDIT : oups, oublié de changer la requête ^^
$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 ^^
Le code total de ta page sera :
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.
<?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.
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 ^^
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 ^^
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
$result=$res->fetchAll(PDO::FETCH_COLUMN, 0);
puisqu il me met :
Fatal error: Call to a member function fetchAll() on a non-object in