Page 1 sur 1

Format DATE et entrée automatique

Posté : 06 août 2008, 18:01
par Neomcdn
Bonjour à tous!

J'ai un formulaire pour l'administration de mon site et je souhaite intégrer deux dates: l'une est obligatoire, l'autre facultative.

La vérification fonctionne bien et seule la première date est obligatoire; cependant mysql enregistre 0000-00-00 dans le second champ si celui-ci n'est pas renseigné.

- Pour être plus clair; je renseigne dans mon formulaire:

date1: 20-10-2008
date2: 21-10-2008

J'ai bien dans ma base

date1: 2008-10-20
date2: 2008-10-21

- Par contre, si dans mon formulaire je saisis que la première date:

date1: 20-10-2008
date2:

J'ai alors dans ma base:

date1: 2008-10-20
date2: 0000-00-00

Comment s'il-vous-plaît, supprimer ce remplissage automatique ?

J'ai essayé des tests sur mes $_POST ou sur mes $_SESSION et rien de mieux; même si c'est vide, sql remplit...

Pour information, je fais le traitement sur ma page (vérifications et enregistrement en base si tout est ok).

Merci par avance!

@++!

Posté : 06 août 2008, 18:58
par dunbar
Salut
A mon avis le champs de ta table est un champ date donc a chaque enregistrement sans autre donnée il va mettre 0000-00-00 a toi de modifier le type de champ et cela réglera ton soucis.

A+

Oui mais pour les calculs?

Posté : 07 août 2008, 08:28
par Neomcdn
Hello!

La date est effectivement au format DATE. Le souci est que si je mets cette date en Varchar, alors je ne pourrai plus l'utiliser dans des calculs de différence de date,...

Qu'en penses-tu? Il n'existe pas d'autre solution: une option de mysql pour désactiver ce remplissage automatique.

Par exemple à quoi correspond ?

- Ds les attributs: UNSIGNED ZEROFILL, UNSIGNED, ON UPDATE CURRENT_TIMESTAMP

A priori, je ne peux pas modifier ces éléments...

Merci pour votre aide!

@+!

Posté : 10 août 2008, 18:12
par Ryle
En fait il te faut juste modifier la valeur par défaut du champ date (sans le passer en varchar).

En effet, mysql propose lorsqu'une valeur null est insérée dans un champ NOT NULL de le remplacer par une valeur par défaut (en l'occurence 0000-00-00 pour les dates). Il te suffit donc de modifier la structure de la table pour dire que ce champ accepte les valeur NULL et qu'il doit être NULL par défaut si aucune valeur n'est spécifiée :)

Posté : 03 sept. 2008, 11:05
par Invité
Salut Ryle et merci pour ta réponse !

Je ne l'avais pas vu et j'ai donc procédé différemment.

Je laisse enregistrer mysql cette valeur 0000-00-00 et c'est seulement à l'affichage que je teste la valeur de la base de donnée. Au lieu de tester valeur nulle:

Code : Tout sélectionner

if($row_date['fin_date_even'])!=''
Je fais un

Code : Tout sélectionner

if($row_date['fin_date_even'])!='0000-00-00'
Je vais maintenant pouvoir faire les modifs sur la table.

Je ne connaissais pas cette valeur par défaut.

@+![/code]