PHP boucle while 10 fois

Bonjour,
Voici le code source :
$query = "SELECT id FROM pmv_voitures ORDER BY id";
$result = mysql_query($query);

if (!mysql_fetch_row($result)) {
echo "Aucun véhicule n'est présent dans la base !";
}

else {
while($row = mysql_fetch_row($result))

{
$id = $row[0];

echo "$id";
}

}

Je souhaiterai que la boucle "while" fonctionne 10 fois seulement, et cela malgré si il y a plus d'information dans la base de donnée. Comment je peux faire cela?
Configuration: Windows XP
Internet Explorer 7.0

12 réponses

  1. Le premier appel de mysql_fetch_row pour tester si il y a au moins une réponse provoque la perte du premier enregistrement 'sil y en a un.

    Voici le code que je te propose :
    mysql_connect($host,$user,$passwd)or die("<span class=\"texte\">Erreur de connexion au serveur !</span> \n");
    mysql_select_db($bdd) or die("<span class=\"texte\">Erreur de connexion a la base de donnees !</span> \n");
    
    $query = "SELECT id,titre FROM pmv_voitures ORDER BY id DESC LIMIT 3";
    $result = mysql_query($query);
    
    $nbrRows = mysql_num_rows( $result );
    
    if( $nbrRows == 0 )
    	echo "<tr><td bordercolor=\"#CCCCCC\">Aucun véhicule n'est présent dans la base !</td></tr> \n";
    else
    	{
    	while( $row = mysql_fetch_row( $result ) )
    		{
    		$id = $row[0];
    		$titre = $row[1];
    		
    		echo "<tr><td bordercolor=\"#CCCCCC\"><a href=\"http://www.citroen-rudi.com/vehicules/index.php?id=$id\">$titre</a&­gt;
    		
    		</td></tr> \n";
    		}
    	}
    
    1. mysql_connect($host,$user,$passwd)or die("<span class=\"texte\">Erreur de connexion au serveur !</span> \n");
      mysql_select_db($bdd) or die("<span class=\"texte\">Erreur de connexion a la base de donnees !</span> \n");

      $query = "SELECT id,titre FROM pmv_voitures ORDER BY id DESC LIMIT 3";
      $result = mysql_query($query);

      if (!mysql_fetch_row($result)) {
      echo "<tr><td bordercolor=\"#CCCCCC\">Aucun véhicule n'est présent dans la base !</td></tr> \n";
      }
      else {
      while($row = mysql_fetch_row($result))

      {
      $id = $row[0];
      $titre = $row[1];

      echo "<tr><td bordercolor=\"#CCCCCC\"><a href=\"http://www.citroen-rudi.com/vehicules/index.php?id=$id\">$titre</a>

      </td></tr> \n";
      }
      }


      Cela ne marche pas :( Voici le code que j'utilise. Par exemple si je rentre deux donnée la premier s'affiche, et si j'en rentre 3 les deux premiéres s'affichent...
      1. place après mysql_query :
        echo '<br>' . mysql_num_rows( $result );
        

        Qu'est-ce qui est affiché ?
        1. $query = "SELECT id,titre FROM pmv_voitures ORDER BY id DESC LIMIT 3";
          $result = mysql_query($query);

          Voilà, je n'ai donc pas de WHERE
          1. Si avec un LIMIT 3 tu ne reçois que 2 enregistrements c'est que tu as un WHERE qui ne retourne que 2 enregistrements.
            1. Bonjour,

              Je voudrais savoir si c'est normal que quand je met une "LIMIT 3" cela me selectione seulement 2 valeurs.
              1. je suis désolé j'avais pas penser à ça, alors que je l'utilise tous le temps pour trier des tableaux

                merci doc
                1. Salut,

                  Pourquoi ne pas limiter directement le nombre de lignes de la requête SQL ?
                  $query = "SELECT id FROM pmv_voitures ORDER BY id LIMIT 10"; 
                  1. ce serait plutôt ORDER BY id DESC LIMIT 0,10
                2. salut,

                  il suffit d'incrémenter de 1 à chaque fois que la boucle fais un cycle, est de bloquer si la variable est égale à 10
                  éxemple (avec for, car plus simple) :
                  $i = 0;
                  for($i=0; $i<=5; $i++)
                   {
                   if($i == 10)
                    {
                    return false();
                    }
                   $i = $i + 1;
                   print "salut $i";
                   }