Remplir un tableau en php

Fermé
Mickael86480 Messages postés 638 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 - Modifié par Mickael86480 le 13/09/2011 à 23:26
Mickael86480 Messages postés 638 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 - 16 sept. 2011 à 13:56
Bonjour, je souhaiterai savoir comment remplir un tableau avec des valeurs trouvées par une requête et ensuite choisir au hasard une valeur de ce tableau, voici ce que j'ai fais:

$requete = "SELECT nom_pays FROM pays WHERE niveau_quizz like 0";
$trouver = mysql_query($requete) or (mysql_error());
$nb = mysql_num_rows($trouver);

$tableau=array();

for($i=0; $i<$nb; $i++){
$tableau[$i]=$trouver;
}
echo''.$tableau[$i].'';

or rien n'est affiché donc il n'y a rien dans le tableau

merci

2 réponses

arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
14 sept. 2011 à 01:42
Salut,

$requete = "SELECT nom_pays FROM pays WHERE niveau_quizz like 0";
$trouver = mysql_query($requete) or (mysql_error());
$nb = mysql_num_rows($trouver);

Ce script ne peut que t'afficher le nombre de résultat.
Si tu souhaites afficher les résultats, il faudra ajouter cette ligne:
$data = mysql_fetch_array($trouver);

echo $data['nom_pays'];

Avec ce code, tu pourras afficher un résultat (le dernier s'il y en a plusieurs).
Si tu souhaites tous les afficher:
while($data = mysql_fetch_array($trouver))
{
echo $data['nom_pays'].'<br/>';
}


Si tu souhaites en revanche choisir un résultat au hasard parmis ceux trouver, je te propose ceci:
// On prépare la requète
$sql = "SELECT nom_pays FROM pays WHERE niveau_quizz LIKE 0";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// Calcul du nombre de résultats
$nb = mysql_num_rows($req);

// On place les résultats dans un tableau
while($data = mysql_fetch_array($req))
{
$resultats[] = $data['nom_pays'];
}

// On prépare un nombre aléatoire entre 0 et le nombre de résultats
$nb_min = 0;
$nb_max = $nb-1;
$nombre = mt_rand($nb_min,$nb_max);

// On affiche le résultat aléatoire
echo $resultats[$nombre];
0
Mickael86480 Messages postés 638 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
Modifié par Mickael86480 le 16/09/2011 à 12:46
Ok j'ai copié ce que tu as fais, ça marche nikel, le problème est ce que j'ai rajouté, c'est a dire allez chercher dans la bdd ce qui correspond a ce qui a été choisi au hasard, voici:

$requete="SELECT nom_pays FROM pays WHERE nom_pays LIKE ".$resultats[$nombre]."";
$requ = mysql_query($requete) or die('Erreur SQL !<br />'.$requete.'<br />'.mysql_error());

while($donnees = mysql_fetch_array($requ)){
echo'<img id=fl src=img/drapeau/'.$donnees['id'].'.png border=2 >';
}


et voci l'erreur que j'ai:

SELECT id FROM pays WHERE nom_pays LIKE Danemark
Unknown column 'Danemark' in 'where clause

je comprends l'erreur mais je ne vois pas comment la résoudre merci
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
Modifié par arthezius le 16/09/2011 à 12:51
Dans ce cas, on va faire les choses autrement:
// On prépare la requète
$sql = "SELECT id FROM pays WHERE niveau_quizz LIKE 0";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// Calcul du nombre de résultats
$nb = mysql_num_rows($req);

// On place les résultats dans un tableau
while($data = mysql_fetch_array($req))
{
$resultats[] = $data['id'];
}

// On prépare un nombre aléatoire entre 0 et le nombre de résultats
$nb_min = 0;
$nb_max = $nb-1;
$nombre = mt_rand($nb_min,$nb_max);

// On affiche le résultat aléatoire
$id = $resultats[$nombre];
$sql = 'SELECT * FROM pays WHERE id="'.mysql_real_escape_string($id).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);

Cette dernière requête te récupère toutes les données correspondant au résultat aléatoire.
Si tu souhaites seulement utiliser l'id de ce résultat pour afficher le drapeau (ce qui semble être le cas d'après ton dernier exemple, tu n'as pas besoin de cette dernière requête.
Dans ce code, j'ai placé l'id au lieu du nom du pays dans le tableau. La deuxième requête te permet d'avoir les deux.
0
Mickael86480 Messages postés 638 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 11 mars 2021 35
Modifié par Mickael86480 le 16/09/2011 à 14:31
Okey ça marche, merci, maintenant voici un lien vers un ancien post, mais personne ne m'a répondu, peut-être que tu peux m'aider :) :

https://forums.commentcamarche.net/forum/affich-21004377-variable-place-aleatoirement-radio-bouton-php#p21004377

merci
0