Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2008, 13h36   #1
Invité de passage
 
Inscription : juin 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 16
Points : 4
Points : 4
Par défaut Passer valeur javascript dans un formulaire

Bonjour à tous,
je cherche à récupérer l'heure du poste client de mes utilisateurs; pour cela, j'utilise une fontion JS des plus basiques :

Code :
1
2
3
4
5
6
7
8
9
10
11
<SCRIPT LANGUAGE="JavaScript">
function aff_heure() {
	var date_jr=new Date;
	var hh=date_jr.getHours();
	if(hh<10){hh="0"+hh}
	var mm=date_jr.getMinutes();
	if(mm<10){mm="0"+mm}
	var date=hh+":"+mm+":00";
	document.write(date);
}
</SCRIPT>
Je veux insérer cette valeur dans la base de données; comme JS est éxécuté après PHP, j'ai choisit de faire passer ma valeur dans un formulaire par un champ hidden.

Code :
1
2
<?php $time_now='<script> aff_heure(); </script>'; ?>
<input type="hidden" name="heure" value="<?php echo $time_now; ?>">
Si je fais un echo $time_now, le navigateur m'affiche l'heure.
Cependant, après avoir envoyé le formulaire, un echo $_POST['heure'] me renvoit vide.
Savez-vous pkoi et comment puis-je faire pour contourner ce problème?

Merci de votre aide et à bientot.
clementh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 14h16   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 383
Points : 16 383
Code :
<?php $time_now='<script> aff_heure(); </script>'; ?>
PHP ne peut pas recuperer la valeur de ton script javascript car il ne sait pas lire le javascript.

Il faut que ce soit javascript qui donne la valeur au champ "heure".
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 14h18   #3
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Bonjour.

Essaie ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<SCRIPT LANGUAGE="JavaScript">
function aff_heure() {
	var date_jr=new Date;
	var hh=date_jr.getHours();
	if(hh<10){hh="0"+hh}
	var mm=date_jr.getMinutes();
	if(mm<10){mm="0"+mm}
	var date=hh+":"+mm+":00";
	document.forme.heure.value=date;
}
</SCRIPT>
<form name="forme" method="POST">
<input type="text" name="heure" value="" onBlur="aff_heure()">
</form>
A la place de onBlur tu peux aussi essayer onFocus
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 14h52   #4
Invité de passage
 
Inscription : juin 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 16
Points : 4
Points : 4
Citation:
Envoyé par philippef Voir le message
Bonjour.

Essaie ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<SCRIPT LANGUAGE="JavaScript">
function aff_heure() {
	var date_jr=new Date;
	var hh=date_jr.getHours();
	if(hh<10){hh="0"+hh}
	var mm=date_jr.getMinutes();
	if(mm<10){mm="0"+mm}
	var date=hh+":"+mm+":00";
	document.forme.heure.value=date;
}
</SCRIPT>
<form name="forme" method="POST">
<input type="text" name="heure" value="" onBlur="aff_heure()">
</form>
A la place de onBlur tu peux aussi essayer onFocus
J'ai essayé :
Code :
<input type="hidden" name="heure" value="" onBlur="aff_heure()">
mais lorsque j'essaye d'afficher ma variable POST['heure'], ca ne passe pas.
Meme avec un input type text.

Existe-t-il d'autres moyen de récupérer l'heure du client qui se connecte?
clementh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 15h14   #5
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
plus simplement et pour remplacer javascript :
Code :
<input type="text" name="heure" value="<?php echo date("H:i:s"); ?>">
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 15h30   #6
Invité de passage
 
Inscription : juin 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 16
Points : 4
Points : 4
Citation:
Envoyé par philippef Voir le message
plus simplement et pour remplacer javascript :
Code :
<input type="text" name="heure" value="<?php echo date("H:i:s"); ?>">
Mais date() me renvoit l'heure du serveur.
Le problème, c'est que j'ai des utilisateurs partout dans le monde, pour lesquels je dois enregistrer en base l'heure de création des demandes qu'ils enregistrent sur le site.
clementh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 16h00   #7
Membre confirmé
 
Inscription : mars 2003
Messages : 674
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 674
Points : 242
Points : 242
Tu aurais du être plus clair dès le début car récupérer l'heure du Canada quand un canadien enregistre une demande sur ton site ou un chinois ou n'importe qui dans le monde, je vois pas trop comment tu peux faire !!!!

Je suis curieux de voir ce qu'on peut te proposer comme solution.
philippef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 16h22   #8
Invité de passage
 
Inscription : juin 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 16
Points : 4
Points : 4
Oui, désolé de ne pas avoir précisé le paramètre "monde entier". Je pensais avoir été explicite en demande l'heure du client!
clementh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 16h34   #9
Membre éprouvé
 
Avatar de defcon_suny
 
Développeur informatique
Inscription : décembre 2006
Messages : 436
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 436
Points : 486
Points : 486
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<script language="javascript" >
function aff_heure() {
	var date_jr=new Date;
	var hh=date_jr.getHours();
	if(hh<10){hh="0"+hh}
	var mm=date_jr.getMinutes();
	if(mm<10){mm="0"+mm}
	var date=hh+":"+mm+":00";
	document.forme.heure.value=date;
}
</script>
<form name="forme" method="post" onsubmit="aff_heure()">
<input type="text" name="heure" value="">
<input type="submit" value="envoyer">
</form>
defcon_suny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 16h47   #10
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Il suffit de poster l'heure comme ceci par exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if(isset($_POST['heure'])){
 
  // Exemple pour te montrer comment récupérer les données :
  die(htmlspecialchars($_POST['heure']));
}
?>
 
<form method="post">
<input type="hidden" name="heure" id="heure"/>
</form>
 
<script type="text/javascript">
  var date_jr=new Date;
  var hh=date_jr.getHours();
  if(hh<10){hh="0"+hh}
  var mm=date_jr.getMinutes();
  if(mm<10){mm="0"+mm}
  document.getElementById("heure").value=hh+":"+mm+":00";
  document.forms[0].submit();
</script>
Sinon, une autre solution: Javascript sait lire et écrire dans les cookies.
On peut les utiliser pour passer des données à PHP et inversement.
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 16h50   #11
Invité de passage
 
Inscription : juin 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 16
Points : 4
Points : 4
Ta solution fonctionne parfaitement defcon_suny.
Un grand merci à toi pour ton aide, et je passe tout de suite cette discussion à Résolu afin que ça serve pour d'autre.
Bon week end a tous!!!

Edit : sub0, je testerai ta solution dans peu de temps, car elle semble convenir à un autre de mes problèmes.
Encore Bon week end!!!
clementh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 16h51   #12
Membre éprouvé
 
Avatar de defcon_suny
 
Développeur informatique
Inscription : décembre 2006
Messages : 436
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 436
Points : 486
Points : 486
Citation:
Envoyé par clementh Voir le message
Mais date() me renvoit l'heure du serveur.
Le problème, c'est que j'ai des utilisateurs partout dans le monde, pour lesquels je dois enregistrer en base l'heure de création des demandes qu'ils enregistrent sur le site.
Suppose l'envoi d'un formulaire et donc l'heure à laquelle il a été envoyé. Ceci nécessite donc l'utilisation de la fonction javascript au moment du submit

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<script language="javascript" >
function aff_heure() {
	var date_jr=new Date;
	var hh=date_jr.getHours();
	if(hh<10){hh="0"+hh}
	var mm=date_jr.getMinutes();
	if(mm<10){mm="0"+mm}
	var date=hh+":"+mm+":00";
	document.forme.heure.value=date;
}
</script>
<form name="forme" method="post" onsubmit="aff_heure()">
<input type="text" name="heure" value="">
<input type="submit" value="envoyer">
</form>
La fonction peut , et même doit, être place dans la partie <head> de l'HTML
defcon_suny est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2008, 16h57   #13
Invité de passage
 
Inscription : juin 2008
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 16
Points : 4
Points : 4
La fonction était déjà dans <HEAD>
Merci encore pour l'aide apportée!!!
clementh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h45.


 
 
 
 
Partenaires

Hébergement Web