Drop down with select..

mattsh

Member
I have a element with a drop down list
Select (value=0)
Yes
No

This is not an required element, but I don't want any value saved to the db if "Select" is selected.

How to do this?
 
I already have a value (values) in the db, I just want the user to don't save a value in some cases. Just leaving "Select" selected.
 
Is this a dbjoin or a dropdown?

So I assume the database is already pre-populated? i.e you are editing records not created in Fabrik?
 
So on the basis select = 0 and yes and no maybe value 1 and 2, what other values would you have?
 
I don't want any value saved if "Select" is selected. I have used value=0 for "Select", but "0" is saved in the case "Select" is used (eg. if no other selection is made). I use this element to filter my Fabrik list and saving "0" make no sense.
 
Okay, well I don't quite understand the filter bit but something like this should work using a form PHP plugin, onBeforeStore

Code:
$dropdown = '[B][COLOR=Red]listname___dropdown[/COLOR][/B]';

$findzero = $formModel->_formData[$dropdown];
if ($findzero[0] == '0') {
unset($formModel->_formData[$dropdown]);
}

Just replace the highlighted bit with your dropdown element.
 
Sorry, but it don't work, "0" is still saved in db. I have tested all options, but no one works. But I wonder if your suggested plugin is correct, it's for images (uploads).
Fabrik_form_plugins.jpg
 
OnBeforeStore as we want to change the date, (array), before we store the values.

Can you just put the following code in instead and post the results.

echo '<pre>'; print_r($formModel->_formData); exit


If it's really long then just put it into a text file and attach it. If the information is sensitive then PM me instead.

You will need to submit or edit a record for the information to appear.
 
Sorry, bad copy and paste, missed out the last semicolon!

Try again :)


echo '<pre>'; print_r($formModel->_formData); exit;
 
After testing a bit (always learning new things;)):
It's working with
Code:
...
if ($findzero[0] == '0') 
{ 
$formModel->updateFormData($dropdown, NULL, true); }
Process script onBeforeStore
 
@felixkat
code result:
Code:
Array
(
    [s25_fb_enheter___id] => 
    [s25_fb_enheter___enhet_namn] => aaa
    [s25_fb_enheter___enhet_lan] => Array
        (
            [0] => Blekinge
        )

    [s25_fb_enheter___enhet_typ] => Array
        (
            [0] => Länsdelssjukhus
        )

    [s25_fb_enheter___enhet_region] => Array
        (
            [0] => Sydöstra
        )

    [s25_fb_enheter___enhet_kommentar] => 
    [s25_fb_enheter___enhet_klinik] => 
    [s25_fb_enheter___enhet_sjukhusnamn] => 
    [s25_fb_enheter___enhet_pnr] => 
    [s25_fb_enheter___enhet_ort] => 
    [join] => Array
        (
            [51] => Array
                (
                    [s25_fb_enheter_31_repeat___ansv_ssk_namn] => Array
                        (
                            [0] => 
                        )

                    [s25_fb_enheter_31_repeat___ansv_ssk_tel] => Array
                        (
                            [0] => 
                        )

                    [s25_fb_enheter_31_repeat___ansv_ssk_epost] => Array
                        (
                            [0] => 
                        )

                    [s25_fb_enheter_31_repeat___id] => Array
                        (
                            [0] => 
                        )

                    [s25_fb_enheter_31_repeat___parent_id] => Array
                        (
                            [0] => 
                        )

                    [s25_fb_enheter_31_repeat___ansv_ssk_namn_raw] => Array
                        (
                            [0] => 
                        )

                    [s25_fb_enheter_31_repeat___ansv_ssk_tel_raw] => Array
                        (
                            [0] => 
                        )

                    [s25_fb_enheter_31_repeat___ansv_ssk_epost_raw] => Array
                        (
                            [0] => 
                        )

                    [s25_fb_enheter_31_repeat___id_raw] => Array
                        (
                            [0] => 
                        )

                    [s25_fb_enheter_31_repeat___parent_id_raw] => Array
                        (
                            [0] => 
                        )

                )

        )

    [s25_fb_enheter___rikshia_deltag] => Array
        (
            [0] => 0
        )

    [s25_fb_enheter___rikshia_lak] => 
    [s25_fb_enheter___rikshia_lak_epost] => 
    [s25_fb_enheter___scaar_deltag] => Array
        (
            [0] => 0
        )

    [s25_fb_enheter___scaar_lak] => 
    [s25_fb_enheter___scaar_lak_epost] => 
    [s25_fb_enheter___sephia_deltag] => Array
        (
            [0] => 0
        )

    [s25_fb_enheter___sephia_lak] => 
    [s25_fb_enheter___sephia_lak_epost] => 
    [s25_fb_enheter___hkir_deltag] => Array
        (
            [0] => 0
        )

    [s25_fb_enheter___hkir_lak] => 
    [s25_fb_enheter___hkir_lak_epost] => 
    [s25_fb_enheter___tavi_deltag] => Array
        (
            [0] => 0
        )

    [s25_fb_enheter___tavi_lak] => 
    [s25_fb_enheter___tavi_lak_epost] => 
    [listid] => 7
    [listref] => 7
    [rowid] => 0
    [Itemid] => 413
    [option] => com_fabrik
    [task] => form.process
    [isMambot] => 
    [formid] => 10
    [returntoform] => 0
    [fabrik_referrer] => http://localhost/mysite/index.php/sjukhusansvariga
    [fabrik_ajax] => 0
    [_packageId] => 0
    [980c50cea1dda08fc12f930dbcf8721b] => 1
    [format] => html
    [fabrik_repeat_group] => Array
        (
            [22] => 1
            [31] => 1
            [27] => 1
            [26] => 1
            [28] => 1
            [29] => 1
            [30] => 1
        )

    [submit] => Spara
    [view] => form
    [s25_fb_enheter___id_raw] => 
    [s25_fb_enheter___enhet_namn_raw] => aaa
    [s25_fb_enheter___enhet_lan_raw] => Array
        (
            [0] => Blekinge
        )

    [s25_fb_enheter___enhet_typ_raw] => Array
        (
            [0] => Länsdelssjukhus
        )

    [s25_fb_enheter___enhet_region_raw] => Array
        (
            [0] => Sydöstra
        )

    [s25_fb_enheter___enhet_kommentar_raw] => 
    [s25_fb_enheter___enhet_klinik_raw] => 
    [s25_fb_enheter___enhet_sjukhusnamn_raw] => 
    [s25_fb_enheter___enhet_pnr_raw] => 
    [s25_fb_enheter___enhet_ort_raw] => 
    [s25_fb_enheter___rikshia_deltag_raw] => Array
        (
            [0] => 0
        )

    [s25_fb_enheter___rikshia_lak_raw] => 
    [s25_fb_enheter___rikshia_lak_epost_raw] => 
    [s25_fb_enheter___scaar_deltag_raw] => Array
        (
            [0] => 0
        )

    [s25_fb_enheter___scaar_lak_raw] => 
    [s25_fb_enheter___scaar_lak_epost_raw] => 
    [s25_fb_enheter___sephia_deltag_raw] => Array
        (
            [0] => 0
        )

    [s25_fb_enheter___sephia_lak_raw] => 
    [s25_fb_enheter___sephia_lak_epost_raw] => 
    [s25_fb_enheter___hkir_deltag_raw] => Array
        (
            [0] => 0
        )

    [s25_fb_enheter___hkir_lak_raw] => 
    [s25_fb_enheter___hkir_lak_epost_raw] => 
    [s25_fb_enheter___tavi_deltag_raw] => Array
        (
            [0] => 0
        )

    [s25_fb_enheter___tavi_lak_raw] => 
    [s25_fb_enheter___tavi_lak_epost_raw] => 
)

@troester
I use this code (but with my list element), but the value is still saved to db, is my code correct?
Code:
$dropdown = '*mylistname___dropdown*';

$findzero = $formModel->_formData[$dropdown];
if ($findzero[0] == '0') { 
$formModel->updateFormData($dropdown, NULL, true); }
 
If
*mylistname___dropdown* is your full dropdown element name and the value of your "Please select" option is set to 0 and plugin is run afterImagesHaveBeenUploaded(onBeforeStore) it should do.

For debugging you can include
Code:
var_dump($findzero,$dropdown);exit;
if ($findzero[0] == '0') { 
 $formModel->updateFormData($dropdown, NULL, true);
to see if the plugin is run and with which values.
 
Sorry!

My mistake...
I only used elementname and not the "full name" dbtable___elementname.

After my change it works...
 
Hurray !!! :)

@Troester, I like the NULL technique I didn't think of that.

@mattsh, both Troester's method and mine are effectively doing the same thing, so both ways should work.

I would go with Troester's if it's working as it's the 'Fabrik way', opposed to mine being the PHP way.
 
We are in need of some funding.
More details.

Thank you.

Members online

No members online now.
Back
Top