2010-09-12 2 views
0

J'utilise une table pour itérer les données de la base de données dans une table. mon code html estComment modifier l'élément html de manière dynamique tout en itérant à partir de la base de données

<table id="tablesorter"> 
     <thead> 
      <tr> 
      <th>Name</th> 
      <th>Location</th> 
      <th>Email</th> 
      <th>Phone</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
      <td>Your Name</td> 
      <td>Somewhere</td> 
      <td>[email protected]</td> 
      <td>9999999999</td> 
      </tr> 
     <tr class="trow"> 
      <td>Your Name</td> 
      <td>Somewhere</td> 
      <td>[email protected]</td> 
      <td>9999999999</td> 
      </tr> 
      </tbody> 
    </table> 

Dans mon tableau HTML j'utilise une classe pour une ligne de table de style pour chaque seconde ligne de table. Maintenant, tout en récupérant les données de la base de données, je veux m'assurer qu'il fait la même chose. il devrait ajouter la classe trow pour chaque seconde ligne du tableau.

quelle serait la logique derrière cette utilisation avec boucle while?

Répondre

1

me semble que vous pouvez simplement utiliser une déclaration ternaire pour définir et unset la variable de classe comme une boucle par l'impression de chaque ligne:

$class = ($class=='trow')?'':'trow'; 
<tr class="<?= $class ?>"> 
<td>Your Name</td> 
<td>Somewhere</td> 
<td>[email protected]</td> 
<td>9999999999</td> 
</tr> 

Alors que chaque fois qu'une ligne est imprimé la variable $class basculerait entre trow et rien.

J'utilise cette logique lors de la création des listes qui exportent pour exceller assez souvent

+0

wow si simple et facile à comprendre la logique, qui était brillante réponse et le genre de solution que je cherchais. Merci beaucoup. :) –

+0

Pas de problème, Ibrahim. Le ternaire est devenu par le meilleur ami de la fin – d2burke

1

Vous devriez utiliser une machine simple d'état:

$evens = FALSE; 
while($row = fetch_from_db()) { 
    $evens = !$evens; // invert the even/odd flag 
    $rowtype = ($evens === TRUE) ? ' class="trow"' : ''; 
    echo <<<EOL 
<tr{$rowtype}> 
    <td>etc... 
</tr> 

EOL; 
} 

Depuis $evens commence faux, sur la première ligne, il est inversé à true, qui définit $rowtype à 'Trow'. Sur la deuxième rangée, il est inversé à false, $rowtype devient vide. Au troisième rang, nous sommes de retour à vrai/trow, et ainsi de suite, ping-ponging avant et en arrière.

2

Fondamentalement, c'est ce que vous voulez faire:

  1. Utilisez une variable compteur pour garder la trace de la ligne que vous êtes
  2. Sur chaque ligne, vérifiez si le compteur de ligne est encore. La manière la plus simple de le faire est avec l'opérateur modulo %.

    6 % 2 == 0 // true 
    5 % 2 == 1 // true 
    4 % 2 == 1 // false 
    
Questions connexes