Champ DATE et php

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 : Champ DATE et php

par Ryle » 31 août 2007, 15:24

Bah si cela peut te simplifier le principe, dis toi que ton champ DATE n'est rien de plus qu'un VARCHAR(10), dans lequel, pour des raisons d'uniformité tu souhaites stocker des chaines au format aaaa-mm-jj :)

Dans tous les cas, c'est une chaine de caractère que tu vas utiliser dans ta requête sql pour alimenter le champ.

Bon, supposons maintenant que tu demandes à l'utilisateur de saisir sa date d'anniversaire au format "jj/mm/aaaa" dans le champ. Tu peux facilement identifier dans ta chaine les 2 premiers caractères (qui correspondront au jour), les 4 et 5 (qui correspondront au mois) et les 7 à 10 (qui te donneront l'année). Et une fois ces trois valeurs extraites de la chaine d'origine, tu peux bien les réordonner pour former une nouvelle chaine qui correspondra au format souhaité :)

N'oublie pas qu'avant d'être une date, il s'agit avant tout d'une chaine de caractères. Il existe donc énormément de fonction pour les manipuler. Regarde du côté de substr() ou explode() pour ne citer que ces deux là :)

Maintenant, si tu connais un peu les expressions régulières, tu peux également te lancer dans un masque assez simple pour réordonner les éléments de ta chaine et obtenir ta date au format désiré :)

par Morkem » 31 août 2007, 14:48

Oui mais vous parlez pour un VARCHAR la non ?

J'ai déjà utilisé un wordwrap donc je vois a peut pres ce que vous voulez dire par couper mais la j'ai un champ DATE... Et du coup il n'accepte rien d'autre que 20070831 par exemple.

J'aurais jamais cru que ca aurait été si compliqué de relever des anniversaires lol.

par Sékiltoyai » 31 août 2007, 12:19

Au pire, avec une bonne pcre on coupe ça sans problème :)

par Ryle » 31 août 2007, 10:20

Ben c'est vous qui voyez... y en a qu'on essayé, ils ont eu des problèmes, mais cela dit, il est très rapide ! :)

En bref, si tu as plus d'affinité avec sql tu peux le faire dans la requête, si tu te sens plus à l'aise avec php, découpe la chaine en php. Tu peux même le faire en javascript si tu veux, mais dans ce cas vaut mieux utiliser directement php pour pas avoir à recontrôler derrière.

L'utilisateur va se contenter de saisir une chaine de caractère qu'il te suffit ensuite de découper pour identifier jour mois et année et les remettre dans le bon ordre pour les insérer en base :)

par Morkem » 31 août 2007, 10:09

Ba en fait je regarde pas mal de doc mais je ne vois pas comment appliquer :s

Comment entrer une date ddmmyyyy dans le input ? Lorsque c'est traité par la page suivante, le format n'est pas valide et il me remet 0000-00-00.

En fait je ne veux pas afficher de date sur le site mais formater le input pour que le membre la rentre de facon francaise.
Donc du coup je ne sais pas si je dois le mettre lors du traitement du POST
$anniversaire = $_POST['anniversaire'];
Ou lors de l'envoi a sql

Code : Tout sélectionner

mysql_query("INSERT INTO secretariat VALUES('', '".$nom."' , '".$prenom."' , '".$anniversaire."' ,...
Ou ailleurs :s Je vois de plus en plus de doc differente et je m'y perd de plus en plus :p

par Vikchill » 31 août 2007, 09:38

Pense aussi à vérifier la validité de la date saisie (comme pour toutes les saisies d'ailleurs).

par Ryle » 31 août 2007, 00:13

Morkem, le forum FAQ contient des explications détaillées sur ce sujet :
:arrow: Quelques petites manipulations avec les dates (PHP/MySQL)

par Sékiltoyai » 30 août 2007, 23:46

Regarde avec strptime() et strftime() ou les autres fonctions de date.

Champ DATE et php

par Morkem » 30 août 2007, 21:55

Bonjour,

Je voudrais réaliser un script qui affiche les membres qui ont leur anniversaire dans la semaine...

J'ai donc mis ceci dans mysql :

Code : Tout sélectionner

`anniversaire` date NOT NULL,
car apparemment je peux récuperer par la suite une semaine précise... MAIS je n'en suis pas encore là !!

Car en fait il faut avant tout que des gens s'inscrivent et mettent leur date de naissance. Et la c'est le drame car il doivent la mettre au format yyyymmdd et j'aimerais la mettre sous la forme ddmmyyyy.

J'ai un petit formulaire de cette forme :
<input name="anniversaire" type="text" id="anniversaire" />
et ensuite je traite les données avec un POST...

Bref que faut il mettre (et ou faut il le mettre) pour changer le format de date ?
J'ai bien essayer plusieurs truc de ce type la mais je trouve pas :
$anniversaire = date_format($_POST['anniversaire'], '%d.%c.%Y');