Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 16/12/2010, 11h38   #1
Invité de passage
 
Inscription : septembre 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 14
Points : 1
Points : 1
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 :
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 :
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:

Citation:
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
davy57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h54   #2
Membre habitué
 
Avatar de Vicrabb
 
Femme Vinciane
Développeur Web
Inscription : novembre 2010
Messages : 66
Détails du profil
Informations personnelles :
Nom : Femme Vinciane
Âge : 29
Localisation : Belgique

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

Informations forums :
Inscription : novembre 2010
Messages : 66
Points : 100
Points : 100
essaie peut-être:

Code :
echo DATE_FORMAT($val["datepost"],"%d/%m/%Y à %Hh%imin");
Ca éliminera déjà l'erreur de nombres d'arguments attendus.
__________________

Symfony par une débutante - Elgg - PHP

Je suis peut-être diplômée en archéologie mais je ne fouille pas le net pour décrypter le langage SMS, pour lire du code sans la balise du même nom..
"The cake is lie" - Doug Rattman, Portal
Vicrabb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h57   #3
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 89
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 89
Points : 36
Points : 36
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
cedrick21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 12h02   #4
Invité de passage
 
Inscription : septembre 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 14
Points : 1
Points : 1
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.
davy57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 12h04   #5
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 89
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 89
Points : 36
Points : 36
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)
cedrick21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 12h07   #6
Invité de passage
 
Inscription : septembre 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 14
Points : 1
Points : 1
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 :
echo date("d/m/Y H:i:s",$val["datepost"]);
et il m'affiche ça:

Citation:
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
davy57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 12h20   #7
Membre habitué
 
Avatar de Vicrabb
 
Femme Vinciane
Développeur Web
Inscription : novembre 2010
Messages : 66
Détails du profil
Informations personnelles :
Nom : Femme Vinciane
Âge : 29
Localisation : Belgique

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

Informations forums :
Inscription : novembre 2010
Messages : 66
Points : 100
Points : 100
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?
__________________

Symfony par une débutante - Elgg - PHP

Je suis peut-être diplômée en archéologie mais je ne fouille pas le net pour décrypter le langage SMS, pour lire du code sans la balise du même nom..
"The cake is lie" - Doug Rattman, Portal
Vicrabb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 12h23   #8
Invité de passage
 
Inscription : septembre 2010
Messages : 14
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 14
Points : 1
Points : 1
c'est bon ça marche!
Merci à vous.

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

Code :
echo date("d/m/Y à H:i:s", strtotime($val["datepost"]));
ce qui m'affiche ça sur le forum:

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

Citation:
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.
davy57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 15h02   #9
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 24

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

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

Code :
$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 :

Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h46.


 
 
 
 
Partenaires

Hébergement Web