format de date dans la BDD

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : format de date dans la BDD

par anna70 » 22 janv. 2006, 18:26

ça y'est j'ai trouvé :

tu fais :

Code : Tout sélectionner

$periode = date("Ymj", mktime (0,0,0,date("m") + $periodediff,date("j"),date("Y"))); INSERT INTO table (id,ann,date,periodediffusion)values ('','vente',CURRENT_DATE,'$periode')
et merci encore.

par anna70 » 22 janv. 2006, 17:42

bon j'ai fais dater l'annonce par un insert :

Code : Tout sélectionner

INSERT INTO table (id,ann,date,periodediffusion)values ('','vente',CURRENT_DATE,(MONTH(CURRENT_DATE) + 2))
la date d'insertion se fait juste
periode de duffusion de 2 mois pour l'annonce mais je n'ai pas reussi à rajouter 2 mois à la date d'aujourd'hui .

qq1 aurait une ecriture plus juste de la requete merci .

Ps : c'est une requete d'exemple juste pour avoir meilleur ecritutre de l'ajout de 2 mois à la date . merci .

par anna70 » 22 janv. 2006, 15:24

merci cyrano,

je vais opter pour cette solution ce qui va m' epargner de faire une usine à gaz :lol:

par Cyrano » 22 janv. 2006, 15:04

Pour ma part, j'utilise le type DATE ou DATETIME selon le besoin spécifique. Pour les échanges avec la base, je fais les transformations nécessaires : de la page vers la base en transformant de la manière que j'ai indquée plus haut, et de la base vers le page en faisant exactement l'inverse.

Tout simplement. Mais ce faisant, j'ai à ma disposition beaucoup de fonctions SQL me permettant des tris précis

par anna70 » 22 janv. 2006, 15:04

moi pour les dates dans les bdd j'utilise le type de champ timestamp et la fonction sql NOW() apres du côté de php je convertis en timestamp UNIX et apres date() :)
je vais essayer la façon de fab et je vous tiens au courant. merci

par fab » 22 janv. 2006, 14:59

moi pour les dates dans les bdd j'utilise le type de champ timestamp et la fonction sql NOW() apres du côté de php je convertis en timestamp UNIX et apres date() :)

par Invité » 22 janv. 2006, 14:46

Ce n'est pas une bonne idée de modifier le format dans la base de données: ça va te couper toutes les fonctions SQL intégrées de tri sur les dates disponibles avec un format anglais. Il vaut mieux avoir un traitement de transformation pour enregistrer et un autre inverse a la récupération pour afficher.
comment tu le ferais toi , t'aurais un exemple stp merci .

par Cyrano » 22 janv. 2006, 14:41

Ce n'est pas une bonne idée de modifier le format dans la base de données: ça va te couper toutes les fonctions SQL intégrées de tri sur les dates disponibles avec un format anglais. Il vaut mieux avoir un traitement de transformation pour enregistrer et un autre inverse a la récupération pour afficher.

par anna70 » 22 janv. 2006, 14:24

merci cyrano de ta réponse,

1- alors on va dire que la date de la base s'écrira comme ça :

`datedepo` date NOT NULL default '00-00-0000',

2- la déclaration comme

$date = date ("j-m-Y");

3- et que ça affiche dans la base comme ça :

22-01-2006

comment faire l'affichage des annonces en les triant par date .

dans la requête le tri par "22-01-2006 ou 21-01-2006" ne voudra rien dire, à part que l'ecriture de la date dans la base se réécrit seulement en chiffre ( genre : 1132083909 ) et la ça voudra dire qque chose à la requête .

comment faire pour la réécrire comme ça ?? ou sinon comment declarer le champs datedepo dans la base en int au lieu de date ?

merci

par Cyrano » 22 janv. 2006, 13:53

Avant d'enregistrer une date dans la base de données, il faut commencer par la mettre au format approprié. Dans ta base en effet, le format correspond à aaaa-mm-jj et ton formulaire récupère une date au format jj/mm/aaaa.

Avec une expression régulière, tu peux parfaitement convertir la date dans le bon format AVANT l'enregistrement :
<?php
/* Exemple de chaine de date telle que récupérée du formulaire */
$chainedate = "22/01/2006";
/* Masque d'expression régulière */
$masque = "#(\d{2})/(\d{2})/(\d{4})#";
/* Conversion du format français au format anglais */
$date_sql = preg_replace($masque, "$3-$2-$1", $chainedate);
/* Affichage de contrôle */
echo("<p>". $date_sql ."</p>");
?>
Va afficher :
2006-01-22

format de date dans la BDD

par anna70 » 22 janv. 2006, 13:33

Bonjour à tous,

un petit coup de main de votre part m'aiderai à résoudre cette question qui me hante :roll: :

un formulaire pour un dépôt d'annonce ou quand je fais un insert dans la base de données je declare la date de dépôt comme ça :

Code : Tout sélectionner

$date = date ("j-m-Y");
qui s'affichera dans la base de données comme ex : 22-01-2006

en faisant un select pour afficher les annonces et pour les trier par date ça ne marche pas (ça affiche mais le tri ne se fait pas par date).

alors ma question est, comment dois je mettre les attribut du champs datedepo dans la base de données ?

comme ça ?? :

`datedepo` date NOT NULL default '0000-00-00',

sinon que me preconisez-vous comme solution ?

merci d'avance .