Création de compteur temps réel
Fermé
alfa2401
-
14 mars 2012 à 19:52
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 - 15 mars 2012 à 23:40
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 - 15 mars 2012 à 23:40
A voir également:
- Création de compteur temps réel
- Compteur électrique - Guide
- Blocage agriculteur carte en temps réel - Accueil - Transports & Cartes
- Maps satellite en temps réel - Guide
- Comment ralentir un compteur linky forum - Accueil - Objets connectés
- Creation compte gmail - Guide
3 réponses
Géca
Messages postés
799
Date d'inscription
samedi 29 novembre 2003
Statut
Contributeur
Dernière intervention
29 juin 2015
106
14 mars 2012 à 19:59
14 mars 2012 à 19:59
Bonjour,
J'ai une question concernant l'algorithme que vous souhaitez. Vous dites :
>le lundi il faut que le compteur affiche "1", le mardi et le mercredi aussi. Le jeudi, il faut qu'il affiche "2", le vendredi et le samedi aussi. Le dimanche, il faut qu'il affiche "3"
Et le lundi qui suit on affiche quoi ? 3, ou ça repart sur 1 ?
Ne souhaitez-vous pas un compteur qui s'incrémente de 1 tous les trois jours ?
--
J'ai une question concernant l'algorithme que vous souhaitez. Vous dites :
>le lundi il faut que le compteur affiche "1", le mardi et le mercredi aussi. Le jeudi, il faut qu'il affiche "2", le vendredi et le samedi aussi. Le dimanche, il faut qu'il affiche "3"
Et le lundi qui suit on affiche quoi ? 3, ou ça repart sur 1 ?
Ne souhaitez-vous pas un compteur qui s'incrémente de 1 tous les trois jours ?
--
Bonsoir,
Il y a 2 solutions, je t'explique la 1ère basée sur une table (pour l'exemple nommée table_compteur) de la base de données pour conserver le temps de départ et le nombre de décès, donc 2 colonnes :
- colonne 1 (temps_depart) de type timestamp
- colonne 2 (nbre_deces) de type integer
Le code de la fonction :
Dans la page HTML, à l'endroit où doit apparaître le compteur :
Explications :
1. La fonction cherche dans la table le temps de départ et le nombre de décès.
2. Elle compare ce temps avec le temps écoulé depuis (en secondes).
3. Si le temps écoulé est supérieur à 259200, ce qui équivaut à 60s x 60mn x 72h (donc 3 jours), on incrémente le temps de départ de 259200 et le nombre de décès de +1 dans la table et on retourne le nombre de décès (valeur de $result['nbre_deces']+1).
4. Si le temps écoulé est inférieur à 259200, on retourne le nombre de décès initialement contenu dans la table (valeur de $result['nbre_deces']).
La seconde solution serait de ne pas utiliser une base de données mais un fichier texte (par exemple fichier_compteur.txt) dans lequel on conserve le temps de départ et le nombre de décès et la fonction sera modifié pour aller chercher les données dans le fichier et non plus dans la table table_compteur.
Je n'ai pas pris le temps de tester mais ça devrait fonctionner, sinon apporter quelques modifications et/ou corrections...
Bien entendu dans le cas de la 1ère solution, il faut ouvrir une connexion MySQL AVANT d'utiliser la fonction, sinon c'est un warning assuré!
Il y a 2 solutions, je t'explique la 1ère basée sur une table (pour l'exemple nommée table_compteur) de la base de données pour conserver le temps de départ et le nombre de décès, donc 2 colonnes :
- colonne 1 (temps_depart) de type timestamp
- colonne 2 (nbre_deces) de type integer
Le code de la fonction :
function afficheCompteur() { $requete = mysql_query("SELECT temps_depart,nbre_deces FROM table_compteur"); $result = mysql_fetch_assoc($requete); $temps_ecoule = time() - $result['temps_depart']; if($temps_ecoule > 259200) { mysql_query("UPDATE table_compteur SET temps_depart+259200, nbre_deces+1"); return $result['nbre_deces']+1; } else { return $result['nbre_deces']; } mysql_free_result($result); }
Dans la page HTML, à l'endroit où doit apparaître le compteur :
<span style="font-size: 1em; font-weight: bold; color: #bb010a;"><?php echo afficheCompteur(); ?></span>
Explications :
1. La fonction cherche dans la table le temps de départ et le nombre de décès.
2. Elle compare ce temps avec le temps écoulé depuis (en secondes).
3. Si le temps écoulé est supérieur à 259200, ce qui équivaut à 60s x 60mn x 72h (donc 3 jours), on incrémente le temps de départ de 259200 et le nombre de décès de +1 dans la table et on retourne le nombre de décès (valeur de $result['nbre_deces']+1).
4. Si le temps écoulé est inférieur à 259200, on retourne le nombre de décès initialement contenu dans la table (valeur de $result['nbre_deces']).
La seconde solution serait de ne pas utiliser une base de données mais un fichier texte (par exemple fichier_compteur.txt) dans lequel on conserve le temps de départ et le nombre de décès et la fonction sera modifié pour aller chercher les données dans le fichier et non plus dans la table table_compteur.
Je n'ai pas pris le temps de tester mais ça devrait fonctionner, sinon apporter quelques modifications et/ou corrections...
Bien entendu dans le cas de la 1ère solution, il faut ouvrir une connexion MySQL AVANT d'utiliser la fonction, sinon c'est un warning assuré!
Merci beaucoup, vraiment, pour ton aide.
Alors effectivement, j'ai besoin d'explications pas à pas. Voilà, le logiciel du site est Web Acappella. Il me permet d'ouvrir une zone HTML (dimensionable à souhait). J'ai entré le code html que tu m'as donné à sa place, j'ai enregistré le code de la fonction dans le bloc-note en enregistrant le fichier sous le nom de table_compteur.txt et j'ai ajouté le lien à ma zone html. Le résultat affiché :
DEBUG MODE
HTML code desactived
A mon avis, j'ai loupé une étape.
Alors effectivement, j'ai besoin d'explications pas à pas. Voilà, le logiciel du site est Web Acappella. Il me permet d'ouvrir une zone HTML (dimensionable à souhait). J'ai entré le code html que tu m'as donné à sa place, j'ai enregistré le code de la fonction dans le bloc-note en enregistrant le fichier sous le nom de table_compteur.txt et j'ai ajouté le lien à ma zone html. Le résultat affiché :
DEBUG MODE
HTML code desactived
A mon avis, j'ai loupé une étape.
Déjà je n'utilise pas Web Acapella, j'écris mes sources toujours avec mes petits doigts avec Notepad++
D'autre part, tu n'as pas du tout compris, mais c'est surtout par ignorance de ce qu'est du HTML, du PHP, l'utilisation d'une fonction, comment créer et enregistrer un fichier grâce à fopen(), fgets(), fwrite(), etc...
Il va être difficile de tout mettre en place tout ça à distance par message interposé...
Je ne peux pas t'expliquer comment fonctionne la manipulation des fichiers avec PHP, ce serait trop long et quand bien même, tu n'as pas de notions de programmation, je ne ferais que t'embrouiller encore plus!
Dans le même temps, ce que je t'ais procuré fonctionne avec une base de données, mais là aussi, je crains que tes lacunes dans la création d'une table et l'utilisation d'une base de données te fassent défaut... Je ne vois pas de solution miracle pour "débloquer" ton problème et j'en suis vraiment désolé!
D'autre part, tu n'as pas du tout compris, mais c'est surtout par ignorance de ce qu'est du HTML, du PHP, l'utilisation d'une fonction, comment créer et enregistrer un fichier grâce à fopen(), fgets(), fwrite(), etc...
Il va être difficile de tout mettre en place tout ça à distance par message interposé...
Je ne peux pas t'expliquer comment fonctionne la manipulation des fichiers avec PHP, ce serait trop long et quand bien même, tu n'as pas de notions de programmation, je ne ferais que t'embrouiller encore plus!
Dans le même temps, ce que je t'ais procuré fonctionne avec une base de données, mais là aussi, je crains que tes lacunes dans la création d'une table et l'utilisation d'une base de données te fassent défaut... Je ne vois pas de solution miracle pour "débloquer" ton problème et j'en suis vraiment désolé!
Géca
Messages postés
799
Date d'inscription
samedi 29 novembre 2003
Statut
Contributeur
Dernière intervention
29 juin 2015
106
14 mars 2012 à 23:26
14 mars 2012 à 23:26
je ne pense pas avoir autant de compétances que ReDLoG,mais ça me semble un peu disproportionné d'utiliser une base de données pour faire un compteur. Un fichier temporaire serait suffisant, non ?
C'est bien pour ça que j'ai bien donné 2 solutions mais que je n'ai décrit qu'une méthode pour éviter de noyer dans de multiples explications. A partir du moment où l'on sait utiliser une base de données, créer des tables, utiliser du langage SQL, écrire des fonctions, on doit AUSSI être capable de manipuler les fichiers avec PHP. Il est très facile de modifier la fonction ci-dessus pour qu'elle cherche les infos dans un fichier texte, mais pour ça, il faut savoir (je me répète...) utiliser les fonctions natives de PHP pour la manipulation de fichier, entre autres, fopen(), fgets(), fwrite(), etc...
Bonsoir,
Voici la version compteur avec support de fichier, mais avant voici les pré-requis :
1. Version testée sous PHP 4.3.10
2. Il faut créer un fichier texte (à partir du bloc-notes ou équivalent) nommé "compteur.txt" dans lequel tu auras une ligne rédigée comme ceci => 1331848649-1 ce qui se décompose ainsi :
1331848649 est le timestamp obtenu par la fonction PHP time(), le tiret (-) sert uniquement de séparateur et 1 correspond au nombre de décès de départ du compteur
3. la fonction afficheCompteur() doit être enregistrée au début de la page HTML dans laquelle devra apparaître le compteur et AVANT la balise Doctype comme ceci par exemple :
IMPORTANT : Il faut que la page HTML où doit apparaître le compteur (exemple ci-dessus) doit OBLIGATOIREMENT être enregistré avec l'extension .php et non pas .html sinon ça ne fonctionnera pas!
Il faut également que ton serveur d'hébergement supporte le langage PHP!
Le fichier compteur.txt doit être OBLIGATOIREMENT au même niveau dans l'arborescence des fichiers que la page où doit apparaître le compteur!
Tu peux placer n'importe où entre la balise <body> et </body> cette ligne :
Et personnaliser avec du CSS l'apparence de ce qui sera affiché à l'écran!
Bonne continuation...
Voici la version compteur avec support de fichier, mais avant voici les pré-requis :
1. Version testée sous PHP 4.3.10
2. Il faut créer un fichier texte (à partir du bloc-notes ou équivalent) nommé "compteur.txt" dans lequel tu auras une ligne rédigée comme ceci => 1331848649-1 ce qui se décompose ainsi :
1331848649 est le timestamp obtenu par la fonction PHP time(), le tiret (-) sert uniquement de séparateur et 1 correspond au nombre de décès de départ du compteur
3. la fonction afficheCompteur() doit être enregistrée au début de la page HTML dans laquelle devra apparaître le compteur et AVANT la balise Doctype comme ceci par exemple :
<?php function afficheCompteur() { $file = fopen("compteur.txt", "r"); $line = fgets($file); $element = explode("-", $line); $temps_reference = $element[0]; $nbre_deces = $element[1]; fclose($file); $temps_ecoule = time() - $temps_reference; //259200 = 3 jours exprimé en secondes if($nbre_deces <= 30) { if($temps_ecoule > 60) { $handle = fopen("compteur.txt", "w"); $nbre_deces += 1; $newline = time()."-".$nbre_deces; fwrite($handle, $newline); fclose($handle); //echo "Nouvelle ligne: ".$newline." / Temps de référence : ".$element[0]." / ".$nbre_deces." décès!"; echo $nbre_deces." décès."; } else { //echo "Temps de référence : ".$temps_reference." / ".$nbre_deces." décès!"; echo $nbre_deces." décès."; } } else { echo "Votre compteur est arrivé à son terme..."; } } ?><!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="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>• TEST - Compteur de décès •</title> </head> <body> <p><?php afficheCompteur(); ?></p> </body> </html>
IMPORTANT : Il faut que la page HTML où doit apparaître le compteur (exemple ci-dessus) doit OBLIGATOIREMENT être enregistré avec l'extension .php et non pas .html sinon ça ne fonctionnera pas!
Il faut également que ton serveur d'hébergement supporte le langage PHP!
Le fichier compteur.txt doit être OBLIGATOIREMENT au même niveau dans l'arborescence des fichiers que la page où doit apparaître le compteur!
Tu peux placer n'importe où entre la balise <body> et </body> cette ligne :
<p><?php afficheCompteur(); ?></p>
Et personnaliser avec du CSS l'apparence de ce qui sera affiché à l'écran!
Bonne continuation...
Fallentree
Messages postés
2309
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
209
15 mars 2012 à 23:40
15 mars 2012 à 23:40
Sans emulateur PHP, ou autre programme au niveau serveur c est impossible de le gerer depuis l interface web.
par contre des compteurs herbergé ca existait. maintenant est ce qu ils en font encore le commerce????
par contre des compteurs herbergé ca existait. maintenant est ce qu ils en font encore le commerce????
14 mars 2012 à 20:08
14 mars 2012 à 20:33