Joomla.it Forum

Non solo Joomla... => Sviluppo => : gianni2638 12 Jun 2012, 22:34:25

: JHtml calendar e data di default
: gianni2638 12 Jun 2012, 22:34:25
Ho un componente in cui diverse tabelle hanno dei campi data in formato MySQL datetime.
Nelle view uso il seguente codice per generare il calendario javascript:
:
$this->assignRef('dateofbirth',
JHTML::_('calendar',
JHTML::_('date', $row->dateofbirth, JText::_('d-m-Y')), 'dateofbirth', 'dateofbirth','%d-%m-%Y'));
Problema: se il campo dateofbirth del db è null o vuoto, quando si apre il template default della view il campo dateofbirth del form viene automaticamente riempito con la data odierna. Se l'utente non cambia la data, cliccando su salva la data odierna viene inserita nel database anche se l'utente non intendeva selezionarla. Io vorrei che di default non vi fosse nessuna data se l'utente non ne seleziona una specifica. Ho cercato in rete ma non ho trovato nulla che fa al caso mio. Grazie per l'eventuale aiuto che mi potrete dare.
: Re:JHtml calendar e data di default
: tomtomeight 12 Jun 2012, 23:55:14
Hai un componente oppure hai scritto un componente, giusto per capire.
: Re:JHtml calendar e data di default
: gianni2638 13 Jun 2012, 07:49:54
Ho scritto io un componente per la gestione dei Club Alpini. Vi sono diverse tabelle, soci, attività, libro cassa etc e in molte di queste sono presenti date (data di nascita per i soci, data di inizio e fine per le attività, etc). Il componente è scaricabile qui: http://www.alpclub.it (http://www.alpclub.it)
: Re:JHtml calendar e data di default
: tomtomeight 13 Jun 2012, 08:03:23
Ok, la mia domanda solo per capire se stavi nella sezione giusta.
: Re:JHtml calendar e data di default
: mau_develop 13 Jun 2012, 08:58:43
se il campo dateofbirth del db è null o vuoto
---------------------------------------------------------
questo lo risolvi con un not null nel db con predefinito 0000-00-00

o con un check della var quando la chiami, se vuota $data = .....

M.
: Re:JHtml calendar e data di default
: gianni2638 13 Jun 2012, 15:20:36
Ho provato a cambiare la struttura del campo data nella tabella con NOT NULL DEFAULT '0000-00-00 00:00:00', la dichiarazione della proprietà nella classe JTable var $dateofbirth = '0000-00-00 00:00:00' (prima era null) un check della var nella view ma, nonostante il campo data del form sia vuoto e non venga cliccato il calendario, quando salva nella tabella mi inserisce sempre la data corrente. :( La mia impressione è che l'inghippo sia nell'oggetto JHTML calendar anche se ma non mi so spiegare perché, o forse nel fatto che io imposto un formato d-m-Y e questo di default si tira dietro la data corrente? L'input type text del form è vuoto quando apro il tmpl ma poi cliccando salva dopo il bind, check e store da qualche parte salta fuori la data corrente nel db.
: Re:JHtml calendar e data di default
: mau_develop 13 Jun 2012, 20:56:02
allora fai così, nella table vai nel check, se non c'è fallo, e se la var ha data odierna la var vale 0000-00-00 o null, tanto poi c'è il default del db...

in effetti è logico, un calendario deve avere una data...

M.
: Re:JHtml calendar e data di default
: gianni2638 13 Jun 2012, 23:51:11
Alla fine ho fatto così: ho rinunciato a mostrare le date nel formato %d-%m-%Y nelle view e ho disabilitato la funzione nel model che le convertiva in datetime MySQL con il metodo JDate->toMySQL(). Non so perché ma l'insieme JHTML calendar e mia funzione nel model restituiva come output la data corrente se non diversamente settata. Il metodo da te suggerito sarebbe stato utile per la data di nascita (infatti un neonato non si iscrive ad un club alpino il giorno in cui nasce  :) ) ma per la tabella attività un utente avrebbe potuto creare una attività in data odierna e il sistema glielo avrebbe impedito senza motivo. Dopo tutto le altre date in Joomla (articoli, etc) appaiono all'utente sempre in formato yyyy-mm-dd hh:mm:ss. Ho pubblicato la versione 1.1.1 con il bugfix di cui sopra. Grazie comunque mau_develop per la tua disponibilità.