[php] Affichage d'un tableau particulier.

Fermé
bibi - Modifié par bibi le 26/02/2011 à 12:24
 bibi - 5 mars 2011 à 07:55
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.


A voir également:

3 réponses

boly38 Messages postés 267 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 29 septembre 2016 80
Modifié par boly38 le 26/02/2011 à 14:11
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
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.
0
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...
0