affichage enregistrements toutes les x secondes

affichage enregistrements toutes les x secondes - PHP - Programmation

Marsh Posté le 23-08-2004 à 11:43:16    

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

Reply

Marsh Posté le 23-08-2004 à 11:43:16   

Reply

Marsh Posté le 23-08-2004 à 11:50:40    

Tu fais pas, ou alors il faut inclure un redirect avec tempo dans ton header.
 
L'idéal, c'est d'afficher tes 6 enregistrement et si t'as 7+ enregistrements un bouton pour voir la suite, tu passes un truc à la con en param et quand on clic le bouton ca affiche les [1-6] suivants, avec un bouton suivant (au cas ou tu ais 13+ enregistrements) & un bouton précédent


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 23-08-2004 à 13:08:09    

hum. j'ai dit que j'étais novice, alors un redirect un header qu'est-ce que c'est ?  
il s'agit d'un planning. y'aura personne pour cliquer. tout devra être automatisé d'où la question comment faire une tempo.
merci


Message édité par thebounty le 23-08-2004 à 13:09:03
Reply

Marsh Posté le 23-08-2004 à 13:54:01    

undefined offset ca veut dire quoi ?

Reply

Marsh Posté le 24-08-2004 à 18:06:27    

Le redirect dans le header, c'est pas très beau (ta page va se reloader toutes les 10 secondes ...). Mais bon ça consiste à ajouter dans le code HTML généré par le PHP, une entête forçant le chargement de la page :

Code :
  1. <HEAD>
  2. <META http-equiv="refresh" content="10;lapage.htm">
  3. </HEAD>


 
Sinon, l'autre solution, c'est que ton PHP génère le tableau en javascript de tout tes enregistrements, et qu'un p'tit script javascript se charge de faire ce que tu veux (mais bon, là je te laisse te débrouiller).
 

Reply

Marsh Posté le 25-08-2004 à 10:06:06    

c'est ce que je cherchais.
merci.

Reply

Marsh Posté le 25-08-2004 à 12:09:11    

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 :
  1. var nbEnrLayer = 6; // 6 enregistrements par indice;
  2. var tabEnregs = array ();
  3. tabEnregs [] = "enregistrement 1";
  4. tabEnregs [] = "enregistrement 2";
  5. tabEnregs [] = "enregistrement 3";
  6. tabEnregs [] = "enregistrement 4";
  7. tabEnregs [] = "enregistrement 5";
  8. tabEnregs [] = "enregistrement 6";
  9. tabEnregs [] = "enregistrement 7";
  10. tabEnregs [] = "enregistrement 8";
  11. ...
  12. tabEnregs [] = "enregistrement 20";
  13. tabEnregs [] = "<EOT>";
  14. var indice = 1;
  15. function enregLayer (idLAYER) {
  16. var cchaine;
  17. var i;
  18. for (i = 0; i < nbEnregsLayer; i++) {
  19. if (tabEnregs[i] == "<EOT>" ) {
  20. indice = 0;
  21. break;
  22. } else {
  23. cchaine += tabEnregs[indice+i];
  24. cchaine += "<BR />";
  25. }
  26. }
  27. document.getElementById (idLAYER).innerhtml = cchaine;
  28. }


 
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 :
  1. <div id="layer1">
  2. enreg1
  3. enreg2
  4. ...
  5. enreg6
  6. </div>
  7. <div id = "layer2">
  8. enreg7
  9. enreg8
  10. ....
  11. enreg12
  12. </div>
  13. <div id = "layer3">
  14. enreg13
  15. ...
  16. enreg18
  17. </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.   [:alana21]  
 
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 :
  1. <style>
  2. #enregs {
  3. width: 800px;
  4. height: 60px;
  5. overflow: scroll;
  6. }
  7. #enregs td {
  8. font-size: 10px;
  9. }
  10. </style>
  11. <div id = "enregs">
  12. <table>
  13. <tr><td>enreg1</td></tr>
  14. <tr><td>enreg1</td></tr>
  15. <tr><td>enreg1</td></tr>
  16. <tr><td>enreg1</td></tr>
  17. <tr><td>enreg1</td></tr>
  18. <tr><td>enreg1</td></tr>
  19. <tr><td>enreg1</td></tr>
  20. <tr><td>enreg1</td></tr>
  21. <tr><td>enreg1</td></tr>
  22. <tr><td>enreg1</td></tr>
  23. <tr><td>enreg1</td></tr>
  24. <tr><td>enreg1</td></tr>
  25. <tr><td>enreg1</td></tr>
  26. <tr><td>enreg1</td></tr>
  27. <tr><td>enreg1</td></tr>
  28. <tr><td>enreg1</td></tr>
  29. <tr><td>enreg1</td></tr>
  30. <tr><td>enreg1</td></tr>
  31. <tr><td>enreg1</td></tr>
  32. <tr><td>enreg1</td></tr>
  33. <tr><td>enreg1</td></tr>
  34. <tr><td>enreg1</td></tr>
  35. <tr><td>enreg1</td></tr>
  36. <tr><td>enreg1</td></tr>
  37. <tr><td>enreg1</td></tr>
  38. <tr><td>enreg1</td></tr>
  39. ...
  40. <tr><td>enreg1</td></tr> <!-- le 2001eme -->
  41. </table>
  42. <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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed