IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Passer valeur javascript dans un formulaire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 10
    Points
    10
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?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".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Bonjour.

    Essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par philippef Voir le message
    Bonjour.

    Essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <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?

  5. #5
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    plus simplement et pour remplacer javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="heure" value="<?php echo date("H:i:s"); ?>">

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par philippef Voir le message
    plus simplement et pour remplacer javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <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.

  7. #7
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    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.

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    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!

  9. #9
    Membre confirmé Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Points : 547
    Points
    547
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  10. #10
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Il suffit de poster l'heure comme ceci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    De retour parmis vous après 10 ans!!

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    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!!!

  12. #12
    Membre confirmé Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Points : 547
    Points
    547
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  13. #13
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    La fonction était déjà dans <HEAD>
    Merci encore pour l'aide apportée!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passer valeur javascript dans une classe
    Par jquery dans le forum jQuery
    Réponses: 3
    Dernier message: 02/07/2015, 18h23
  2. [AC-2003] Passer valeur enregistrement dans autre formulaire
    Par imagine_forty dans le forum IHM
    Réponses: 2
    Dernier message: 03/10/2010, 11h53
  3. [PHP-JS] Passer une valeur $_POST dans un formulaire
    Par ddami1 dans le forum Langage
    Réponses: 10
    Dernier message: 18/07/2008, 21h05
  4. Réponses: 7
    Dernier message: 19/05/2007, 13h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo