thebounty a écrit :
bonjour,
je démarre en php et je dois afficher 6 enregistrements (issus d'un fichier texte) par page web.
si j'ai moins de 6 enregistrements tout va bien.
mais si j'ai plus de 6 enregistrements il faut que j'affiche les 7°, 8° etc.
comment faire en php pour afficher ces enregistrements en utilisant une temporisation (afficher 6 enregistrements - 10 secondes d'affichage - afficher 6 enregistrements etc.)?
il me faudrait une solution simple car mes compétences en php sont médiocres.
merci
|
et bien c'est pas possible. la raison en est que le php se mets en série par rapport à l'envoi de la page. lorsque la page est chargée le php est desactivé.
la seule solution c'est de faire du javascript dans la page et mettre tous les enregistrements dans un timer et mettre un settimeout qui va afficher les 6 premiers, les 6 suivants, etc .....
donc
Code :
- var nbEnrLayer = 6; // 6 enregistrements par indice;
- var tabEnregs = array ();
- tabEnregs [] = "enregistrement 1";
- tabEnregs [] = "enregistrement 2";
- tabEnregs [] = "enregistrement 3";
- tabEnregs [] = "enregistrement 4";
- tabEnregs [] = "enregistrement 5";
- tabEnregs [] = "enregistrement 6";
- tabEnregs [] = "enregistrement 7";
- tabEnregs [] = "enregistrement 8";
- ...
- tabEnregs [] = "enregistrement 20";
- tabEnregs [] = "<EOT>";
- var indice = 1;
- function enregLayer (idLAYER) {
- var cchaine;
- var i;
- for (i = 0; i < nbEnregsLayer; i++) {
- if (tabEnregs[i] == "<EOT>" ) {
- indice = 0;
- break;
- } else {
- cchaine += tabEnregs[indice+i];
- cchaine += "<BR />";
- }
- }
- document.getElementById (idLAYER).innerhtml = cchaine;
- }
|
mais là la taille du tableau est limitée.
une autre soluce, c'est de faire des <div> positionnés aux meme coordonnées
soit :
Code :
- <div id="layer1">
- enreg1
- enreg2
- ...
- enreg6
- </div>
- <div id = "layer2">
- enreg7
- enreg8
- ....
- enreg12
- </div>
- <div id = "layer3">
- enreg13
- ...
- enreg18
- </div>
|
et ensuite le timer cycle en masquant le layer en cours (par display = none) en affichant le suivant et ainsi de suite. on vérifie que
document.getelementbyid ("layer??" ) == null) pour revenir au départ.
là la seule limite pour le nombre d'enregistrements à effectuer est la patience du visiteur.
sinon comme dit ici, tu fais une page de la forme
enregs.php?min=1&max=6
tu fais un bouton suivant qui envoie vers
enregs.php?min=7&max=12 donc ajoute 6 aux deux valeurs.
et un bouton précédent qui retire 6 à chaque valeur
une derniere soluce serait de faire un gros div qui contient tous les enregistrements au une commande css qui indique overflow scrool.
Code :
- <style>
- #enregs {
- width: 800px;
- height: 60px;
- overflow: scroll;
- }
- #enregs td {
- font-size: 10px;
- }
- </style>
- <div id = "enregs">
- <table>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- <tr><td>enreg1</td></tr>
- ...
- <tr><td>enreg1</td></tr> <!-- le 2001eme -->
- </table>
- <div>
|
mais attention ca marche pas dans tous les navigateurs. une autre soluce est de faire un iframe avec la page contenant les enregistrements. là ca marche partout meme si ca fait raler certains.
Message édité par p lejarre le 25-08-2004 à 12:29:25