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 :

date de type timestamp dans programme php [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de hammag
    Profil pro
    Inscrit en
    Février 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 511
    Points : 145
    Points
    145
    Par défaut date de type timestamp dans programme php
    bonjour,

    Dans ma base mysql j'ai un champ de type timestamp et dans mon programme php quand j'essaie d'insérer une date dans ce champ en utilisant la fonction mktime()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $date = mktime();
     
    $req = $connexion->query('UPDATE table SET end_session="'.$date.'"  WHERE condition="'.$val.'"') or die('Erreur SQL !<br />'.$req.'<br />'.$connexion->error) ;
    je reçois l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Incorrect datetime value: '1241622151' for column 'end_session' at row 1
    si ce n'est pas la fonction mktime() qui renvoie une date de type timestamp, quelle autre fonction pourra faire ce job.

  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
    Tu as fais une confusion :
    Le type TIMESTAMP est prévu pour stocker automatiquement l'heure courante lors d'une commande INSERT ou UPDATE.
    Si tu veux stocker un timestamp, il te faut un champ INT(10) ; mais pour avoir travailler avec les deux je te conseille un champ DATETIME pour stocker des dates.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué Avatar de hammag
    Profil pro
    Inscrit en
    Février 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 511
    Points : 145
    Points
    145
    Par défaut
    Tu as fais une confusion :
    Citation:
    Le type TIMESTAMP est prévu pour stocker automatiquement l'heure courante lors d'une commande INSERT ou UPDATE.
    mais moi j'utilise une commande UPDATE dans ma requête !!


    ou bien si j'utilise un champ datetime dans ma base, quelle est la fonction php qui récupère l'équivalent du datetime actuel, j'ai essayé avec la fonction date() mais ça n'a pas marché.

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 193
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 193
    Points : 8 403
    Points
    8 403
    Billets dans le blog
    17
    Par défaut
    Je crois que sabotage confond avec CURRENT_TIMESTAMP.
    N'est-ce pas pluôt les " autour de la valeur qui posent pb ?

    Citation Envoyé par hammag Voir le message
    ou bien si j'utilise un champ datetime dans ma base, quelle est la fonction php qui récupère l'équivalent du datetime actuel
    date( ) http://fr.php.net/date

    j'ai essayé avec la fonction date() mais ça n'a pas marché.
    Donne ton bout de script et le msg d'erreur
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre habitué Avatar de hammag
    Profil pro
    Inscrit en
    Février 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 511
    Points : 145
    Points
    145
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $end_date = date();
     
    $req = $connexion->query('UPDATE connexion SET end_session="'.$end_date.'"  WHERE member_id="'.$this->getID().'"') or die('Erreur SQL !<br />'.$req.'<br />'.$connexion->error) ;;
    le type du champ dans mysql est DATETIME.

    l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Warning: date() expects at least 1 parameter, 0 given in K:\EasyPHP 3.0\www\Forum\Classes\Members\Member.php on line 197
    Erreur SQL !
     
    Incorrect datetime value: '' for column 'end_session' at row 1

    en revanche j'ai trouvé une solution qui m'arrange: j'utilise NOW() directement dans ma reqête sql. Mais comme même j'aimerai connaitre comment insérer une date dans ma bdd.

  6. #6
    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
    Je crois que sabotage confond avec CURRENT_TIMESTAMP.
    Non je ne confonds pas, ou alors il faut demander a mysql de réecrire sa doc.
    Un champ de type "timestamp" prend comme valeur la date courante ; mais c'est un champ au format datetime, il ne prend pas un timestamp au sens PHP.


    Si tu veux insérer une date depuis un timestamp php tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "UPDATE table SET champdate = FROM_UNIXTIME(" . $timestamp . ")";
    La fonction date() de PHP fait la meme chose (convertir un timestamp) sauf que le format est libre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "UPDATE table SET champdate = '" . date('Y-m-d H:i:s',$timestamp) . "'";
    Si tu veux insérer une date, il faut juste respecter le format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "UPDATE table SET champdate = '2009-04-24 19:32:24'";
    mais effectivement pour mettre la date courante, utilise NOW()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Convertir Date en type Long JAVA en PHP
    Par Galoula dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 16/08/2010, 16h19
  2. Afficher date de type TIMESTAMP
    Par aemilia26 dans le forum JDBC
    Réponses: 3
    Dernier message: 26/02/2010, 11h44
  3. Réponses: 4
    Dernier message: 29/01/2008, 16h01
  4. [Système] Commande Linux dans Programme PHP
    Par makohsarah dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2007, 12h36
  5. difference entre deux dates de type Timestamp
    Par err dans le forum Requêtes
    Réponses: 4
    Dernier message: 10/08/2006, 18h44

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