JeuWeb - Crée ton jeu par navigateur
[regler]type timestamp dans la bdd - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [regler]type timestamp dans la bdd (/showthread.php?tid=1945)

Pages : 1 2


[regler]type timestamp dans la bdd - jo_link_noir - 31-10-2007

bonjour,
j'ai un problème pour enregistrer une date dans la bdd, ça m'affiche toujours 0000-00-00 00:00:00, je comprend pas pourquoi...

voici le code pour enregistrer les infos (d'ailleur il me les enregistres en double Oo)
Code PHP :
<?php 
mysql_query
("INSERT INTO mini_chat VALUES('".$id_alliance."', '".mktime()."', '".$message."')") or die (mysql_error());

et la structure de la bbd :
Champ : date
Type : timestamp
Interclassement :
Attributs : ON UPDATE CURRENT_TIMESTAMP
Null : non
Défaut : CURRENT_TIMESTAMP

bah voilà, c'est juste ça le problème ^^
allez j'vais dormir, merci de m'avoir lu


RE: type timestamp dans la bdd - V1nc3 - 31-10-2007

Le timestamp est un nombre du type 0000000000 donc très long.

Quand tu fais un mktime, il te convertit ta date en format 0000000000, donc il faudrai l'enregistrer dans un champs de type BIGINT, puis quand tu en as besoin dans ton code php, tu fais date('d/m/Y', $ta_date) en mettant dans $ta_date le contenu de ton champs date (un BIGINT pour rappel).

ps : si c'est l'heure actuel que tu veux mettre dans ta base, utilise plutot time() a ce moment la.


RE: type timestamp dans la bdd - Loetheri - 31-10-2007

Pourquoi veux-tu garder un timestamp ? -_-'


RE: type timestamp dans la bdd - naholyr - 31-10-2007

Le format "TIMESTAMP" en MySQL transite sous forme de chaine de caractère (il est cependant stocké en tant qu'entier long) au format "YYYY-MM-DD hh:mmConfuseds" il ne comprend donc pas l'entier qui tu lui envoies.
Au lieu de mktime() (qui prend des paramètres, quelle drôle d'idée de l'appeler sans aucun paramètre, autant appeler directement time() non ?), il faut donc utiliser date('Y-M-D h:iConfused')


RE: type timestamp dans la bdd - Sephi-Chan - 31-10-2007

Non, non.

Si ton champ est de type TIMESTAMP, tu ne mets rien lors de l'insertion, comme si le champ n'existait pas. Il va automatiquement prendre le TIMESTAMP actuel si tu prends soin de lui mettre CURENT_TIMESTAMP comme valeur par défaut.


Sephi-Chan


RE: type timestamp dans la bdd - jo_link_noir - 31-10-2007

j'ai éssayé tous ce que vous avez dit : date('Y-d-m H:iConfused'), time() et rien mais ça enregistre toujours 0000-00-00 00:00:00...


RE: type timestamp dans la bdd - Sephi-Chan - 31-10-2007

Sephi-Chan a écrit :Non, non.

Si ton champ est de type TIMESTAMP, tu ne mets rien lors de l'insertion, comme si le champ n'existait pas. Il va automatiquement prendre le TIMESTAMP actuel si tu prends soin de lui mettre CURENT_TIMESTAMP comme valeur par défaut.


Sephi-Chan



RE: type timestamp dans la bdd - jo_link_noir - 31-10-2007

oui j'ai rien mi
Code PHP :
<?php 
mysql_query
("INSERT INTO mini_chat VALUES('".$id_alliance."', '', '".$message."')") or die (mysql_error());

c'est comme ça non ?


RE: type timestamp dans la bdd - V1nc3 - 31-10-2007

Sinon fais comme je t'ai dis...


RE: type timestamp dans la bdd - Sephi-Chan - 31-10-2007

Je sais pas.

Essaye de prendre l'habitude de citer les champs que tu remplies. Ça te permet de ne pas avoir à modifier tes requêtes si tu changes le schéma de ta BdD, et cela permet aussi de ne remplir que les champs utiles.

Par exemple :
Code PHP :
<?php 
$query
= sprintf('INSERT INTO mini_chat (id_alliance, message) VALUES(%d, '%s');', $idAlliance, $message);
$query = mysql_query($query);

Ainsi, tu laisses le champ qui contient les dates se remplir seul.

Il faut cependant que tu ai coché la case CURRENT_TIMESTAMP en valeur par défaut pour ton champ date, dans phpMyAdmin.

Et n'écoute pas ceux qui te disent de stocker le timestamp en utilisant celui de PHP. Smile


Sephi-Chan