Ne pas afficher une variable si elle a la même valeur ...

Fermé
Randaxhe - Modifié le 31 mars 2022 à 20:43
yg_be Messages postés 23303 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 31 octobre 2024 - 1 avril 2022 à 11:48
Bonsoir à tous,


Je m'arrache les cheveux afin de trouver le moyen de mettre en page de façon plus claire le résultat de ma requête.

Y a-t-il un moyen de ne pas répéter l'affichage d'une variable si elle est = à l'entrée précédente ?

En résumé, le résultat de ma requête sql s'affiche comme ceci :
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|  Europe              |  Belgique            |  Bruxelles        |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|  Europe              |  Belgique           |  Liège             |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|  Europe              |  Belgique           |  Namur           |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|  Europe              |  Belgique           |  Charleroi         |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|  Europe              |  France              |  Paris             |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|  Europe              |  France            |  Lilles            |
+- - - - - - - - - - - + - - - - - - - - - - + -- - - - - - - - - +
|  Europe              |  France             |  Dijon            |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|  Europe              |  France             |  Marseille      |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +


Et j’aimerais pouvoir l’afficher comme cela :
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|  Europe              |  Belgique           |  Bruxelles        |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|                      |                      |  Liège             |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|                      |                      |  Namur          |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|                      |                      |  Charleroi       |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|                      |  France             |  Paris               |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|                      |                      |  Lilles              |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|                      |                      |  Dijon               |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +
|                      |                      |  Marseille      |
+- - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - +


Y a-t-il un moyen de faire cela ?
D'avance, merci

PS : désolé pour l'affichage, les tableaux se sont écrasés lors de la validation....Mais vous comprendrez, j'en suis sûr !

3 réponses

Un tout grand merci pour ta solution que je vais adopter certainement...
La nuit portant conseil, j'ai tout de même trouvé ceci ce matin qui fonctionne :

<?php 
$i=0; 
if($rowAllRencontres_ID != null):
foreach($rowAllRencontres_ID as $r):
?>
<div class="row">
  <div class="col-md-2">
  <?php
  if($i>0){
    if($rowAllRencontres_ID[$i-1]->Date_Match!=$r->Date_Match){echo $r->Date_Match;}
    else {echo ' ';}
  }
  else echo $r->Date_Match;
  ?>
  </div>
  <div class="col-md-2"><?php echo $r->Lieu_Match; ?></div>
  <div class="col-md-3"><?php echo $r->Rencontre_Match; ?></div>
</div>
<?php 
$i++;
endforeach;
endif;
?>
1
yg_be Messages postés 23303 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 31 octobre 2024 1 549
1 avril 2022 à 11:48
Mon approche permet plus facilement de traiter les ruptures de séquences sur plusieurs colonnes, par exemple s'assurer que le lieu est affiché quand la date change, même si le lieu ne change pas.
1
yg_be Messages postés 23303 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 31 octobre 2024 Ambassadeur 1 549
31 mars 2022 à 22:01
bonjour,
cela me semble possible.
peux-tu partager ton code PHP, pour que nous puissions suggérer comment l'adapter?
quand tu partages du code, merci d'utiliser les balises: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
Je suis dans Codeigniter, voici les lignes de code :

1. La requête :
 function get_all_Matchs($id)
 {
  $this->db->select('*');
  $this->db->from('Table_Matchs');
  $this->db->where('Competition_ID',$id);
  $this->db->order_by('Table_Matchs.Date_Match','ASC');

  $q = $this->db->get();
  if($q->num_rows()>0) 
  {
   foreach($q->result() as $row) 
   {
    $data[] = $row;
   }
   return $data;
  }
 }


2. L'affichage :
<?php  
if($rowAllRencontres_ID != null):
foreach($rowAllRencontres_ID as $r):
?>
<div class="row">
  <div class="col-md-2"><?php echo $r->Date_Match; ?></div>
  <div class="col-md-2"><?php echo $r->Lieu_Match; ?></div>
  <div class="col-md-3"><?php echo $r->Rencontre_Match; ?></div>
</div>
<?php 
endforeach;
endif;
?>


Il s'agit d'un calendrier de matchs ...et non de villes (que j'avais pris comme illustration !)
Donc, dans ce cas-ci, tant que la date est la même -> ne pas le répéter ...
Et dans cette même date, tant que le lieu est le même -> ne pas le répéter non plus !
Ce qui simplifie nettement la lecture du calendrier...
0
yg_be Messages postés 23303 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 31 octobre 2024 1 549
31 mars 2022 à 22:31
L'idée générale, c'est de mémoriser la valeur du dernier élément affiché, et, si la valeur courante est identique, de ne pas l'afficher.
Donc, tu mémorises l'ancienne valeur de $r->Date_Match. Si la nouvelle valeur est identique à l'ancienne, tu n'affiches rien.
Sinon, tu affiches et mémorises la nouvelle.
0
Randaxhe > yg_be Messages postés 23303 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 31 octobre 2024
Modifié le 31 mars 2022 à 22:44
Merci pour ta réaction rapide !
C’est justement sur ce principe-là que je sèche…
Puis-je te demander de m’illustrer tes propos par quelques lignes de codes ?
Merci
0
yg_be Messages postés 23303 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 31 octobre 2024 1 549 > Randaxhe
Modifié le 1 avril 2022 à 09:04
$anciennedate = "";
foreach($rowAllRencontres_ID as $r)    {
    $datecourante = $r->Date_Match;
    if ( $datecourante == $anciennedate ) {
        $datecourante = "";
    }
    else {
         $anciennedate = $datecourante;
    }
    echo $datecourante;
}
0