[php] Affichage d'un tableau particulier.

[Fermé]
Signaler
-
 bibi -
Bonjour, je sait que le titre n'est pas très explicite.

Pour commencer :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >  
   <head>  
       <title>BDD DFIS</title>  
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />  
    <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design2.css" />  
   </head>  
   <body>  
  <div id="menu">  
   <ul id="onglets">  
    <li class="active"><a href=""> Acceuil </a></li>  
    <li><a href=""> Rechercher </a></li>  
    <li><a href=""> Ajouter </a></li>  
    <li><a href=""> Modifier </a></li>  
    <li><a href=""> Supprimer </a></li>  
    <li><a href=""> Restaurer </a></li>  
   </ul>  
  </div>  
  <br>  
  <div id="boundary">  
   <div id="content">  
    <div id="itsthetable">  
     <table>  
       <caption>Base de données DFIS</caption>  
       <thead>  
        <tr>  
         <th scope="col">Grade</th>  
         <th scope="col">Nom</th>  
         <th scope="col">Prénom</th>  
         <th scope="col">Epouse</th>  
         <th scope="col">Naissance</th>  
         <th scope="col">Affectation</th>   
         <th scope="col">Discipline</th>  
         <th scope="col">ECN 2EME DATE</th>   
         <th scope="col">RANG ECN2</th>   
         <th scope="col">Date nomination interne</th>  
         <th scope="col">Réf nomination interne</th>  
         <th scope="col">Obs générales</th>   
        </tr>  
       </thead>  
       <tfoot>  
        <tr>  
         <th scope="row"></th>  
         <td colspan="37"></td>  
        </tr>  
       </tfoot>  
       <tbody>  
        <?php  
         try  
         {  
          include("sql.inc");  
          $reponse = $bdd->prepare('SELECT * FROM etat');  
          $reponse->execute();  
          $reponse->rowCount();  
          while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC))   
           { ?>           
            <tr >          
             <?php echo '<td>',$donnees['GRADE'];'</td>'?>  
             <?php echo '<td>',$donnees['Nom']; '</td>'?>  
             <?php echo '<td>',$donnees['Prénom']; '</td>'?>  
             <?php echo '<td>',$donnees['Epouse']; '</td>'?>  
             <?php echo '<td>',$donnees['Naissance']; '</td>'?>  
             <?php echo '<td>',$donnees['Affectation']; '</td>'?>  
             <?php echo '<td>',$donnees['Discipline']; '</td>'?>  
             <?php echo '<td>',$donnees['ECN 2EME DATE']; '</td>'?>  
             <?php echo '<td>',$donnees['RANG ECN2']; '</td>'?>  
             <?php echo '<td>',$donnees['Date nomination interne']; '</td>'?>  
             <?php echo '<td>',$donnees['Réf nomination interne']; '</td>'?>  
             <?php echo '<td>',$donnees['Obs générales']; '</td>'?>  
            </tr>  
            <tr class="odd">  
             <?php echo '<td>',$donnees['GRADE'];'</td>'?>  
             <?php echo '<td>',$donnees['Nom']; '</td>'?>  
             <?php echo '<td>',$donnees['Prénom']; '</td>'?>  
             <?php echo '<td>',$donnees['Epouse']; '</td>'?>  
             <?php echo '<td>',$donnees['Naissance']; '</td>'?>  
             <?php echo '<td>',$donnees['Affectation']; '</td>'?>  
             <?php echo '<td>',$donnees['Discipline']; '</td>'?>  
             <?php echo '<td>',$donnees['ECN 2EME DATE']; '</td>'?>  
             <?php echo '<td>',$donnees['RANG ECN2']; '</td>'?>  
             <?php echo '<td>',$donnees['Date nomination interne']; '</td>'?>  
             <?php echo '<td>',$donnees['Réf nomination interne']; '</td>'?>  
             <?php echo '<td>',$donnees['Obs générales']; '</td>'?>  
            </tr>  
           <?php  
           }  
          $reponse->closeCursor();   
         }  
          catch(Exception $e)  
         { die('Erreur : '.$e->getMessage()); }  
           ?>  
       </tbody>  
     </table>  
    </div>  
   </div>  
  </div>  
 </body>  
</html>  


et son CSS :
#onglets  
{  
        position : absolute;  
        border : 1px solid transparent;  
        padding : 0;  
        font : bold 11px Batang, arial, serif;  
        list-style-type : none;  
        left : 50%;  
        margin-top : 0;  
        width : 430px;  
  margin-left : -215px;  
}  

#onglets li  
{  
    float : left;  
    height : 21px; /* à modifier suivant la taille de la police pour centrer le texte dans l'onglet */  
    background-color: #F4F9FD;  
    margin : 2px 2px 0 2px !important;  /* Pour les navigateurs autre que IE */  
    margin : 1px 2px 0 2px;  /* Pour IE  */  
    border : 1px solid #9EA0A1;  
}  

#onglets li.active  
{  
    border-bottom: 1px solid #fff;  
    background-color: #fff;  
}  

#onglets a  
{  
    display : block;  
    color : #666;  
    text-decoration : none;  
    padding : 4px;  
}  

#onglets a:hover  
{  
    background : #fff;  
}  

#menu  
{  
        border-bottom : 1px solid #9EA0A1;  
        padding-bottom : 25px;  
}  



table   
{   
 background:#D3E4E5;  
 border:1px solid gray;  
 border-collapse:collapse;  
 color:#fff;  
 font:normal 12px verdana, arial, helvetica, sans-serif;  
}  

caption   
{   
 border:1px solid #5C443A;  
 color:#5C443A;  
 font-weight:bold;  
 letter-spacing:20px;  
 padding:6px 4px 8px 0px;  
 text-align:center;  
 text-transform:uppercase;  
}  

td, th   
{   
 color:#363636;  
 padding:.5em;  
}  

tr   
{   
 border:1px dotted gray;  
}  
thead th, tfoot th   
{   
 background:#5C443A;  
 color:#FFFFFF;  
 padding:3px 10px 3px 10px;  
 text-align:left;  
 text-transform:uppercase;  
}  

tbody td a   
{   
 color:#363636;  
 text-decoration:none;  
}  

tbody td a:visited   
{   
 color:gray;  
 text-decoration:line-through;  
}  
tbody td a:hover   
{   
 text-decoration:underline;  
}  

tbody th a   
{   
 color:#363636;  
 font-weight:normal;  
 text-decoration:none;  
}  

tbody th a:hover   
{   
 color:#363636;  
}  
tbody td+td+td+td a   
{   
 background-image:url('bullet_blue.png');  
 background-position:left center;  
 background-repeat:no-repeat;  
 color:#03476F;  
 padding-left:15px;  
}  

tbody td+td+td+td a:visited   
{   
 background-image:url('bullet_white.png');  
 background-position:left center;  
 background-repeat:no-repeat;  
}  

tbody th, tbody td   
{   
 text-align:left;  
 vertical-align:top;  
}  

tfoot td   
{   
 background:#5C443A;  
 color:#FFFFFF;  
 padding-top:3px;  
}  

.odd   
{   
 background:#fff;  
}  
tbody tr:hover   
{   
 background:#99BCBF;  
 border:1px solid #03476F;  
 color:#000000;  
}  


Voila ou est mon problème :
Comme vous pouvez le constater, le skin de la première et de la deuxième ligne sont différents. Avec le while il y a une récurrence des résultats qui sont du coup tous doublés (se qui est logique... -_-').
J'ai essayer de trouver solution pour qu'il n'y ais pas se soucis et pouvoir afficher sur la ligne 1 un résultat et sur la ligne 2 un second résultat avec une structure du type :

Si compteur = paire afficher sur la ligne de type 1
Sinon afficher sur la ligne de type 2

Mais sa ne m'a sorti qu'un seul résultat...

Je reste pour le moment sur mon while, sa fonctionne (avec des doublons), mais si quelqu'un pouvais me filler un coup de palluche, sa m'aiderais bien, la je sèche.

Au passage j'aimerai un avis sur se qui pourrais être simplifié au niveau de se que j'ai déjà écrit.

Merci d'avance.


3 réponses

Messages postés
267
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
29 septembre 2016
77
tu peux tenter un modulo pour déterminer les lignes paires,
et faire un style pour chaque cas (ie. odd, et even)
comme ceci (non testé) :

  $counter = 0;  
  while (...) {   
      $classToUse = "odd";  
      $counter++;  
      if ($counter % 2 == 0) { // pair 
         $classToUse = "even";  
      )  
?>           
 <tr class="<?php echo $classToUse; ?>">          
  <?php echo '<td>',$donnees['GRADE'];'</td>'?>  
  <?php echo '<td>',$donnees['Nom']; '</td>'?>  
  (...)  
 </tr>  
<?php  
  } // while end  
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

J'avais tester quelque chose de similaire, mais le compteur ne faisait pas parti de ma boucle while. Je fait le test et te donne le résultat.
La solution m'a bien convenue. Désoler d'avoir mis autant de temps a répondre, j'étais en perm cette semaine.

Merci a toi boly38.

D'ailleurs tant que j'y suis, une partie de se projet va consister a afficher des données dans se tableau, mais je vais devoir faire un découpage et tout afficher selon des catégories sous 3 onglets.

A votre avis le mieux serais de faire le découpage d'une base vers les 3 onglets et on injecte uniquement le nécessaire ou de faire trois base différentes se qui risque de compliquer la chose et de rajouter pas mal de paramètres dans toutes mes requêtes étant donné qu'elles doivent toujours afficher la même ligne...