Remplir un tableau en php

Mickael86480 Messages postés 698 Statut Membre -  
Mickael86480 Messages postés 698 Statut Membre -
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

  1. arthezius Messages postés 3756 Statut Membre 475
     
    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
    1. Mickael86480 Messages postés 698 Statut Membre 41
       
      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
    2. arthezius Messages postés 3756 Statut Membre 475
       
      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