Bonjour,
Je souhaiterai que ma page PHP se recharge comme si j'appuyais sur F5 un certain nombre de fois (par exemple 10) à un intervalle de 1 seconde entre chaque rechargement, puis qu'ensuite elle reste "normale".
Comment faire celà ?
Merci
Version imprimable
Bonjour,
Je souhaiterai que ma page PHP se recharge comme si j'appuyais sur F5 un certain nombre de fois (par exemple 10) à un intervalle de 1 seconde entre chaque rechargement, puis qu'ensuite elle reste "normale".
Comment faire celà ?
Merci
Avec du javascript, et la balise meta refresh.
Ou une variable de session et la balise refresh
Ou un paramètre dans l'url et la balise refresh
Tout dépend de ton besoin.
J'ai essayé ceci :
mais la page se recharge à l'infini… :(Code:
1
2
3
4
5 <script type="text/javascript"> for (i=1; i<10; i++) { window.setTimeout("window.location.reload();",1000); } </script>
et si je mets dans le <head>
ça ne fonctionne pas du toutCode:
1
2
3
4
5 <script type="text/javascript"> for (i=1; i<10; i++) { <meta http-equiv="refresh" content="1" /> } </script>
en fait le problème est que comme la page se recharge à chaque fois, l'on doit toujours s'arreter à 1, rechargement => 1, etc, donc on ne peut arriver à 10 de cette manière…
Je vais regarder du coté des sessions, mais je ne connais pas du tout.
oui je m'en suis rendu compte pour la balise meta :oops:
Par contre, comment tu passes en paramètre la variable i…
ok, je cherche donc de ce coté :D
J'ai donc cherché comment faire…
Ca ne fonctionne pas, mais est-ce que je suis sur la bonne voie ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php session_start(); $_SESSION['i'] = 'i++'; ?> <!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" lang="en"> <head> <?php $_SESSION['i'] = 1; while ($_SESSION['i'] <= 10) { echo ("<meta http-equiv=\"refresh\" content=\"10000\" />"); } ?> </head>
En effet, si je déclare i++, ça ne va pas le faire ! rire
Ca ne fonctionne toujours pas, mais au moins la page s'affiche…Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php session_start(); $_SESSION['i'] = '1'; ?> <!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" lang="en"> <head> <?php $_SESSION['i'] = 1; //doit-on le remettre vu qu'il est déclaré sous session_star ? while ($_SESSION['i'] <= 10) { echo ("<meta http-equiv=\"refresh\" content=\"10000\" />"); $_SESSION['i']++; } ?>
Le problème est visiblement que je n'ai pas compris comment mettre en mémoire le résultat de i++ et de le retourner lors de chaque rechargement…
Code non testé, mais ça doit te donner une piste.Code:
1
2
3
4
5
6
7
8
9 <?php session_start(); // un switch pour savoir si nous somme au premier passage isset($_SESSION['nbRefresh']) ? $nbView = $_SESSION['nbView'] + 1 : $nbView = 1; // maintenant qu'on a géré le compteur, nous le stockons pour le prochain passage $_SESSION['nbView'] = $nbView; ?> <!-- je mets une balise meta s'il le faut -->
J'ai fait comme ceci (ça fonctionne :D )
avant le doctype :
dans le <head>Code:
1
2
3
4
5
6
7
8 <?php session_start(); $fichier="cpt.txt"; $inF = fopen($fichier,"a"); fputs($inF,"0"); fclose($inF); $cpt = filesize($fichier); ?>
et j'ai mis un lien sur l'image pour supprimer cpt.txt, et ainsi relancer une séquence :Code:
1
2
3
4
5
6
7 <?php while ($cpt <= 5) { echo ("<meta http-equiv=\"refresh\" content=\"1\" />"); $cpt++; } ?>
contenu de unlink.php :Code:<a href=\"unlink.php\"><img></a>
Sans doute pas le plus simple, mais comme je ne suis pas doué en PHP, ça a au moins le mérite de fonctionner (on va pas dire que j'ai quand meme mis 6 heures pour arriver à un truc aussi simple… :mouarf: )Code:
1
2
3
4
5
6 <html> <meta http-equiv="refresh" content="0;URL=../index.php"> <?php unlink ("cpt.txt"); ?> </html>
Merci Jml94 pour ton aide :)
Euh, il y a un petit soucis… le fichier txt ne se supprime pas automatiquement avec la fin de session (fermeture du navigateur, ce qui fait que quand je rouvre le navigateur, rien ne se passe…)
Si quelqu'un à la solution toute faite, parce que là, après 6 heures… je baisse les bras… :(
avant le doctype :
Code:
1
2
3
4
5
6
7 <?php session_start(); if (isset($_SESSION['cpt'])) $cpt = $_SESSION['cpt'] + 1; else $cpt = 1; ?>
dans le <head>
Pour recommencer la séquence, tu peux mettre un lien de ce genre :Code:
1
2
3
4 <?php while ($cpt <= 5) echo ("<meta http-equiv=\"refresh\" content=\"1\" />"); ?>
Code:<a href='mapage.php?reset'>Reset</a>
Ce qui transforme notre premier code :
code non testéCode:
1
2
3
4
5
6
7
8
9 <?php session_start(); if (isset($_GET['reset'])) $cpt = 1; elseif (isset($_SESSION['cpt'])) $cpt = $_SESSION['cpt'] + 1; else $cpt = 1; ?>
Comme tu peux le constater, point besoin de fichier texte.
Merci jml :)
J'ai testé le code, la page s'actualise en permanence, sans rien afficher et le poids de la page monte rapidement à plusieurs Mo.
au vu de mes compétences en dessous de la moyenne, je ne peux pas dire qu'est-ce qui génère celà, mais on dirait que ça tourne en roue libre…
En tous cas, cette solution m'intéresse fortement.
Oups ! :oops:
C'est peut-être normal, j'oublie de stocker la nouvelle valeur en session, d'où boucle infinie.
Correction :
Code:
1
2
3
4
5
6
7
8
9
10
11 <?php session_start(); if (isset($_GET['reset'])) $cpt = 1; elseif (isset($_SESSION['cpt'])) $cpt = $_SESSION['cpt'] + 1; else $cpt = 1; $_SESSION['cpt'] = $cpt; // ne pas oublier d'actualiser la valeur de session ! :D ?>
J'ai modifié, mais ça tourne toujours autant à vide ;)
Encore une modif, qui ne résoud pas le problème, mais qui montre le compteur.
Code:
1
2
3
4
5
6
7
8
9
10
11 <?php session_start(); if (isset($_GET['reset'])) $cpt = 1; elseif (isset($_SESSION['cpt'])) $cpt = $_SESSION['cpt'] + 1; else $cpt = 1; $_SESSION['cpt'] = $cpt; // ne pas oublier d'actualiser la valeur de session ! :D print "<h1>$cpt</h1>"; ?>
Argh, cette errur m'avait aussi échappée :
Il faut plutôtCode:
1
2
3
4 <?php while ($cpt <= 5) echo ("<meta http-equiv=\"refresh\" content=\"1\" />"); ?>
Code:
1
2
3
4 <?php if ($cpt <= 5) echo ("<meta http-equiv='refresh' content='1' />"); ?>