Validation d'un formulaire en fonction de l'heure

Eléphant du PHP | 187 Messages

09 nov. 2006, 00:42

Bonjour,
Je souhaiterais soumettre un formulaire qui existe deja sur une page et auquel je ne peux pas toucher à une heure précise. Si possible, il faudrait que le script récupère non pas l'heure du PC mais l'heure du serveur.
Je debute en javascript et je n'ai aucune idée de la fonction a faire.
Netsupraat

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

09 nov. 2006, 00:46

Pour récupérer l'heure du serveur : PHP
Pour récupérer l'heure du client : Javascript

Eléphant du PHP | 187 Messages

09 nov. 2006, 00:56

Oui et pour valider un formulaire sans refresh -> Javascript, et c'est justement sur ce point que j'ai besoin d'aide...
Merci,
Netsupra

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

09 nov. 2006, 01:05

Vu d'ici, c'est pas bien compréhensible, ton truc... :?
Un bout de code pourrait peut-être nous aider à y voir un peu plus clair, non ?

Eléphant du PHP | 187 Messages

09 nov. 2006, 01:14

Justement, c'est assez rare mais la je seche totalement donc je peux pas te fournir de code.
J'ai l'heure du serveur a un instant donné que je converti en seconde.
Il faut que j'ai deux chose : d'une part un compteur qui s'incremente toutes les secondes, et d'autres part, une fonction qui me permet lorsque le compteur atteint une valeur donnée de valider un formulaire se trouvant sur une page.
PS : je suis developpeur confirmé en PHP mais débutant en javascript.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

09 nov. 2006, 01:19

Si j'ai bien compris, le principe serait :
  1. PHP récupère l'heure du serveur
  2. Javascript compare cette heure serveur récupérée par PHP avec l'heure de référence
  3. Si égalité, Javascript lance automatiquement l'envoi/validation du formulaire
C'est ça ? :-s

Eléphant du PHP | 187 Messages

09 nov. 2006, 01:23

:D Exactement :D
As-tu une idée, Ô grand modo de comment faire :D
Je suis sur que ma question est debile mais la je seche :'(

ViPHP
ViPHP | 1961 Messages

09 nov. 2006, 05:19

Bonjour,
Une solution consiste à jouer avec l'interval (en millisecondes) entre le moment présent et l'heure d'envoie du formulaire.
Et on utilise après la fonction JS setInterval() qui permet l'exécution d'une tache dans un lapse de temps (calculé en milisecondes)

Ça nous donnerai QQ chose du style
<?php
$heureEnvoie = 79200; // 22h00 en secondes
$maintenant = date('H') * 3600 + date('i') * 60 + date('s');
/*
** CALCUL DU NOMBRE DE MILLIEMES DE SECONDE A ATTENDRE
** Si $maintenant > $heureEnvoie on change de jour
** Exp: Il est 22h et on doit l'envoyer à 03h
*/
$interval = ($maintenant > $heureEnvoie ?  (86800 - $maintenant) + $heureEnvoie : $heureEnvoie - $maintenant) * 1000;
?>
<html>
<head>
	<script type="text/JavaScript">
		// Déclaration de l'dentifiant du timer
		timerId = null;
		
		function evoieFormulaire(){
			// Annule toute nouvelle action
			clearInterval(timerId);
			// Soumission du formulaire
			document.ma_form.submit(); 
		}
	</script>
</head>
<body onLoad="JavaScript:timerId = setInterval('evoieFormulaire()', <?php echo $interval;?>);">
<form name="ma_form" action="ma_page.php" method="post">
</form>
</body>
</html>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphant du PHP | 187 Messages

09 nov. 2006, 19:51

Merci ;)