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 :

afficher un timestamp


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 14
    Points : 8
    Points
    8
    Par défaut afficher un timestamp
    Hello,

    J'ai réussi à enregistrer du timestamp dans ma table de mon forum sous l'attribut "datepost" avec cette requête et la fonction NOW():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $SQL = "INSERT into forum2 (datepost, login, message) VALUES (NOW(),'".$_POST["login"]."','".$_POST["message"]."')";
    mysql_query($SQL);
    Sauf que pour l'afficher sur le forum j'ai essayé ç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
    15
    16
    $SQL = "SELECT * FROM forum2"
             . " ORDER BY ID DESC";
          $res = mysql_query($SQL);
          // Tant qu'il y a des messages
          while($val=mysql_fetch_array($res)) {
             // Nouvelle ligne
             echo "<tr><td>";
             // Ecrit la date du message
             echo DATE_FORMAT(datepost,"%d/%m/%Y à %H%M%S",$val["datepost"]);
             // Ecrit le login de l'auteur
             echo " - ".$val["login"];
             echo "<br>";
             // Ecrit le message, n'autorise pas les code html ;)
             echo htmlentities($val["message"]);
             // Fin de ligne
             echo "</td></tr>";
    et j'ai ces erreurs:

    Notice: Use of undefined constant datepost - assumed 'datepost' in C:\wamp\www\celibataire-rencontres-internet\forum.php on line 54

    Warning: date_format() expects exactly 2 parameters, 3 given in C:\wamp\www\celibataire-rencontres-internet\forum.php on line 54
    Pourtant c'est bien la bonne fonction pour afficher la date à partir de timestamp.
    Merci

  2. #2
    Membre régulier Avatar de Vicrabb
    Femme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 66
    Points : 102
    Points
    102
    Par défaut
    essaie peut-être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo DATE_FORMAT($val["datepost"],"%d/%m/%Y à %Hh%imin");
    Ca éliminera déjà l'erreur de nombres d'arguments attendus.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 141
    Points : 92
    Points
    92
    Par défaut
    relis la doc, DATE_FORMAT accepte comme 1er paramètre une date au format ... DATE
    ex : 2010-12-16

    alors que tu toi tu lui fourni un timestamp
    ex : 1292496899

    Soit tu arrêtes le timestamp dans ta base et tu le remplaces par un champ DATETIME
    Soit tu utilises la fonction FROM_UNIXTIME à la place de DATE_FORMAT
    Cette fonction utilise le même principe mais avec un timestamp au lieu d'une date
    ex : SELECT FROM_UNIXTIME(1292496899, '%d/%m/%Y %h:%i:%s') as dateFormatee FROM maTable

    Bon courage

    EDIT : en te relisant je vois que tu utilises NOW() qui enregistre un DATETIME et non un timestamp. Dans ce cas il faut effectivement utiliser DATE_FORMAT

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    merci mais pourquoi dans ma table il me met la date au format 2010-12-16 11:25:46, j'ai pas bien saisi car le timestamp est un nombre à 10 chiffres.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 141
    Points : 92
    Points
    92
    Par défaut
    ton champ dans ta table est donc au format DATETIME, ce n'est pas un INT par exemple ....

    Le timestamp est un nombre entier positif qui indique le nombre de secondes écoulées depuis le 1er janvier 1970 (ex :1292497528 pour le 16/12/2010 à 12:05:28)

    Il faut donc bien utiliser DATE_FORMAT, seul les 2e premiers paramètres sont valides (cf l'exemple de Vicrabb)

  6. #6
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Ce que je veux c'est récupérer cette date pour l'afficher sur le forum en : 16-12-2010 à 11:25:46 au lieu de 2010-12-16 11:25:46

    J'ai donc changé dans ma table mon attribut datepost en datetime au lieu de timestamp.

    Je crois qu'il faut utiliser la fonction date() pour afficher du datetime alors j'ai essayé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo date("d/m/Y H:i:s",$val["datepost"]);
    et il m'affiche ça:

    Notice: A non well formed numeric value encountered in C:\wamp\www\celibataire-rencontres-internet\forum.php on line 54
    01/01/1970 00:33:30

  7. #7
    Membre régulier Avatar de Vicrabb
    Femme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2010
    Messages : 66
    Points : 102
    Points
    102
    Par défaut
    Pour date(), le deuxième argument doit être un timestamp, or, la valeur que tu envoies apparemment n'est pas un timestamp.

    As-tu essayé le code que je t'ai mis au moins?

  8. #8
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    c'est bon ça marche!
    Merci à vous.

    Voilà ce que j'ai fais dans mon select:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo date("d/m/Y à H:i:s", strtotime($val["datepost"]));
    ce qui m'affiche ça sur le forum:

    15/12/2010 à 18:25:27 - davy
    Bonjour!
    Pour le code tu m'as mis, voilà ce que ça m'affiche sur le fourm:

    Warning: date_format() expects parameter 1 to be DateTime, string given in C:\wamp\www\celibataire-rencontres-internet\forum.php on line 54
    - davy
    Bonjour!
    J'aimerais que ça marche en timestamp aussi.

  9. #9
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Personnellement j'ai toujours préféré faire ce genre de transformations directement dans la requête SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $SQL = 'SELECT `login`, `message`, DATE_FORMAT(`datepost`, "%d/%m/%Y à %H:%i:%s") AS `datepost` FROM forum2 ORDER BY `ID` DESC';
    Ensuite tu ne te soucies plus du format. Il te suffit d'afficher :


Discussions similaires

  1. minicom afficher les timestamp
    Par linuxATH dans le forum RedHat / CentOS / Fedora
    Réponses: 0
    Dernier message: 11/12/2010, 18h33
  2. TIMESTAMP(0) m'affiche les fractions de seconde
    Par Eleven O'Clock dans le forum Débuter
    Réponses: 5
    Dernier message: 29/07/2010, 18h11
  3. Afficher date de type TIMESTAMP
    Par aemilia26 dans le forum JDBC
    Réponses: 3
    Dernier message: 26/02/2010, 11h44
  4. [MySQL] Afficher TIMESTAMP dans un autre ordre
    Par lelapinrusse dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/02/2008, 12h54
  5. [hibernate]afficher des timestamps
    Par azpublic dans le forum Hibernate
    Réponses: 13
    Dernier message: 03/04/2006, 12h07

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