Boucle while, question d'affichage

Résolu
Bonjour à tous,

Je viens vers vous pour une petite interrogation qui est la suivante :

Je m'explique, j'ai une boucle while, qui fonctionne très bien, j'ai aucun bug ni rien, mais j'aimerais savoir s'il est possible que l'incrémentation d'une variable peut être affiché dans l'ordre inversé ?

Par exemple ma variable $incrementation = 1 (initialisation).

A chaque traitement de la boucle, la variable prend 1 donc ça donne :

1
2
3
4
...etc

Ma question est, est-ce possible de l'afficher comme telle :

...etc
4
3
2
1
et si oui, comment ça se passe dans une boucle while ?

Merci par avance pour votre réponse et aide.

David.

Configuration: Windows / Chrome 96.0.4664.93

4 réponses

  1. Modérateur
    Bonjour
    Ta variable incrémenter fais partie de la condition de ton while où elle est juste incrémentee dans la boucle ?
    Dans l'idéal, il faudrait nous montrer ton code
    1. Ma variable ne fait pas partie de la boucle voici mon code en dessous

      $nbr_vadrouille = 1;
      	$select_info_depense = $bdd->query("SELECT *, DATE_FORMAT(date_objet, '%d/%m/%Y') AS dateFR, DATE_FORMAT(date_objet, '%H:%i:%s') AS heureFR FROM vadrouille WHERE id_membre ='".$id_joueur."' ORDER BY ai DESC LIMIT $limit_start, $pagination");
      while($operation = $select_info_depense->fetch())
      {
      	if($operation['id_objet'] == 0)
      	{
      		$nom_objet = 'Ton pokadechi n\'est pas encore revenu';
      	}
      	else
      	{
      		if($operation['id_objet'] == 1)
      		{
      		$nom_objet = 'PokeBall';
      		}
      		elseif($operation['id_objet'] == 2)
      		{
      		$nom_objet = 'SuperBall';
      		}
      		elseif($operation['id_objet'] == 3)
      		{
      		$nom_objet = 'HyperBall';
      		}
      		elseif($operation['id_objet'] == 4)
      		{
      		$nom_objet = 'MasterBall';
      		}
      		elseif($operation['id_objet'] == 12)
      		{
      		$nom_objet = 'SuperBonbon';
      		}
      		elseif($operation['id_objet'] == 35)
      		{
      		$nom_objet = 'Potion';
      		}
      		elseif($operation['id_objet'] == 5000)
      		{
      		$nom_objet = '5000 P$';
      		}
      		elseif($operation['id_objet'] == 10)
      		{
      		$nom_objet = '10 Pokelite';
      		}
      		elseif($operation['id_objet'] == 1111)
      		{
      		$nom_objet = 'Alakazamite';
      		}
      		elseif($operation['id_objet'] == 531)
      		{
      		$nom_objet = 'Nanmeouie';
      		}
      		else
      		{
      		}
      	}
      	
      ?>
      	<tr>
      		<td><?php echo $nbr_vadrouille++; ?></td>
      		<td>
      			<img src="../../images/pokemon/<?php echo $operation['id_pokadechi'];?>.png"</img>
      		</td>
      		<td>
      			<?php echo $nom_objet;?>
      		</td>
      		<td>
      			<?php echo ''.$operation['dateFR'].' à '.$operation['heureFR'].'';?>
      		</td>
      	</tr>
      	<?php 
      	} 
      1. Modérateur
        Alors,

        Déjà, ton code pourrait être largement simplifié comme ceci :
        
        $nbr_vadrouille = 1;
        
        $obj = [
         '0' => 'Ton pokadechi n\'est pas encore revenu'
         ,'1' =>  'PokeBall'
         ,'2' =>  'SuperBall'
         ,'3' =>  'HyperBall'
         ,'4' =>  'MasterBall'
         ,'10' =>  '10 Pokelite'
         ,'12' =>  'SuperBonbon'
         ,'35' =>  'Potion'
         ,'531' =>  'Nanmeouie'
         ,'1111' =>  'Alakazamite'
         ,'5000' =>  '5000 P$'
         
        
        ];
        
        $select_info_depense = $bdd->query("SELECT *, DATE_FORMAT(date_objet, '%d/%m/%Y') AS dateFR, DATE_FORMAT(date_objet, '%H:%i:%s') AS heureFR FROM vadrouille WHERE id_membre ='".$id_joueur."' ORDER BY ai DESC LIMIT $limit_start, $pagination");
        while($operation = $select_info_depense->fetch())
        {
            $nom_objet = !empty($obj[$operation['id_objet']]) ? $obj[$operation['id_objet']] : '-';
        
        ?>
        	<tr>
        		<td><?php echo $nbr_vadrouille++; ?></td>
        		<td>
        			<img src="../../images/pokemon/<?php echo $operation['id_pokadechi'];?>.png"</img>
        		</td>
        		<td>
        			<?php echo $nom_objet;?>
        		</td>
        		<td>
        			<?php echo ''.$operation['dateFR'].' à '.$operation['heureFR'].'';?>
        		</td>
        	</tr>
        	<?php 
        	} 
        


        Ensuite, pour décrémenter, il suffit d'utiliser le signe - au lieu du signe +
         $nbr_vadrouille--;
        

        encore faut-il savoir à combien tu dois initialiser ta variable au départ ....

        Tu fais du mysqli ou du pdo ??

        1. je dev en PDO.

          Donc si je comprend bien, je dois compter le nombre d'entrée dans la table et ensuite je décrémente c'est ça ?

          Et merci pour la simplification du code il est vrai que j'aurais pu faire plus simple.
          1. Nickel, j'ai compris la décrémentation merci à toi ça fonctionne nickel comme je le souhaite.