Bonjour à tous,
Toujours dans le cadre du développement de mon module, j'ai un problème d'insertion de date dans ma base.
Voici ma table :
Citation :CREATE TABLE `member` (
`member_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`uid` mediumint(8) unsigned NOT NULL,
`member_lastname` varchar(30) NOT NULL,
`member_firstname` varchar(30) NOT NULL,
`member_birthdate` date NOT NULL,
`member_address` varchar(100) NOT NULL,
`member_postcode` int(5) NOT NULL,
`member_city` varchar(30) NOT NULL,
`member_mobilephone` varchar(10) NOT NULL,
`member_winamax` varchar(30) NOT NULL,
PRIMARY KEY (`member_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
Ensuite j'ai créé un formulaire avec l'API Xoops :
include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
$form = new XoopsThemeForm($title, 'userform', $action, 'post', true);
$form->addElement(new XoopsFormText(_PPCONTRIB_AM_MEMBER_LASTNAME, 'member_lastname', 30, 100, $user->getVar('member_lastname')), true);
$form->addElement(new XoopsFormText(_PPCONTRIB_AM_MEMBER_FIRSTNAME, 'member_firstname', 30, 255, $user->getVar('member_firstname')), true);
$form->addElement(new XoopsFormTextDateSelect(_PPCONTRIB_AM_MEMBER_BIRTHDATE, 'member_birthdate', 15, strtotime($user->getVar('member_birthdate'))), true);
$form->addElement(new XoopsFormText(_PPCONTRIB_AM_MEMBER_ADDRESS, 'member_address', 35, 255, $user->getVar('member_address')), true);
$form->addElement(new XoopsFormText(_PPCONTRIB_AM_MEMBER_POSTCODE, 'member_postcode', 5, 255, $user->getVar('member_postcode')), true);
$form->addElement(new XoopsFormText(_PPCONTRIB_AM_MEMBER_CITY, 'member_city', 35, 255, $user->getVar('member_city')), true);
$form->addElement(new XoopsFormText(_PPCONTRIB_AM_MEMBER_PHONENUMBER, 'member_mobilephone', 10, 255, $user->getVar('member_mobilephone')), true);
$form->addElement(new XoopsFormHidden('op', 'save') );
$form->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
return $form;
XoopsFormTextDateSelect renvoie la date sous le format YYYY-MM-DD. Je pensais que le problème venait de là. Mais même en changeant en dur la date ne se sauvegarde pas en base.
Pour sauvegarder, j'utilise ça :
case "save":
if ( !$GLOBALS['xoopsSecurity']->check() ) {
redirect_header('member.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors() ));
}
if ( isset($_REQUEST['id']) ) {
$obj =& $memberhandler->get($_REQUEST['id']);
} else {
$obj =& $memberhandler->create();
}
$obj->setVar('member_lastname', $_REQUEST['member_lastname']);
$obj->setVar('member_firstname', $_REQUEST['member_firstname']);
$obj->setVar('member_birthdate', $_REQUEST['member_birthdate']);
$obj->setVar('member_address', $_REQUEST['member_address']);
$obj->setVar('member_postcode', $_REQUEST['member_postcode']);
$obj->setVar('member_city', $_REQUEST['member_city']);
$obj->setVar('member_mobilephone', $_REQUEST['member_mobilephone']);
if ( $memberhandler->insert($obj) ) {
redirect_header('member.php', 3, sprintf(_PPCONTRIB_AM_SAVEDSUCCESS, _PPCONTRIB_AM_MEMBER) );
}
J'ai essayé de mettre en dur tous les formats possibles :
- 22-07-1984
- 1984-07-22
- 22/07/1984
- 1984/07/22
J'ai mm essayé de faire un strtotime. Rien n'y fait, en base c'est toujours le 1er janvier 1970 qui est enregistré.
Quelqu'un a une idée ?