[timestamp] Erreur d'affichage

Fermé
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 - 5 mai 2009 à 19:58
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 - 5 mai 2009 à 22:42
Bonjour,

C'est la première fois que j'ai ce soucis et je n'ai vraiment aucunes idée d'où il vient étant donné que j'ai souvent utiliser les timestamps et ça a toujours bien marché.

Je vous explique donc l'origine du soucis, j'ai dans ma base de données MySQL une table dont un des champs s'appelle "timestamp" et dans lequel je dépose la valeur de "time()" lorsqu'un utilisateur envoie un message. Voici comment les messages sont insérés dans la table :
$query = sprintf("INSERT INTO guestbook (name, email, message, timestamp) VALUES ('%s', '%s', '%s', '%d')",
		mysql_real_escape_string($_POST['name']),
		mysql_real_escape_string($_POST['email']),
		mysql_real_escape_string($_POST['message']),
		time());
		mysql_query($query, $dbc)or die($sql_error.mysql_error());

Jusque là tout vas bien, les enregistrements sont bien enregistrés, ... je me retrouve donc avec 5 messages dont voici les timestamp que je vois dans phpmyadmin :
- 1241534842
- 1241536005
- 1241538237
- 1241538872
- 1241542452

Le soucis, c'est lorsque je les récupèrent, je les mets dans une fonction date() que voici :
echo " le ".date("j/m/Y \&\a\g\\r\av\e\; H\hi",$message['timestamp']);

Et il me sort pour toutes les dates, le 1er janvier 1970 comme si $message['timestamp'] était égal à zéro.

J'ai donc vérifier ce que timestamp contenait, et curieusement, lorsque je fais un "echo $message['timestamp'];" il m'affiche une lettre (genre un t ou T ou m ou d'autres trucs bizarres).

Par contre si je fait un "print_r($message);" là il m'affiche le bon timestamp ainsi que tout ce qui se trouve dans $message correctement.

Donc là je sèche vraiment, comment se fait-il que print_r() sorte les bonnes valeurs et qu'un simple echo ne me renvoie qu'une lettre ?

D'avance merci pour votre aide car là je galère aussi bien en local que sur mon hébergeur.
A voir également:

4 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
5 mai 2009 à 20:18
moi a ta place j'éviterait de mettre des noms réservés genre timestamp comme non de champ dans tes tables
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
5 mai 2009 à 21:28
J'ai changé le nom du champs mais ça n'a rien changé au problème ^^
0
Romi3600 Messages postés 83 Date d'inscription mardi 11 novembre 2008 Statut Membre Dernière intervention 18 juin 2009 3
5 mai 2009 à 21:34
LOL ,

Timestanp j'aoute automatiquement dans ta table , donne lui comme structure un timestanp , tu va rire , sa j'ajoute tout seul ( auto_increment )

Enfin moi il me semble que c'est ce que j'ai fait !

Bonne chance

ROmi
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
5 mai 2009 à 22:42
J'ai été bête l'erreur c'était que la variable dans laquelle je récupérai la requête fetchée, j'y affectais quelque chose d'autre avant de vouloir en traiter le champs timestamp :

exemple :
$sql_message = mysql_query(.........)or die(....);
$message = mysql_fetch_array($sql_message);
$name = $message['name'];
$message = $message['content'];
echo $message['timestamp'];


comme quoi ce sont souvent les erreurs les plus bêtes qui nous en font le plus baver :P
0