Suppress 1970.01.01 in editor datepicker
Suppress 1970.01.01 in editor datepicker
After i solved the format problem with unix timeseconds in a oracle db in the datable editor (https://datatables.net/forums/discussion/comment/149816), i have the next problem :-(
The design of database writes always a 0 in the datafield, when were is no input. Don't ask me - i can not change it. This is the oracle database from my customer and not mine :-/
So, here's my problem:
If one of the date fields is not entered when the record is created, then a 0 is written into the database. After a couple of days, the customer knows the date and wishes to update the field. Now the editor shows '1970.01.01'. This is absolutly correct because the editor found a 0 in the database and this represents '1970.01.01'.
For the customer it's very toilsome to click in the datepicker from 1970 until 2019. Is there a way that i can change the shown date-value in the editor / date-picker when it's '1970.01.01' ?
Thanks a lot for any help
This question has an accepted answers - jump to answer
Answers
Assuming the Oracle field accepts a date of NULL, use
on the Editor field.
@tangerine
Thanks for your help, but your solution didn't work. As i explained: Into the Oracle database a 0 (Zero) is written and not null. So the setFormatter is not working because the field is not empty, it has a value and the value is 0.
I think i will need some different on the javaScript side where i define the editor fields. But i found nothing to write into the inputfield. The only thing i found was "def". But "def" only works if nothing is found in the value of the field, i.e. null. But datatable will find a 0 and this is a value, so "def" won't work.
Is there a something like "value" in HTML?
Then i would do something like:
….and what i forget to write:
I'm still using the setFormatter in the server script to convert the unixseconds to a date Format with
So i'm not shure if i can use 2 setFormatters….
Yes, I understand that; but I stand by my answer. There is more detail in my posts in this thread:
https://datatables.net/forums/discussion/comment/146871#Comment_146871
I'm not sure which of "ifEmpty(null)" or "nullEmpty" is preferred - possibly one of them is a legacy method.
A zero in PHP is considered empty.
Why is there a zero in the field sent to the server in the first place?
@tangerine
First of all: Thanks for your time and help.
As i descriped before (perhaps not so clear), there are triggers in the Oracle database which fill every field with a 0 (zero) if the field is null (empty). I can't change this behavior, because it's the database of my client and i have no rights of changing the database. Therefore the setformatter makes no sense.
I'm sorry but i can't confirm your statement that "A zero in PHP is considered empty." My client works with Php 5.6.25 and there a "0" is definitely not null. But that should not interest us now.
In the database is a "0" (zero) and if it's so, i want that the editor shows the current date and not "1970.01.01".
Nobody with an idea?
null is not the same as empty. Explicitly submitting null via Editor's formatter will write null to the db, assuming Oracle allows null date fields.
Look at the documentation for PHP's empty() function. A zero is considered empty.
A
0
as a Unix timestamp is by its very definition 1970/01/01 00:00:00. The timestamp counts the number of seconds since that point. See here.So if you are putting in 0 as a default value, then yes, it would be 1st Jan 1970.
If you didn't want that to show, then you could use a get formatter to detect that value and return an empty string. I would recommend against that though - what if someone actually wanted to put in 1970-01-01. Its a perfectly valid value.
As @tangerine says, use
null
if there no value assigned to the field in the db. That's what it is there for.Allan
I can't modify the trigger or the design of this database. I know that 0 is the 1st Jan 1970. I know that this is absolutly correct.
Here i have to "manipulate" the editor. If the value in the Input line of the editor is 0 (equal to 1st Jan 1970), then i have to change the date in the datepicker of the editor to the current date. But i don't know how.
In pure php i would write
How can i do something like this in the editor input datepicker field?
Hi @dg_datatables ,
This here is a way you could do it on the client end. It's doing two things: 1, showing an empty date instead of 0 on the view display, and 2. converts it to the current date on the edit.
Cheers,
Colin
@colin
This is exactly what i want. Thanks a lot.
Helpfull the part in the show-section:
and this part: