problème fonction date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème fonction date

Re: problème fonction date

par Dr@ke » 23 nov. 2009, 23:14

Prochaine étape le compte à rebours en javascript, ça va pas être de la tarte, n'ayant jamais fait de javascript. :(
J'avais oublié de préciser, ci-dessous, un exemple de script javascript de compte à rebours qui à l'air fonctionnel, d'après les commentaires (Mais je n'ai pas testé personnellement).
Va voir ici:
http://www.commentcamarche.net/forum/af ... -a-rebours
(au pire cela te donne une base de départ)

La cerise sur la gâteau pour toi, c'est qu' apparemment il se base sur l'heure du poste client.
(cela te donnera donc aussi un exemple pour te baser sur l'heure du poste en javascript)

:wink:

Re: problème fonction date

par FuZZyLine » 23 nov. 2009, 23:10

Salut,
J'avais bien pensé à un problème de décalage horaire, mais le serveur c'est OVH, hébergé en France, comme l'atteste l'heure que j'affichais qui était bien l'heure française. Et je ne comprends toujours pas pourquoi la même variable avait une heure de décalage quand affiché avec la fonction date.
Néanmoins avec "date_default_timezone_set('UTC');", ça fonctionne bien.
Bon, bein c'est cool ;)
Enfin je n'ai plus qu'à rajouter une heure si je veux afficher l'heure de fin.
Est-ce possible ensuite d'afficher l'heure de fin par rapport à l'heure du client (si le client n'est pas en France) ?
Prochaine étape le compte à rebours en javascript, ça va pas être de la tarte, n'ayant jamais fait de javascript. :(
Soit tu analyses via javascript sa config soit tu essaie côté php en utilisant l'ip.

> JS n'est pas toujours activé côté user
> l'IP... Elle reste relative côté exactitude
[*] Je parle biensur de procéder à un ip2country et d'en déduire un F-H, (risqué, voir souvent faux)

Tu peux aussi y arriver en biaisant mais ce sera une autre paire de manche. Sur ce coup Fsockopen
pourrait t'y aider mais... c'est un autre débat.

@+ bon code ;)

PS: 'tite info: En js pour le control timer c'est: setTimeout()...

EDIT: [*] Mais plus drole à faire eh eh eh ;)

Re: problème fonction date

par Dr@ke » 23 nov. 2009, 23:06

Tu peux connaitre l'heure du client grâce a javascript car contrairement a Php, javascript est exécuté par le poste client et non par le serveur.
D'où l'avantage d'utiliser l'heure universelle (UTC), car de cette façon quelque-soit le Fuseau horaire du poste client, les heures seront toujours compatibles avec l'heure du serveur...

Si c'est un décompte en seconde, cela me parait inutile de t'embêter a récupérer l'heure réelle du client.
Exemple en javascript (UTC):

Code : Tout sélectionner

var date=new Date(); var jour=date.getUTCDate();
Sinon:
http://www.toutjavascript.com/reference ... ef=getDate
http://fr.hscripts.com/tutoriels/javasc ... thodes.php

Re: problème fonction date

par Ricou » 23 nov. 2009, 22:53

J'avais bien pensé à un problème de décalage horaire, mais le serveur c'est OVH, hébergé en France, comme l'atteste l'heure que j'affichais qui était bien l'heure française.
Et je ne comprends toujours pas pourquoi la même variable avait une heure de décalage quand affiché avec la fonction date.

Néanmoins avec "date_default_timezone_set('UTC');", ça fonctionne bien.
Enfin je n'ai plus qu'à rajouter une heure si je veux afficher l'heure de fin.

Est-ce possible ensuite d'afficher l'heure de fin par rapport à l'heure du client (si le client n'est pas en France) ?
Prochaine étape le compte à rebours en javascript, ça va pas être de la tarte, n'ayant jamais fait de javascript. :(

Re: problème fonction date

par Dr@ke » 23 nov. 2009, 16:44

Sinon tu t'embêtes à mon avis, tu peux faire simplement:

Exemple:
// il faut le mettre aussi dans le script qui créé le cookie
date_default_timezone_set('UTC');

$maintenant = time();
       
        if (isset($_COOKIE['heure_fin_recolte'])) 
        {
                $temps_avant_rafraichissement = $_COOKIE['heure_fin_recolte'] - $maintenant;
     
                $url = 'http://' . $_SERVER["HTTP_HOST"] . $_SERVER["PHP_SELF"];
                       
                if ($temps_avant_rafraichissement <= 0) {
                     header("Location: $url");
                     setcookie('heure_fin_recolte', $maintenant);
                }
                else {
                     echo '<br />fin de récolte dans '.$temps_avant_rafraichissement.' secondes';
               }
        }
        else {
                setcookie('heure_fin_recolte', $maintenant);
        }

Re: problème fonction date

par Dr@ke » 23 nov. 2009, 15:45

Personnellement, j'utilise l'heure universelle, qui est comme son nom l'indique, universelle.
Les utilisateurs ont de toute façon des Times zones différents.
Le serveur peut être hébergé ailleurs qu'en France aussi.
C'est bien plus simple et cela évite certaines bugs.

Pour ce faire tu peux configurer le Time zone dans un fichier include() qui sera inclut dans tous les fichiers php utilisant une date ou une heure...
Exemple en php:
date_default_timezone_set('UTC');
Cela permet aussi de rendre compatible simplement les dates et heures des scripts Php et des script javascripts.
Exemple en javascript:
var date=new Date();
var jour=date.getUTCDate();
Voila , si cela répond à ta question, tu peux cliquer résolut :wink:

Re: problème fonction date

par FuZZyLine » 23 nov. 2009, 10:00

Salut,
J'ai le code suivant
$maintenant = time();
	
	if (isset($_COOKIE['heure_fin_recolte'])) //ligne 1
	{
		$temps_avant_rafraichissement = $_COOKIE['heure_fin_recolte'] - $maintenant; //ligne 2

		$fin_recolte = $_COOKIE['heure_fin_recolte']; //ligne 3
			
		echo 'le serveur a l\'heure : '.date('H:i:s', $maintenant); //ligne 4
		echo '<br />Fin de récolte à '.date('H:i:s', $fin_recolte); //ligne 5
		echo '<br />Fin de récolte dans '.date('H:i:s', $temps_avant_rafraichissement); //ligne 6
		echo '<br />fin de récolte dans '.$temps_avant_rafraichissement.' secondes'; //ligne 7
			 
		$phrase_refresh = $temps_avant_rafraichissement.' url=ouverture_popup.php'; //ligne 8
	}
Le cookie contient un timestamp, à l'heure inscrite dans le cookie la page doit se rafraichir (ligne 8), ce qui fonctionne (j'utilise une balise meta en html pour ça).
Mon problème c'est que la ligne 7 m'affiche bien le nombre de seconde que je souhaite, par exemple : 130 secondes.
Alors que la ligne 6 m'affiche en même temps 1 heure de plus, soit 01:02:10
La ligne 5 m'affiche bien l'heure de fin correcte aussi et l'heure du serveur a à peu près la même heure que mon pc.

Et une fois le timestamp dans le cookie dépassé, la ligne 7 m'affiche un nombre négatif (normal), alors que la ligne 6 m'affiche toujours 1 heure de plus, soit par exemple "00:59:30" pour la ligne 6 et "-30" pour la ligne 7.

Je ne comprends vraiment pas pourquoi il y a cette différence alors que la variable est la même.
[...]
De biais (vi, je sais, c'est pas bien) je lis que tu as un décalage, aussi, je présume que ca provient,
probablement, de la zone (GMT). Essai d'utiliser ceci: http://fr2.php.net/manual/fr/function.d ... ne-set.php

@+ bon code ;)

problème fonction date

par Ricou » 23 nov. 2009, 00:52

J'ai le code suivant
$maintenant = time();
	
	if (isset($_COOKIE['heure_fin_recolte'])) //ligne 1
	{
		$temps_avant_rafraichissement = $_COOKIE['heure_fin_recolte'] - $maintenant; //ligne 2

		$fin_recolte = $_COOKIE['heure_fin_recolte']; //ligne 3
			
		echo 'le serveur a l\'heure : '.date('H:i:s', $maintenant); //ligne 4
		echo '<br />Fin de récolte à '.date('H:i:s', $fin_recolte); //ligne 5
		echo '<br />Fin de récolte dans '.date('H:i:s', $temps_avant_rafraichissement); //ligne 6
		echo '<br />fin de récolte dans '.$temps_avant_rafraichissement.' secondes'; //ligne 7
			 
		$phrase_refresh = $temps_avant_rafraichissement.' url=ouverture_popup.php'; //ligne 8
	}
Le cookie contient un timestamp, à l'heure inscrite dans le cookie la page doit se rafraichir (ligne 8), ce qui fonctionne (j'utilise une balise meta en html pour ça).
Mon problème c'est que la ligne 7 m'affiche bien le nombre de seconde que je souhaite, par exemple : 130 secondes.
Alors que la ligne 6 m'affiche en même temps 1 heure de plus, soit 01:02:10
La ligne 5 m'affiche bien l'heure de fin correcte aussi et l'heure du serveur a à peu près la même heure que mon pc.

Et une fois le timestamp dans le cookie dépassé, la ligne 7 m'affiche un nombre négatif (normal), alors que la ligne 6 m'affiche toujours 1 heure de plus, soit par exemple "00:59:30" pour la ligne 6 et "-30" pour la ligne 7.

Je ne comprends vraiment pas pourquoi il y a cette différence alors que la variable est la même.


EDIT : ce sera peut-être plus compréhensible avec des copié/collé, voici ce que renvoi le code ci-dessus :
le serveur a l'heure : 23:51:51
Fin de récolte à 23:54:00
Fin de récolte dans 01:02:09
fin de récolte dans 129 secondes
Ou un peu plus tard avec le même cookie :
le serveur a l'heure : 23:54:26
Fin de récolte à 23:54:00
Fin de récolte dans 00:59:34
fin de récolte dans -26 secondes