Probleme de calcul de date [Regle] - 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 : Probleme de calcul de date [Regle] (/showthread.php?tid=1924) Pages :
1
2
|
Probleme de calcul de date [Regle] - Kassak - 24-10-2007 Bonsoir bonsoir, je suis en train d'essayer de faire divers calcul en utilisant les fonctions de date, time etc...et je galere un peu. Je vais vous montrez juste une partie de ce que je souhaites faire, car je pense que se sera la même procédure pour mes autres calculs. Alors j'ai ma date sous ce format : Code PHP :
Ce que je voulais faire est simple, determiner a partir de cette date, quel jour il était 5 jours plus tot, pour ainsi supprimer tout ce qu'il faut dans la base de données de mon jeu ( historique et message si vous voulez savoir ) Voici ce que j'ai fais : Code PHP :
Avec cette variable $date_efface j'obtiens bien la date d'il y a 5 jours. Mon probleme, on est le 24/10, j'ai un message qui date du 25/09, il ne partira pas, car le mois n'est pas pris en compte dedant, seuleument le jour, donc legerement embetant et je ne vois aps comment y remedier^^ Tant que j'y suis, avant, je faisais un select des actions ou la date est inferieur a $date_efface, et je faisais une boucle qui supprimait les messages, maintenant je n'ia mis que le DELETE, et cela ne marche plus, le probleme vient d'ou? Voili voila merci d'avance, si je n'ai pas était assez clair dites le moi! RE: Probleme de calcul de date - Sephi-Chan - 24-10-2007 Quel est le type de ton champ date ? RE: Probleme de calcul de date - Kassak - 24-10-2007 C'est un Varchar(50), ca vient de la? RE: Probleme de calcul de date - Sephi-Chan - 24-10-2007 On a inventé des champs TIMESTAMP, DATE, TIME ou DATETIME. C'est bien plus pratique que d'utiliser PHP, et bien moins gourmand en ressources. Je te conseille donc de passer ton champ en TIMESTAMP, ça te permettra de stocker ton timestamp au format : 2007-10-24 21:28:12 De plus, grâce à la valeur par défaut CURRENT_TIMESTAMP, tu n'as même pas besoin de renseigner ton champ au moment du INSERT. Il prend par lui même le TIMESTAMP actuel lors de l'insertion dans la base. Ensuite, tu as une multitude de fonctions SQL pour traiter ça. Par exemple avec : Code : DELETE FROM `messages` WHERE `ACCcreation_date` < DATE_SUB( CURRENT_TIMESTAMP( ) , INTERVAL 5 DAY ) Imagine donc qu'au moment de la requête, le TIMESTAMP SQL est 2007-10-24 21:00:00, la requête supprimera tous les champs crées avant le 2007-10-19 21:00:00. C'est pas magnifique ? Sephi-Chan RE: Probleme de calcul de date - Kassak - 24-10-2007 Je la met comme ca? Rien a modifier a par le nom de ma table? Je dois dire que j'en apprend tous les jours moi..^^ RE: Probleme de calcul de date - Kassak - 24-10-2007 Hum, cela ne marche pas, j'ai mis le type timestamp a mon champ date, j'ai rentré une date d'il y a un mois, et quand je lance le script rien ne se passe. Tu as loupé une ligne?^^ RE: Probleme de calcul de date - Sephi-Chan - 24-10-2007 Ben il faut que tu mettes à ton champ date le type TIMESTAMP. Cela aura pour effet de détruire les informations de date déjà présentes dans ce champ (tu auras 0000-00-00 00:00:00 à la place). Attention donc. Pour remettre des informations cohérentes, tu as juste à faire (une seule fois, dans phpMyAdmin par exemple) : Code : UPDATE `actions` SET date = CURRENT_TIMESTAMP(); Après tu pourras modifier manuellement quelques unes de ces dates pour tester ta requête. Si tu modifies manuellement, garde en tête le format des timestamp SQL, qui est AAAA-MM-JJ HH:MM:SS. Sache aussi que cette manière de stocker les timestamp est également plus flexible à l'affichage, en partie grâce à la fonction DATE_FORMAT(date,format). Si tu fais : Code : SELECT `nom`, DATE_FORMAT(`date`, '%e/%m/%Y à %kh%i') FROM `actions`; Sephi-Chan RE: Probleme de calcul de date - Kassak - 26-10-2007 Alors alors, je n'arrive pas a faire marcher cette requete... Code PHP :
Le champ ou il y a la date s'apelle...date et la table s'apelle action. Et quand je lance le script, rien ne se passe, j'ai pourtant un message datant du 2007-08-28 22:19:53. Est ce qu'il n'y aurait pas le même probleme qu'a début? Que le 5 day ne prennent en compte que les jours, et pas le mois, l'année etc...?[/php] RE: Probleme de calcul de date - Sephi-Chan - 26-10-2007 Peux-tu nous montrer l'exportation de ta table (structure et données) que je puisse faire des tests ? Sephi-Chan RE: Probleme de calcul de date - Kassak - 26-10-2007 Citation :Structure de la table `action` C'est cela que tu veux? J'y est inscrit n'importe quoi, t'inquiete pas, c'était juste pour tester |