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

PHP & Base de données Discussion :

Enregistrer l'heure dans une BDD [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut Enregistrer l'heure dans une BDD
    Bonjour,

    Comment enregistrer l'heure dans une BDD ? Ca serait un peu comme pour les forums, pour enregistrer l'heure d'un post. J'ai pour l'instant le code ci-dessous. Mais il m'enregistre dans la BDD <script.... au lieu d'appliquer le JS.

    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
    <?php
    $heure = "<script language='JavaScript'>
    var d=new Date;
    var j=d.getDate();
    if (j<10) {j='0'+j};
    var n=d.getMonth()+1;
    if (n<10) {n='0'+n};
    var a=d.getFullYear();  
    var h=d.getHours();
    var m=d.getUTCMinutes();
    if (m<10) {m='0'+m};
    window.document.write('<small>[',j,'/',n,'/',a,'] [',h,':',m,']</small>');
    </script>";
     
    $req = $bdd->prepare('INSERT INTO table(heure) VALUES(:heure)');
    $req->execute(array('heure' => $heure,));
    ?>
    Merci pour votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    la variable $heure contient toute la chaine
    "<script language='JavaScript'>
    var d=new Date;
    var j=d.getDate();
    if (j<10) {j='0'+j};
    var n=d.getMonth()+1;
    if (n<10) {n='0'+n};
    var a=d.getFullYear();
    var h=d.getHours();
    var m=d.getUTCMinutes();
    if (m<10) {m='0'+m};
    window.document.write('<small>[',j,'/',n,'/',a,'] [',h,':',m,']</small>');
    </script>"
    tu pourra utiliser la fonction date() du php

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Pourquoi ne pas utiliser champ DATETIME et ensuite la fonction en SQL : CURRENT_TIMESTAMP ?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table(heure) VALUES (CURRENT_TIMESTAMP)
    Mais ce sera l'heure de ton serveur (hébergeur).

    Aussi, faut savoir que Php ne comprend pas le Javascript (idem pour Html, Css,etc ...), c'est toi qui génère le code en Php.
    Ce code généré sera ensuite transmit vers le client, un navigateur, qui lui interprètera le code.
    Le code coté client c'est uniquement du Html, Javascript, Css ... mais pas du Php.
    Attention à la relation client/serveur quelque peu trompeuse.


    L'ajax permet par exemple d'interroger un serveur de manière asynchrone, ce qui permettrait par exemple d'envoyer l'heure de la machine cliente vers le serveur.
    Mais je me demande si l'heure du client ne se trouverait pas dans l'entête que reçois le serveur ? Faudrait essayer.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut
    Merci ! Je connaissais pas CURRENT_TIMESTAMP, par contre comment faire pour enlever les secondes, et remplacer aaaa-mm-jj par jj/mm/aaaa ?

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    comment faire pour enlever les secondes, et remplacer aaaa-mm-jj par jj/mm/aaaa ?
    Je te déconseille d'enregistrer une date au format Français, c'est très loin d'être universel, ceci vas te compliqué la vie plus qu'autre chose.

    Le SQL et Php sont très puissants, et il y a tout ce qu'il faut pour faire les conversions quand ce sera nécessaire.

    Conclusion, et si tu veux juste aaaa-mm-jj : change le type de ton champ cote Bdd par un type DATE, et ensuite utilise la fonction CURDATE() (au lieu de current_timestamp) pour insertion.


    Une Doc qui te donne en partie les manipulations sur les dates : (genre obtenir une date au format jj/mm/aaa)
    http://dev.mysql.com/doc/refman/5.0/...functions.html

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Par défaut
    ok mais quelle fonction me permet d'enlever les secondes ?

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par Kel-T
    ok mais quelle fonction me permet d'enlever les secondes ?
    Si tu veux l'heure et les minutes, mais pas les secondes, et bien ça ne sera pas possible, il n'y a pas un type spécifique coté MySQL pour ça.

    Mais on s'en fiche qu'il y ai l'heure dans la BDD, c'est vraiment un détail.

    C'est lorsque tu veux l'afficher, ou l'exploiter après insertion qui compte, et là, il existe une full de solutions.
    Soit on le fait coté Bdd, dans la requête : STR_TO_DATE(nom_du_champ, '%Y/%m/%d %H:%i')
    Soit en php (une fois récupéré la date après requête) : strftime('%Y/%m/%d %H:%i', $nom_du_champ)

    Prospecte la doc, car il y a vraiment de quoi faire à ce niveau.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/08/2008, 10h13
  2. enregistrer un chemin dans une BDD MySQL
    Par Sargon dans le forum C#
    Réponses: 11
    Dernier message: 23/08/2007, 11h59
  3. probleme d'enregistrement d'heures dans une table
    Par pit88 dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/07/2007, 21h48
  4. Pb lors de l'enregistrement des sessions dans une BDD
    Par tomcoch dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2007, 10h14

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