Fork me on GitHub






Problème d'insertion en base
Newbie
Inscrit: 04/06/2012 16:23
Messages: 15
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'30100$user->getVar('member_lastname')), true);
    
$form->addElement(new XoopsFormText(_PPCONTRIB_AM_MEMBER_FIRSTNAME'member_firstname'30255$user->getVar('member_firstname')), true);
    
$form->addElement(new XoopsFormTextDateSelect(_PPCONTRIB_AM_MEMBER_BIRTHDATE'member_birthdate'15strtotime($user->getVar('member_birthdate'))), true);
    
$form->addElement(new XoopsFormText(_PPCONTRIB_AM_MEMBER_ADDRESS'member_address'35255$user->getVar('member_address')), true);
    
$form->addElement(new XoopsFormText(_PPCONTRIB_AM_MEMBER_POSTCODE'member_postcode'5255$user->getVar('member_postcode')), true);
    
$form->addElement(new XoopsFormText(_PPCONTRIB_AM_MEMBER_CITY'member_city'35255$user->getVar('member_city')), true);
    
$form->addElement(new XoopsFormText(_PPCONTRIB_AM_MEMBER_PHONENUMBER'member_mobilephone'10255$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'3implode(','$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'3sprintf(_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 ?

Posté le : 03/08/2012 15:40
Partager Twitter Partagez cette article sur GG+
Re: Problème d'insertion en base
Admin Frxoops
Inscrit: 04/03/2011 09:10
De Lot
Messages: 2837
si la date ne se sauvegarde dans ta table, c'est que ta table demande un format spécifique (ici DATE) donc il faut que le format de ta date soit au format MySQL donc AAAA-MM-JJ

Pour éviter les problèmes (notamment avec les différents formats de date suivant le pays), je te conseillerai de changer le format de ta table en int(10) puis utiliser
la fonction PHP mktime pour l'insérer dans la BDD (suffit de mettre 0 pour l'heure, les minutes et les secondes).

Posté le : 03/08/2012 15:56
Partager Twitter Partagez cette article sur GG+
Re: Problème d'insertion en base
Newbie
Inscrit: 04/06/2012 16:23
Messages: 15
J'ai essayé de mettre en format AAAA-JJ-MM en dur mais la date ne se sauvegarde pas non plus.

Je vais essayer de faire ce que tu m'as dit, je te tiens au courant.

EDIT : ha ouais mais mktime m'oblige à parser ma chaine de date pour insérer à part l'année, le mois et le jour non ?

Posté le : 03/08/2012 16:14
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

14 Personne(s) en ligne (8 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 14 | Plus ...