[HS] programme compteur en php5

15 réponses
Avatar
andre_debian
Bonjour =E0 tous,

Je d=E9sire cr=E9er un programme en php5 (langage Web Libre) :
un compteur de 1 =E0 10 qui affiche d'abord 1,
puis le 1 disparait et s'affiche 2 et ainsi de suite
jusqu'=E0 10.

J'ai tent=E9 plusieurs solutions par des boucles,
j'ai une attente de 10 secondes,
qui affiche ensuite d'un coup : 1 2 3 4 5 6 7 8 9 10,
ce qui =E9videmment ne va pas.

Merci d'une aide, piste de la part des sp=E9cialistes du php.

Andr=E9

10 réponses

1 2
Avatar
Gr
Salut
PHP est un langage interprété côté serveur. Par conséquent tu es obligé
de recharger ton PHP en passant une var par $_POST ou $_GET pour
incrémenter ton compteur.
Dynamiquement, sans recharger la page, faut voir avec JS.
Le mercredi 07 décembre 2016 à 13:10 +0100,
a écrit :
Bonjour à tous,
Je désire créer un programme en php5 (langage Web Libre) :
un compteur de 1 à 10 qui affiche d'abord 1,
puis le 1 disparait et s'affiche 2 et ainsi de suite
jusqu'à 10.
J'ai tenté plusieurs solutions par des boucles,
j'ai une attente de 10 secondes,
qui affiche ensuite d'un coup : 1 2 3 4 5 6 7 8 9 10,
ce qui évidemment ne va pas.
Merci d'une aide, piste de la part des spécialistes du php.
André

--
Grégory Reinbold
Avatar
Kelleter Alain
--=_3d27f1509484265ba33c90a50ce77e0a
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8
En principe pour afficher un compteur (comme dans ton exemple) sans
rafraîchir la page, il te faudrait utiliser un peu de javascript pour
modifier le DOM de la page sans rafraîchissement.
Mais si tu ne souhaites pas utiliser de javascript il est éventuellement
possible de faire quelque chose. Cela va t'obliger à rafraîchir la page
mais cela aura le mérite de fonctionner:
Exemple sur : index.php
<?php
// Initialisations
$cpt = @$_GET['cpt'];
if(!isset($cpt))
$cpt = 1;
else
$cpt = $_GET['cpt'];
// Condition sur le compteur : 10 iitérations max
if($cpt >= 11){
echo 'Game Over';
exit();
}else{
// Affichage du compteur
echo $cpt;
$cpt++;
// Refresh de la page avec le compteur en paramètre
header('Refresh: 1; index.php?cpt='.$cpt);
}
?>
Ce script à l'arrache est donné à titre indicatif pour te mettre sur une
piste si tu souhaites te passer de javascript mais sans javascript il te
faudra rafraîchir ta page.. .
Amicalement,
Alain
Le 2016-12-07 13:10, a écrit :
Bonjour à tous,
Je désire créer un programme en php5 (langage Web Libre) :
un compteur de 1 à 10 qui affiche d'abord 1,
puis le 1 disparait et s'affiche 2 et ainsi de suite
jusqu'à 10.
J'ai tenté plusieurs solutions par des boucles,
j'ai une attente de 10 secondes,
qui affiche ensuite d'un coup : 1 2 3 4 5 6 7 8 9 10,
ce qui évidemment ne va pas.
Merci d'une aide, piste de la part des spécialistes du php.
André

--=_3d27f1509484265ba33c90a50ce77e0a
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=UTF-8
<html><head><meta http-equiv="Content-Type" content="text/html; charset =UTF-8" /></head><body style='font-size: 10pt'>
<p>En principe pour afficher un compteur (comme dans ton exemple) sans rafr a&icirc;chir la page, il te faudrait utiliser un peu de javascript pour mod ifier le DOM de la page sans rafra&icirc;chissement.</p>
<p>Mais si tu ne souhaites pas utiliser de javascript il est &eacute;ventue llement possible de faire quelque chose. Cela va t'obliger &agrave; rafra&i circ;chir la page mais cela aura le m&eacute;rite de fonctionner:</p>
<p>Exemple sur : index.php</p>
<p>&lt;?php</p>
<p>&nbsp;&nbsp;&nbsp; // Initialisations
&nbsp;&nbsp; $cpt = @$_GET[ 'cpt'];
&nbsp;&nbsp; if(!isset($cpt))
&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp; $cpt = 1;
&nbsp;&nbsp; else
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $cpt = $_GET['cpt'];
&nbsp;&nbsp;&nbsp; // Condition sur le compteur : 10 iit&eacute;rations max
&nbsp;&nbsp;&nb sp; if($cpt &gt;= 11){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ec ho 'Game Over';
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit();<br />&nbsp;&nbsp;&nbsp; }else{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Affichage du compteur
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e cho $cpt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $cpt++;
&nbs p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Refresh de la page avec le compte ur en param&egrave;tre
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; head er('Refresh: 1; index.php?cpt='.$cpt);
&nbsp;&nbsp;&nbsp; }</p>
<p>?&gt;</p>
<p>Ce script &agrave; l'arrache est donn&eacute; &agrave; titre indicatif p our te mettre sur une piste si tu souhaites te passer de javascript mais sa ns javascript il te faudra rafra&icirc;chir ta page.. .</p>
<p>Amicalement,</p>
<p>Alain</p>
<p>
</p>
<p>Le 2016-12-07 13:10, a &eacute;crit&nbsp;:</ p>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2 px solid; margin: 0"><!-- html ignored --><!-- head ignored --><!-- meta ig nored -->
<div class="pre" style="margin: 0; padding: 0; font-family: monospace"> Bonjour &agrave; tous,

Je d&eacute;sire cr&eacute;er un progra mme en php5 (langage Web Libre) :
un compteur de 1 &agrave; 10 qui af fiche d'abord 1,
puis le 1 disparait et s'affiche 2 et ainsi de suite
jusqu'&agrave; 10.

J'ai tent&eacute; plusieurs solution s par des boucles,
j'ai une attente de 10 secondes,
qui affiche ensuite d'un coup : 1 2 3 4 5 6 7 8 9 10,
ce qui &eacute;videmment n e va pas.

Merci d'une aide, piste de la part des sp&eacute;cia listes du php.

Andr&eacute;</div>

</body></html>
--=_3d27f1509484265ba33c90a50ce77e0a--
Avatar
Yves Rutschle
Réponse un peu taquine:
On Wed, Dec 07, 2016 at 01:10:43PM +0100, wrote:
Je désire créer un programme en php5 (langage Web Libre) :

php n'est pas un "langage Web". Un "language Web", c'est
sans doute ce qui est interprété par un navigateur, c.a.d
HTML et ses 2000 variantes, CSS et Javascript,
principalement.
un compteur de 1 à 10 qui affiche d'abord 1,
puis le 1 disparait et s'affiche 2 et ainsi de suite
jusqu'à 10.

Par exemple, fichier try.php:
<?php
for ($i = 1; $i <= 10; $i++) {
print "r$i";
sleep(1);
}
print "n";
Puis on le lance en console:
tmp$ php -f try.php
[...]
Y.
Avatar
andre_debian
On Wednesday 07 December 2016 14:36:29 Kelleter Alain wrote:
En principe pour afficher un compteur (comme dans ton exemple) sans
rafraîchir la page, il te faudrait utiliser un peu de javascript pour
modifier le DOM de la page sans rafraîchissement.
Mais si tu ne souhaites pas utiliser de javascript il est éventuellement
possible de faire quelque chose. Cela va t'obliger à rafraîchir la pa ge
mais cela aura le mérite de fonctionner:
Exemple sur : index.php
<?php
// Initialisations
$cpt = @$_GET['cpt'];
if(!isset($cpt))
$cpt = 1;
else
$cpt = $_GET['cpt'];
// Condition sur le compteur : 10 iitérations max
if($cpt >= 11){
echo 'Game Over';
exit();
}else{
// Affichage du compteur
echo $cpt;
$cpt++;
// Refresh de la page avec le compteur en paramètre
header('Refresh: 1; index.php?cpt='.$cpt);
}
?>
Ce script à l'arrache est donné à titre indicatif pour te mettre su r une
piste si tu souhaites te passer de javascript mais sans javascript il te
faudra rafraîchir ta page.. .
Amicalement, Alain

Merci Alain et à tous ceux qui m'ont répondu,
Ton script php5 marche à merveille, je viens de le tester !
Effectivement, le langage php s'éxecute depuis le serveur,
il faut donc jongler (Refresh page) ou passer par javascript
ou Ajax.
Je le garde précieusement pour le mettre en oeuvre plus tard,
telle une attente d'une page un peu longue à venir...
Encore merci.
André
PS : cherches tu un emploi de Webmaster orienté PHP ?
Avatar
andre_debian
On Wednesday 07 December 2016 18:06:43 Yves Rutschle wrote:
Réponse un peu taquine:
On Wed, Dec 07, 2016 at 01:10:43PM +0100, wro te:
Je désire créer un programme en php5 (langage Web Libre) :

php n'est pas un "langage Web". Un "language Web", c'est
sans doute ce qui est interprété par un navigateur, c.a.d
HTML et ses 2000 variantes, CSS et Javascript,
principalement.

J'aurais dû alors écrire "langage Libre pour serveur Web",
désolé.
un compteur de 1 à 10 qui affiche d'abord 1,
puis le 1 disparait et s'affiche 2 et ainsi de suite
jusqu'à 10.

Par exemple, fichier try.php:
<?php
for ($i = 1; $i <= 10; $i++) {
print "r$i";
sleep(1);
}
print "n";
Puis on le lance en console:
tmp$ php -f try.php

Réponse un peu taquine à mon tour :
c'était le programme que j'avais écrit, et résultat :
1 2 3 4 5 6 7 8 9 10
au bout de 10 secondes.
:-)
Le programme d'Alain fonctionne au poil,
comme dans mon cahier des charges.
Bonne soirée.
André
Avatar
Yves Rutschle
On Wed, Dec 07, 2016 at 08:48:46PM +0100, wrote:
J'aurais dû alors écrire "langage Libre pour serveur Web",
désolé.

Non non, ce que je veux dire c'est que PHP n'a pas de
rapport avec le Web. C'est un langage généraliste qui sait
tout faire, et dont il se trouve qu'il est souvent utilisé
côté serveur Web, mais il n'y a rien qui limite PHP à ça.
Réponse un peu taquine à mon tour :
c'était le programme que j'avais écrit, et résultat :
1 2 3 4 5 6 7 8 9 10
au bout de 10 secondes.

En y arrivant à travers un serveur Web, c'est normal (le
serveur attend la fin de l'exécution du programme PHP avant
d'envoyer la réponse globale au navigateur.
Le programme d'Alain fonctionne au poil,
comme dans mon cahier des charges.

Je ne sais pas exactement ce que tu cherches à faire, mais
si tu as besoin d'interactivité je t'encouragerais à
regarder du côté de frameworks plus complet, voire
d'applications qui existent déjà (des Wordpress et autres).
Y.
Avatar
Ph. Gras
Hello la liste !
Javascript me semble plus adapté pour gérer des animations sur un laps de temps donné
sur une page Web.
Cette méthode par exemple est très souvent utilisée pour créer des compteurs :
https://developer.mozilla.org/fr/docs/Web/API/WindowTimers/setInterval
Et en plus, ça ne pompe pas de ressource sur le serveur, uniquement chez le client :-P
Bonne journée,
Ph. Gras=
Avatar
andre_debian
On Thursday 08 December 2016 08:44:13 Yves Rutschle wrote:
Non non, ce que je veux dire c'est que PHP n'a pas de
rapport avec le Web. C'est un langage généraliste qui sait
tout faire, et dont il se trouve qu'il est souvent utilisé
côté serveur Web, mais il n'y a rien qui limite PHP à ça :

Suite à ce que tu as écrit, je préfère répondre afin que
personne ne soit trompée sur la ML :-)
Sauf erreur, je ne vois pas comment utiliser un script PHP
sans passer par un navigateur pour le résultat.
Le PHP ne s'installe qu'avec un serveur Web (apache, nginx...).
Sans celui-ci, pas de php !
Écrire que "le php n'a pas de rapport avec le Web",
me parait être une erreur de taille !
Le php est un langage Web.
(son concurrent est ASP qui s'installe sur Windows-Server)
En y arrivant à travers un serveur Web, c'est normal (le
serveur attend la fin de l'exécution du programme PHP avant
d'envoyer la réponse globale au navigateur.
Je ne sais pas exactement ce que tu cherches à faire :

Comme bien indiqué dans mon 1er mail,
faire défiler des chiffres de 1 à 10, l'un après l'autre.
mais si tu as besoin d'interactivité je t'encouragerais à
regarder du côté de frameworks plus complet, voire
d'applications qui existent déjà (des Wordpress et autres) :

Pas de CMS.
Le PHP est un langage qui permet, entre autres, l'interactivité
d'un site Web, c'est souvent pour cela qu'on l'utilise.
Bonne soirée.
André
Avatar
Ph. Gras
Hello !
Suite à ce que tu as écrit, je préfère répondre afin que
personne ne soit trompée sur la ML :-)
Sauf erreur, je ne vois pas comment utiliser un script PHP
sans passer par un navigateur pour le résultat.

https://packages.debian.org/fr/jessie/php5-cli
Ph. Gras=
Avatar
fra-duf-no-spam
Le 17143ième jour après Epoch,
andre debian écrivait:
Sauf erreur, je ne vois pas comment utiliser un script PHP
sans passer par un navigateur pour le résultat.

Essaye ça en ligne de commande :
php <<<"<?php printf( '42'); ?>"
Le PHP ne s'installe qu'avec un serveur Web (apache, nginx...).
Sans celui-ci, pas de php !

Ah? Comment es-tu si sûr de ça ?
Écrire que "le php n'a pas de rapport avec le Web",
me parait être une erreur de taille !

C'est vrai, voir l'article sur le PHP dans Wikipedia
Le php est un langage Web.

Non, c'est un langage.
Le PHP est un langage qui permet, entre autres, l'interactivité
d'un site Web, c'est souvent pour cela qu'on l'utilise.

Pas tout à fait. Il permet le dynamisme d'un site web. C'est pour à §a
qu'il a été inventé d'ailleurs.
Bonne soirée.

Idem.
--
Try to relax and enjoy the crisis.
-- Ashleigh Brilliant
1 2