Json encoding now does not save as null in mysql

bensonley 05 Mar, 2019
When I saved forms before with json encoded repeater areas, they saved as null in mysql if there was no data, now they are saving as "" in the same field. This has happened since the last update - any resolution to correct this or stop this from happening as it's causing major issue with all my custom code areas with logical expressions?
healyhatman 05 Mar, 2019
This is happening to me as well. {data:field/DEFAULT IF EMPTY} doesn't work properly anymore because an empty field sends a "" value instead of nothing.
bensonley 05 Mar, 2019
For now I've had to put in if($var ==='""'){...} else {...} instead of 'null' which is working for any custom code outputs, but still annoying! I've got abut 30 forms relying on this so quite some work to put right even if until a fix comes into play.
Max_admin 07 Mar, 2019
What type of field has this issue ? an empty "text" field will send "", but an unselected checkbox with "ghost disabled" will send null and will use the default value.

Please post a test case!

Best regards
Max, ChronoForms developer
ChronoMyAdmin: Database administration within Joomla, no phpMyAdmin needed.
ChronoMails simplifies Joomla email: newsletters, logging, and custom templates.
healyhatman 07 Mar, 2019
I might be wrong but I always though {data:field/DEFAULT} would show DEFAULT if the text field was empty.
Max_admin 08 Mar, 2019
1 Likes
No, only if the value is null or if not available in the data array!

Best regards
Max, ChronoForms developer
ChronoMyAdmin: Database administration within Joomla, no phpMyAdmin needed.
ChronoMails simplifies Joomla email: newsletters, logging, and custom templates.
bensonley 08 Mar, 2019
I have a text fields and dropdown fields within a repeater set which is then saved into a single column in a mysql table json encoded on save. However if the repeater isnt used CF6 used to save the value is 'null', after the update it now saves as ""

Examples:

OLD with data - [{"aid":"2248","gid":"","conf":"y","agent_access":"","type":"H","agent_id":"110","value":"","date":""}]
OLD without data - null

NEW with data - [{"aid":"2248","gid":"","conf":"y","agent_access":"","type":"H","agent_id":"110","value":"","date":""}]
NEW without data - ""

Does that help understand or do you need the form?

Thanks
Max_admin 08 Mar, 2019
Ok, how do you get this encoded value ? and what are your fields names ?
Max, ChronoForms developer
ChronoMyAdmin: Database administration within Joomla, no phpMyAdmin needed.
ChronoMails simplifies Joomla email: newsletters, logging, and custom templates.
bensonley 09 Mar, 2019
I have a repeater area , called repeater_area65, and each field setup with the syntax like:

Name :appt[{var:area_repeater65.key}][conf]

ID :
conf{var:area_repeater65.key}

And in setup tab a Save Data action with a field setup on Data override on Insert / Update like:

appointments:{data.jsonen:appt}
Max_admin 09 Mar, 2019
For the 2 results you have printed above (New with data and New without data), what are the contents of the data array you get when you add a "debugger" to your form ?

The data array is the first array shown on the page in the debug output!
Max, ChronoForms developer
ChronoMyAdmin: Database administration within Joomla, no phpMyAdmin needed.
ChronoMails simplifies Joomla email: newsletters, logging, and custom templates.
bensonley 09 Mar, 2019
On Edit:

[appointments] => [{"aid":"2248","gid":"","conf":"y","agent_access":"","type":"H","agent_id":"110","value":"","date":""}]


On Save:
[appt] => Array
        (
            [0] => Array
                (
                    [aid] => 2248
                    [gid] => 
                    [conf] => y
                    [change_spec] => 
                    [agent_access] => 
                    [type] => H
                    [agent_id] => 110
                    [value] => 
                    [date] => 
                )

        )
Max_admin 09 Mar, 2019
No, I want the data array from the debugger (the top part of the debugger) when there is data and when there is no repeater data, before any json encoding is done!
Max, ChronoForms developer
ChronoMyAdmin: Database administration within Joomla, no phpMyAdmin needed.
ChronoMails simplifies Joomla email: newsletters, logging, and custom templates.
bensonley 09 Mar, 2019
Sorry Max, I'm not 100% sure what you want to see, so I've opened the access for you here with debugger on and repeater area data deleted:

https://klippa-relo.com/client-bookings-area/find-asignee/edit-asignee?aid=306&event=load

Please let me know when you've had a look and I'll remove public access again.
Max_admin 09 Mar, 2019
I get an error "column username can not be null" when I try to update the record!

I just need to check the data posted by the form when its submitted with and without the repeater.
Max, ChronoForms developer
ChronoMyAdmin: Database administration within Joomla, no phpMyAdmin needed.
ChronoMails simplifies Joomla email: newsletters, logging, and custom templates.
bensonley 09 Mar, 2019
Ah, it's because you aren't logged in it uses the logged in user for a field . If you revisit the page the rest of the data is saved correctly ( inc repeater area).

If not I can send you login access and setup copies for the forms for you to change / edit as you please?
Max_admin 09 Mar, 2019
No need for a login, just test the form twice, one time with a repeater item filled in, and one time without any repeater items, and copy here the data array contents from the debug in both cases!
Max, ChronoForms developer
ChronoMyAdmin: Database administration within Joomla, no phpMyAdmin needed.
ChronoMails simplifies Joomla email: newsletters, logging, and custom templates.
bensonley 09 Mar, 2019
1 Likes
OK, weirdly its saving this as null at the moment, which is what I want. I have another form which I'll check for the same issue, which is where I first found the problem and if it's not saving as null I'll set up the forms as requested and reply to this thread.

I've just got a lot on today which is urgent for tomorrow, so I'll finish what I have to first and then report back later.

Thanks for your help so far Max🙂
This topic is locked and no more replies can be posted.