I have the following multi-select box in a HTML form, where user can select one or more option.
<select id="eng_0" name="eng_0[]" multiple size="3">
<option value="Privilégier">Privilégier</option>
<option value="Accepté">Accepté</option>
<option value="Temporaire">Temporaire</option>
</select>
When the user selects no option, the form is POSTed to a PHP backend but it creates no empty array value for $_POST['eng_0'] as if the field was not even on the form.
This is kind of like the unchecked checkbox that is not submitted problem.
Is there any way to have it POST the select object even if there is no selected option? It can be in jQuery if that helps.
If your form is generated dynamically, you could include a hidden form element with the same name that contains a dummy value. Then, just ignore the dummy value, if the value you get for that variable is ['dummy_value']
then you can treat that as meaning "nothing selected" in your code.
If you add a hidden input before the multiple select element, it will send the hidden input value if none of the multiple select items have been selected. As soon as you select an option though, that selected value is used instead.
This way I was able to distinguish 2 different scenarios in Laravel/php, being:
myitems
to empty (requiring the hidden input, so PHP receives an empty string for myitems
)myitems
(so excluding any myitems
input form the form. PHP will not receive the myitems
key)Sample code:
<input type="hidden" name="myitems" value="" />
<select name="myitems[]" multiple>
<option value="1">Foo</option>
<option value="2">Bar</option>
</select>
Is there a reason you can't treat the situation where the array isn't set as if it was sent with no contents?
if (!isset($_POST['eng_0']))
$_POST['eng_0'] = array();
EDIT:
Add a hidden field whenever the multiple select is present in your form:
<input type="hidden" name="eng_0_exists" value="1"/>
Then check:
if (!isset($_POST['eng_0']) && isset($_POST['eng_0_exists']))
$_POST['eng_0'] = array();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With