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
    0
    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 
      	} 
      0
      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 ??

        0
        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.
          0
          1. Nickel, j'ai compris la décrémentation merci à toi ça fonctionne nickel comme je le souhaite.
            0