Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1825 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Toujours voir les entêtes des tables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Toujours voir les entêtes des tables

n°1319859
xavibla2
Posté le 06-03-2006 à 23:22:29  profilanswer
 

Bonjour,  
 
Voila j'explique mon problème. Grâce à PHP et HTML je crée une table sur une page. Ce tableau a de forte chance d'avoir une taille importante et je voudrais toujours pouvoir voir les entètes de ma table.  
 
Je voudrai donc toujours afficher la colonne ou ligne d'entète même après avoir scroller la page.  
 
Je n'ai aucune idée de la technique à adopter.  
 
Merci pour votre aide.

mood
Publicité
Posté le 06-03-2006 à 23:22:29  profilanswer
 

n°1319901
gatsu35
Blablaté par Harko
Posté le 07-03-2006 à 07:05:51  profilanswer
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4.     <title></title>
  5.     <style>
  6.     * {
  7.         margin:0; padding:0;
  8.     }
  9.     #tableau{
  10.         width:376px;
  11.         border-collapse: collapse;
  12.     }
  13.     #tableau TH{
  14.         border:1px solid black;
  15.     }
  16.     .col1{ width:70px; }
  17.     .col2{ width:100px; }
  18.     .col3{ width:200px; }
  19.     #tableauIn{
  20.         width:396px;
  21.         overflow:auto;
  22.         height:200px;
  23.     }
  24.     #tableauIn table{
  25.         width:376px;
  26.         border-collapse: collapse;
  27.     }
  28.     #tableauIn TD{
  29.         border:1px solid black;
  30.     }
  31.     </style>
  32. </head>
  33. <body>
  34. <table id="tableau" cellspacing="0">
  35.     <thead>
  36.         <th class="col1">type</th>
  37.         <th class="col2">vaccin</th>
  38.         <th class="col3">animaux</th>
  39.     </thead>
  40. </table>
  41. <div id="tableauIn">    
  42. <table cellspacing="0">
  43.     <tbody>
  44.         <tr>
  45.             <td class="col1">truc 1</td>
  46.             <td class="col2">truc 2</td>
  47.             <td class="col3">truc 3</td>
  48.         </tr>
  49.         <tr>
  50.             <td>truc 1</td>
  51.             <td>truc 2</td>
  52.             <td>truc 3</td>
  53.         </tr>
  54.         <tr>
  55.             <td>truc 1</td>
  56.             <td>truc 2</td>
  57.             <td>truc 3</td>
  58.         </tr>
  59.         <tr>
  60.             <td>truc 1</td>
  61.             <td>truc 2</td>
  62.             <td>truc 3</td>
  63.         </tr>
  64.         <tr>
  65.             <td>truc 1</td>
  66.             <td>truc 2</td>
  67.             <td>truc 3</td>
  68.         </tr>
  69.         <tr>
  70.             <td>truc 1</td>
  71.             <td>truc 2</td>
  72.             <td>truc 3</td>
  73.         </tr>
  74.         <tr>
  75.             <td>truc 1</td>
  76.             <td>truc 2</td>
  77.             <td>truc 3</td>
  78.         </tr>
  79.         <tr>
  80.             <td>truc 1</td>
  81.             <td>truc 2</td>
  82.             <td>truc 3</td>
  83.         </tr>
  84.         <tr>
  85.             <td>truc 1</td>
  86.             <td>truc 2</td>
  87.             <td>truc 3</td>
  88.         </tr>
  89.         <tr>
  90.             <td>truc 1</td>
  91.             <td>truc 2</td>
  92.             <td>truc 3</td>
  93.         </tr>
  94.         <tr>
  95.             <td>truc 1</td>
  96.             <td>truc 2</td>
  97.             <td>truc 3</td>
  98.         </tr>
  99.         <tr>
  100.             <td>truc 1</td>
  101.             <td>truc 2</td>
  102.             <td>truc 3</td>
  103.         </tr>
  104.         <tr>
  105.             <td>truc 1</td>
  106.             <td>truc 2</td>
  107.             <td>truc 3</td>
  108.         </tr>
  109.         <tr>
  110.             <td>truc 1</td>
  111.             <td>truc 2</td>
  112.             <td>truc 3</td>
  113.         </tr>
  114.         <tr>
  115.             <td>truc 1</td>
  116.             <td>truc 2</td>
  117.             <td>truc 3</td>
  118.         </tr>
  119.         <tr>
  120.             <td>truc 1</td>
  121.             <td>truc 2</td>
  122.             <td>truc 3</td>
  123.         </tr>
  124.         <tr>
  125.             <td>truc 1</td>
  126.             <td>truc 2</td>
  127.             <td>truc 3</td>
  128.         </tr>
  129.         <tr>
  130.             <td>truc 1</td>
  131.             <td>truc 2</td>
  132.             <td>truc 3</td>
  133.         </tr>
  134.         <tr>
  135.             <td>truc 1</td>
  136.             <td>truc 2</td>
  137.             <td>truc 3</td>
  138.         </tr>
  139.         <tr>
  140.             <td>truc 1</td>
  141.             <td>truc 2</td>
  142.             <td>truc 3</td>
  143.         </tr>
  144.         <tr>
  145.             <td>truc 1</td>
  146.             <td>truc 2</td>
  147.             <td>truc 3</td>
  148.         </tr>
  149.         <tr>
  150.             <td>truc 1</td>
  151.             <td>truc 2</td>
  152.             <td>truc 3</td>
  153.         </tr>
  154.         <tr>
  155.             <td>truc 1</td>
  156.             <td>truc 2</td>
  157.             <td>truc 3</td>
  158.         </tr>
  159.         <tr>
  160.             <td>truc 1</td>
  161.             <td>truc 2</td>
  162.             <td>truc 3</td>
  163.         </tr>
  164.         <tr>
  165.             <td>truc 1</td>
  166.             <td>truc 2</td>
  167.             <td>truc 3</td>
  168.         </tr>
  169.     </tbody>
  170. </table>
  171. </div>
  172. </body>
  173. </html>

n°1325961
xavibla2
Posté le 15-03-2006 à 16:10:50  profilanswer
 

Ces lignes m'ont permis d'avancer un peu dans ce que je voulais réaliser mais malheureusement, je pense qu'on ne peut pas appliquer ceci pour que le tableau soit scrollable dans les 2 sens tout en gardant chaque fois les entetes. Il est fort possible que je me trompe, mais je n'est pas réussi a le faire.
 
Merci de m'aider encore une fois.

n°1325981
gatsu35
Blablaté par Harko
Posté le 15-03-2006 à 16:25:43  profilanswer
 

qu'est ce que tu entends qu'il soit scrollable dans les 2 sens ?
horizontal et vertical ?  
toute en gardant l'entete horizontal qui alors se déplacerait en même temps que le tableau ?
 
Ah oui c'est beaucoup plus compliqué que ça n'y paraît, faudrait jouer avec le javascript dans ce cas, et pardon pour toi, tu vas avoir du mal alors

n°1326001
gatsu35
Blablaté par Harko
Posté le 15-03-2006 à 16:53:02  profilanswer
 
n°1326212
xavibla2
Posté le 15-03-2006 à 21:16:59  profilanswer
 

Ouais donc je te remercie pour avoir déjà en parti résolu mon problème.
 
Mais mon nouveau problème est que j'ai des entêtes en haut mais aussi à gauche du tableau:
 
|______| type1 | type2 | type3 | type4 |
| type5 |______|______|______|______|
| type6 |______|______|______|______|
| type7 |______|______|______|______|
 
Bon voici en fait la structure de mon tableau. Je souhaiterais donc pouvoir toujours voir les entêtes des cellules affichées à l'écran.
Par exemple lorsque je scroll verticalement les entêtes du haut doivent toujours être visible (ce que tu m'as déjà aidé à faire :) ) mais il faut aussi que les entêtes du haut se décale lorsque je scroll horizontalement tout en gardant visible les entêtes de gauche.
 
Je remercie d'avance quiconque m'aidera à résoudre mon problème.
 

n°1326219
gatsu35
Blablaté par Harko
Posté le 15-03-2006 à 21:27:41  profilanswer
 

no problème :D tu attends c'est tout :D

n°1326233
gatsu35
Blablaté par Harko
Posté le 15-03-2006 à 21:43:07  profilanswer
 

http://gatsu.ftp.free.fr/html/test_tableau.html  l'idée est là mais la conception laisse à désirer,

n°1326282
gatsu35
Blablaté par Harko
Posté le 15-03-2006 à 22:54:57  profilanswer
 

http://gatsu.ftp.free.fr/html/test_tableau.html  
Version améliorée
Cette fois-ci il calcule la largeur du bloc de droite
la hauteur du  bloc du gauche
et en plus il calcul la largeur des cellules du bloc de droite en fonction des cellules du tableau centre, idem pour le tableau de gauche.
 
De plus il faut faire attention à la structure du tableau maintenant.
 
il y a un div qui englobe 3 div, ce div a un id
les 3 autres divs ont des classes associées, respectivement top, left et center
 
A toi de regarder. mais normalement mon script fonctionne pour plusieurs tableaux dans une meme page.
 
Attention néanmoins, je n'ai pas testé sous safari et opera. merci

n°1326291
nargy
Posté le 15-03-2006 à 23:01:30  profilanswer
 

C est très joli. J étais en train de faire des tests avec le même genre de méthode: des divs en position relative dans les cases d entête. Mais avec FireFox les touches n activent pas la l évènement onscroll, seule la souris le fait.

mood
Publicité
Posté le 15-03-2006 à 23:01:30  profilanswer
 

n°1326314
gatsu35
Blablaté par Harko
Posté le 15-03-2006 à 23:39:57  profilanswer
 

ben tu regardes ma page de test et tu verras que ca marche dans tous les cas, touches de clavier ou souris et mon onscroll fonctionne parfaitement

n°1326324
nargy
Posté le 15-03-2006 à 23:48:55  profilanswer
 

Sur ta page c est bizarrre, j ai pas le focus clavier donc les flèches du clavier ne font pas scroller. Dans le test que j ai fait, j utilise le document.onscroll, jai le focus et les flèches du clavier font défiler mais n activent pas le onscroll. j ai Firefox 1.0.1 sous linux.  
 
Opéra lui ne connait apparemment pas onscroll.

n°1326328
gatsu35
Blablaté par Harko
Posté le 15-03-2006 à 23:51:49  profilanswer
 

hummmmm
tu as bien mis le focus sur l'élément qui a les scrollers ?

n°1326333
nargy
Posté le 15-03-2006 à 23:54:51  profilanswer
 

Pour FF, oui, j ai même essayé de sélectionner du texte pour forcer le focus, mais rien du tout, pas de focus clavier.

n°1326335
nargy
Posté le 15-03-2006 à 23:57:23  profilanswer
 

C est que onscroll() n est pas très portable, il me semble. p-e en utilisant un timer. mais ça ne sera pas si fluide.

n°1326347
nargy
Posté le 16-03-2006 à 00:05:29  profilanswer
 

Pour FF/Opera il y a une position css qui il me semble fonctionne: fixed, mais qui ne marche pas avec IE. Il faudrait une iframe pour FF/Opera et onscroll pour IE.

n°1326354
gatsu35
Blablaté par Harko
Posté le 16-03-2006 à 00:08:12  profilanswer
 

JE précise que je n'ai testé que sous Firefox et IE sous Windows XP
donc bon ce n'est pas forcément la meilleure solution aussi pour avoir un joli tableau delamortkitu facon excel.
 
J'ai juste fait ça pour l'effet de style

n°1326457
gatsu35
Blablaté par Harko
Posté le 16-03-2006 à 08:29:57  profilanswer
 

http://gatsu.ftp.free.fr/html/test_tableau.html
Dernier essai, là j'ai bourriné comme un porc, c'est propre, et tout automatique, et que c'est comme le post précédent
 
tu as un squelette comme ceci :  

Code :
  1. <div id="tableau">
  2. <div class="top">
  3.  <table cellspacing="0">
  4.      <thead>
  5.          <th>type</th>
  6.          <th>vaccin</th>
  7.          <th>animaux</th>
  8.      </thead>
  9.  </table>
  10. </div>
  11. <div class="left">
  12.  <table cellspacing="0">
  13.   <tbody>
  14.    <tr>
  15.     <td>1</td>
  16.    </tr>
  17.    <tr>
  18.     <td>2</td>
  19.    </tr>
  20.   </tbody>
  21.  </table>
  22. </div>
  23. <div class="center">
  24.  <table cellspacing="0">
  25.      <tbody>
  26.          <tr>
  27.              <td>truc 1</td>
  28.              <td>truc 2</td>
  29.              <td>truc 3</td>
  30.          </tr>
  31.          <tr>
  32.              <td>truc 1</td>
  33.              <td>truc 2</td>
  34.              <td>truc 3</td>
  35.          </tr>
  36.      </tbody>
  37.  </table>
  38. </div>
  39. </div>


comme tu peux le constater
ya 3 div dans ce div qui contiennent les class left, top et center
et chaque div contient un tableau à l'interieur.
 
tu peux bien sûr ommettre tbody et thead.
 
Sinon pour le javascript tu as juste à initiliser le tableau via
initTableauscroll("iddutabeau" )
et basta tout le reste sera automatique.
redimensionnement des celulles, mise en page....
 
sinon j'ai toujours un bug de 3px et je n'arrive toujours pas à le résoudre. Donc pour corriger le décalage produit je m'occupe de caller le bloc top avec le bloc center :/

n°1326458
gatsu35
Blablaté par Harko
Posté le 16-03-2006 à 08:35:13  profilanswer
 

Bon appelle moi dieu et analyse bien le code :o

n°1326474
gatsu35
Blablaté par Harko
Posté le 16-03-2006 à 09:08:05  profilanswer
 

Yesssssssss je suis le plus fort :o :o :o :o :o
http://gatsu.ftp.free.fr/html/test_tableau.html  
Correction effectué avec un ptit coup de baguette de CSS

n°1326484
gatsu35
Blablaté par Harko
Posté le 16-03-2006 à 09:16:37  profilanswer
 

Bon d'après un anonyme du nom de FlorentG ma solution est à chier car non accessible, et c'est surtout que je peux très bien splitter le tableau comme bon me semble, donc tu attendras ce soir pour une solution qui déchire sa race :o ou tu n'auras juste qu'un seul tableau et tout se fera automatiquement ensuite


Message édité par gatsu35 le 16-03-2006 à 09:17:14
n°1326547
jan san ka​r
profil : pas le bon
Posté le 16-03-2006 à 11:19:22  profilanswer
 

Salut,
Je viens de regarder tout ça et maintenant ça me pose un gros problème : il faut que je trouve comment justifier de mettre un truc comme ça dans mon projet car je trouve ça trop cool :)

n°1326570
gatsu35
Blablaté par Harko
Posté le 16-03-2006 à 11:43:59  profilanswer
 

Tu attends 30 seconde la V2 qui fait tout toute seule, tu n'a juste qu'à lui donner un tableau a manger, la largeur et la hauteur et basta
mais j'ai un problème de dimensions de merde sous IE

n°1326572
gatsu35
Blablaté par Harko
Posté le 16-03-2006 à 11:44:11  profilanswer
 

heu pas 30 secondes mais une heure si possible merci :o

n°1326909
gatsu35
Blablaté par Harko
Posté le 16-03-2006 à 18:55:39  profilanswer
 

http://gatsu.ftp.free.fr/html/test_tableau.html
 
Bon aller dernière version, elle fonctionne nickel sous Firefox et IE
vous n'avez juste qu'à lui donner un tableau et elle se debrouille pour le splitter et faire le boulot à votre place.
 
imaginons un tableau

Code :
  1. <table id="tableau" cellspacing="0">
  2.     <thead>
  3.   <tr>
  4.     <th></th>
  5.         <th>type</th>
  6.         <th>vaccin</th>
  7.         <th>animaux</th>
  8.  </tr>
  9.     </thead>
  10. <tbody>
  11.  <tr>
  12.   <td>1</td>
  13.            <td>truc 1</td>
  14.            <td>truc 2</td>
  15.            <td>truc 3</td>
  16.  </tr>
  17.  <tr>
  18.   <td>2</td>
  19.            <td>trucfffffffffffffffffffffffff 1</td>
  20.            <td>truc 2</td>
  21.            <td>truc 3</td>
  22.  </tr>
  23.  <tr>
  24.   <td>3</td>
  25.            <td>truc 1</td>
  26.            <td>truc 2ssssssssssssssssssssssssssssssssssss</td>
  27.            <td>truc 3</td>
  28.  </tr>
  29.  <tr>
  30.   <td>4</td>
  31.            <td>truc 1</td>
  32.            <td>truc 2</td>
  33.            <td>truc 3sssssssssssssssssssssssssssss</td>
  34. </tr>
  35. </tbody>
  36. </table>


 
et bien vous n'avez juste qu'à faire :  
 
initTableScroll(tableid, largeur, hauteur);
 
initTableScroll("tableau",300, 200);
 
automatiquement le tableau sera splitté, les éléments placés ou il faut et dimensionnés au px près. Et les dimensions des cellules des tableaux de gauche et droite seront recalculés.
 
 
Attention ce script fonctionne parfaitement avec IE 6 SP2 et firefox 1.x
avec IE5.5 ya un ptit bug d'affichage mais on s'en fout IE5.5 devrait déjà avoir disparu de la surface de la terre.
Sinon laissez tomber pour Opera, cela ne fonctionnera pas du tout puisque l'évènement Onscroll n'est pas implémenté dans la V8.53 ni la V9Beta après plusieurs tests sous v8.53 et recherche sur V9
 
Donc ce script est à utiliser dans un intranet ou un environnement controlé

n°1327347
xavibla2
Posté le 17-03-2006 à 13:50:53  profilanswer
 

Merci beaucoup pour cette fonction qui va vraiment m'aider, c'est exactement ce que je voulais réaliser.  

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Toujours voir les entêtes des tables

 

Sujets relatifs
[mysql] Comment effacer plusieurs tables à la fois ?[MySQL] Verrous tables MyISAM / InnoDB
PHP/SQL, 2 tables récupérations dans un formulaireDELETE sur plusieurs tables sous Access?
exporter des tables Access en VBAConnaitre les tables d'une base
relier deux tablesExportation tables Mysql > 2Mo
comparaison de tables en vue de faire un historique[SQL Server] Listes des tables d'une base
Plus de sujets relatifs à : Toujours voir les entêtes des tables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR