Page 1 sur 1

Formulaire TABLE et DATE

Posté : 14 juil. 2006, 17:28
par dunbar
Bonjour,
J'ai créer un formulaire les données du formulaire une fois validation s'incrive dans une TABLE.
Dans cette TABLE il y à plmus champs DATE (exemple DATE_1, DATE_2, etc...)
Mon problème est toute les lignes du formulaire ne doivent pas être obligatoirement remplie (certaine fois 15 lignes sur 30)
Mais dans me base les champs date qui corresponde aux champs vide du formulaire s'incrive quand même sous cette forme 0000-00-00 comment je dois faire pour évité cela ?

Merci :(

Posté : 14 juil. 2006, 19:14
par moogli
salut,

je vois la une erreur dans la conception de ta table.

utilise une seconde table pour les tables.
exemple
id clef primaire
idUtilisateur : jointure avec la 1er table (en générale la clef primaire de l'autre table )
date : datetime

tu insère tes dates dans la seconde table, cela évite 300 champs inutiles dans la 1er table :)

@+

Posté : 14 juil. 2006, 22:05
par dunbar
Salut,

Je suis pas certain d'avoir mais ci-desous ma TABLE merci de me dire se que j'aurais mal fait 8)

Code : Tout sélectionner

CREATE TABLE `basse_tension` ( `IDprestation` int(11) NOT NULL auto_increment, `chantier` varchar(255) collate latin1_german1_ci NOT NULL, `code_rp` varchar(255) collate latin1_german1_ci NOT NULL, `desc_rp` varchar(255) collate latin1_german1_ci NOT NULL, `qt_rp` varchar(255) collate latin1_german1_ci NOT NULL, `date_rp` date NOT NULL, `equipe_rp` varchar(255) collate latin1_german1_ci NOT NULL, `rem_rp` varchar(255) collate latin1_german1_ci NOT NULL, `code_rc` varchar(255) collate latin1_german1_ci NOT NULL, `desc_rc` varchar(255) collate latin1_german1_ci NOT NULL, `qt_rc` varchar(255) collate latin1_german1_ci NOT NULL, `date_rc` date NOT NULL, `equipe_rc` varchar(255) collate latin1_german1_ci NOT NULL, `rem_rc` varchar(255) collate latin1_german1_ci NOT NULL, `code_md` varchar(255) collate latin1_german1_ci NOT NULL, `desc_md` varchar(255) collate latin1_german1_ci NOT NULL, `qt_md` varchar(255) collate latin1_german1_ci NOT NULL, `date_md` date NOT NULL, `equipe_md` varchar(255) collate latin1_german1_ci NOT NULL, `rem_md` varchar(255) collate latin1_german1_ci NOT NULL, `code_bt` varchar(255) collate latin1_german1_ci NOT NULL, `desc_bt` varchar(255) collate latin1_german1_ci NOT NULL, `qt_bt` varchar(255) collate latin1_german1_ci NOT NULL, `date_bt` varchar(255) collate latin1_german1_ci NOT NULL, `equipe_bt` varchar(255) collate latin1_german1_ci NOT NULL, `rem_bt` varchar(255) collate latin1_german1_ci NOT NULL, `code_rs` varchar(255) collate latin1_german1_ci NOT NULL, `desc_rs` varchar(255) collate latin1_german1_ci NOT NULL, `qt_rs` varchar(255) collate latin1_german1_ci NOT NULL, `date_rs` date NOT NULL, `equipe_rs` varchar(255) collate latin1_german1_ci NOT NULL, `rem_rs` varchar(255) collate latin1_german1_ci NOT NULL, `code_dv` varchar(255) collate latin1_german1_ci NOT NULL, `desc_dv` varchar(255) collate latin1_german1_ci NOT NULL, `qt_dv` varchar(255) collate latin1_german1_ci NOT NULL, `date_dv` date NOT NULL, `equipe_dv` varchar(255) collate latin1_german1_ci NOT NULL, `rem_dv` varchar(255) collate latin1_german1_ci NOT NULL, `touret_01` varchar(255) collate latin1_german1_ci NOT NULL, `touret_02` varchar(255) collate latin1_german1_ci NOT NULL, `touret_03` varchar(255) collate latin1_german1_ci NOT NULL, `touret_04` varchar(255) collate latin1_german1_ci NOT NULL, PRIMARY KEY (`IDprestation`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=1 ;
D'avance merci :wink:

Posté : 14 juil. 2006, 22:52
par Ryle
Ce n'est absolument pas un problème de conception et si l'utilisation d'une table externe pour stocker des dates peut s'avérer interessante lorsque l'on doit travailler spécifiquement sur celles-ci (genre retrouver tous les lundi ou autre) elle n'est vallable que dans certains cas particulier et certainement pas à généraliser à tout bout de champs :)

Ton format 0000-00-00 provient de la valeur par défaut que donne mysql à un champ date. En effet comme tu as déclaré tes champs date comme étant NOT NULL, cela signifie qu'il doit forcément y avoir une valeur. Et au lieu de te jeter comme toute bonne base de données devrait le faire lorsque oublie de spécifier une valeur pour un champ non null, mysql y colle sa valeur par défaut et continue comme si de rien n'était.

Pour l'éviter, il te faut modifier la structure de ta table en ne laissant à NOT NULL que les champs obligatoires, et utiliser la valeur "null" dans requête à la place de ta date vide :)

Posté : 15 juil. 2006, 00:32
par dunbar
Salut

Oui la solution est tellement évidente que je suis HONTEUX de l'avoir poser... :oops:

Merci quand même :lol: