[timestamp] Erreur d'affichage

scriptiz Messages postés 1494 Statut Membre -  
scriptiz Messages postés 1494 Statut Membre -
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.

4 réponses

Alain_42 Messages postés 5413 Statut Membre 894
 
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 1494 Statut Membre 425
 
J'ai changé le nom du champs mais ça n'a rien changé au problème ^^
0
Romi3600 Messages postés 122 Statut Membre 3
 
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 1494 Statut Membre 425
 
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