Grabbing all options from HTML select list - php

I need to create a php array from a very large HTML select list. I searched for "dropdown to array" generators and programs but can't find anything. Can someone please suggest a php code that I can use to grab all options from a HTML drop-down list and output an array of them?
update: php or js. Anything that will output an array which I can copy and paste in my script.

Include brackets in the select name; PHP will accept your selection as an array:
<?php print_r($_GET['cars']);?>
<form>
<select name="cars[]" multiple="multiple" size="5">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<input type="submit" />
</form>
Upon postback the print_r outputs (depending on selection):
Array ( [0] => saab [1] => mercedes )

If it's javascript:
document.getElementById(<!--the_id_of_the_select-->). Options and just treat it as an array that will create and append (document.createElement('input'), document.forms[0].appendChild(previous_item)) during the onsubmit stage of the forms process.
Alternatively in php:
When you do the loop for the option tags created in the select area, just do a second foreach and create a bunch of hidden elements somewhere else on the form.
Alternatively for both, instead of lots of hidden inputs (with a certain prefix), you could just create a single one that lists all the options in a csv format, or something similar

Related

Array change input like if A change to B for example

Question: so i have a form with arrays that sends data to excel but i need the time that they put in the form to be : and not . is there a way i can check the array like
if $time = 00.00 change to 00:00 like that, can I do that ?
if not is there a way to lock the format of the input form so it only accepts 00:00 and if they put 00.00 they will get something that says its wrong ?
Edit:
i have a list but if they doesent use it
<input list="start" name="start[]" value="" class="listbox" />
<datalist id="start">
<option value="08:00"/>
<option value="08:30"/>
</datalist>
You can use an HTML5 pattern to confirm the input meets your requirements.
pattern="^\d+:\d+$"
This requires the field has numbers to start with, a colon, and then ends with numbers. You also should have a validation server side incase someone bypasses the check, or is using an older browser.
if(!preg_match('/^\d+:\d+$/', $_POST['field'])) {
echo 'Invalid input';
}
Regex demo: https://regex101.com/r/xp8IzI/1
Another client side option would be using a select in place of the datalist and input, that won't allow them to enter altering times though.
<select name="start[]" class="listbox">
<option value="08:00">08:00</option>
<option value="08:30">08:30</option>
</select>

PHP - Store multiple select option into array and us the ID as array key

I have selectbox option list with multiple selection.
<select multiple="MULTIPLE" size="20" name="facilities[]">
<option id="idOne" value="Value One">Value One</option>
<option id="idTwo" value="Value Two">Value Two</option>
<option id="idThree" value="Value Three">Value Three</option>
</select>
I have done already the php code that can store the value into an Array on my database, but.. what I want now, is that possible to use the ID from the option as a key of the array, so when you storing the array will look like sample below
array('idOne'=>'Value One', 'idTwo'=>Value Two, 'idThree'=>'Value Three')
Instead of array([0]=>'Value One', [1]=>Value Two, [2]=>'Value Three') (that what I get now).
Any kind help will much appreciate :)
Sorry my English bad.
By definition, only the value of your option tags will be passed in your POST. There's a couple of options here
First, you would need to know the values on the other end and marry them up. This is more work potentially but you would always have a list of the values selected.
$vals = array('idOne'=>'Value One', 'idTwo'=>'Value Two', 'idThree'=>'Value Three');
foreach($vals as $key => $row) {
if(array_search($row, $_POST['facilities']) === false) unset($vals[$key]);
}
Second would be to use JavaScript and build a list of the text values that are selected and POST that (either via hidden field or using AJAX). This is riskier since the data would be in the client's hands but still doable.

Delete duplicates in dropdown list

I have hard coded and added items to dropdownlist ie teamsize as 1,2,3 like that.
When i load this dropdownlist for edit/update i get duplicate values like this
1
1
2
3
4... How do i eliminate this duplicate values?
please find the code below
<select name="anesthesia" id="selectAnesthesiaVal" style="width:25%;" class="required safe" AppendDataBoundItems = "false">
<option value="<?php echo isset($event)?$event->proc_anesthesia_type:"" ;?>"><?php echo isset($event)?$event->proc_anesthesia_type:"" ;?></option><option value="General">General</option>
<option value="Mac">Mac</option>
<option value="Spinal/Epidural">Spinal/Epidural</option>
<option value="Regional">Regional</option>
<option value="Local">Local</option>
<option value="Other">Other</option>
</select>
If you do not want to use jQuery for this then I would advise placing all of the possible values into an array and looping through them in PHP. Then if the value exists, only place it once.
In addition, if you would like to use jQuery and the PHP is not possible in your circumstances then let me know and I will post up some jQuery.
UPDATE
This will do the trick. I have clearly laid out comments to explain what is going on step by step. Hope this helps.
Please note that it would be much more efficient to do this in PHP
// Set the present object
var present = {};
$('#selectAnesthesiaVal option').each(function(){
// Get the text of the current option
var text = $(this).text();
// Test if the text is already present in the object
if(present[text]){
// If it is then remove it
$(this).remove();
}else{
// Otherwise, place it in the object
present[text] = true;
}
});
I suspect that line
<option value="<?php echo isset($event)?$event->proc_anesthesia_type:"" ;?>"><?php echo isset($event)?$event->proc_anesthesia_type:"" ;?></option>
add option which correspond to option choosen from select control, i e on first load you see coded list as this line returns empty option, but when you choose actual option this first one gets populated with choosen value
in this case you need to do 2 things
1 remove this line
2 add conditions to each line of hardcoded option and set it to select depending on the value of $event->proc_anesthesia_type
and because of 2nd tank you will end up with 6 almost identical conditional statements putting selected='selected' to each option
so in order to make the overall code looks pretty i recomend instead of hardcodding options add values to list or even better dictionary and check this condition in a loop

How do to I send my select box value to javascript

I have a random amount of select boxes generated by javascript, all containing the same options. Now I wish to have a "master-selectbox" which sets the value for each and every one of them.
Currently I have <select id="changeKlas" onChange="javascript:changeClass(this.parentNode, getElementById(changeKlas))">
At the javascript I've gotten as far as to find each and every select box and I already know how to set the value but the value is not being send to javascript.
On each attempt I have made the getElementById(changeKlas) is null. How can I fix this so I can get the text and value of the selected textbox in the given select?
Try this.
<select id="changeKlas" onChange="changeClass(this)">
And in your JavaScript, this will be transformed to document.getElementById(changeKlas)
You need to quote the id: [...], document.getElementById('changeKlas') -- notice the single quote, double quote needs to be escaped because of the outer one from onChange. Also, notice that getElementById belongs to document
<select id="changeKlas" onChange="changeClass();">
<option value="red">Red</option>
<option value="blue">Blue</option>
<option value="green">Green</option>
<option value="black">Black</option>
</select>
<script>
function changeClass()
{
var changeKlas = document.getElementById('changeKlas').value;
alert(changeKlas);
}
</script>
// On change It will alert the SELECTED VALUE

php get selected option

I am processing files that contain HTML markup.
I need to get the selected option from the drop down box. In this case Australia is the selected option ..
<select name="cCountry" id="cCountry" style="width:200" tabindex="5">
<option value="251">Ascension Island</option>
<option selected="selected" value="14">Australia</option>
<option value="13">Austria</option>
Another scenario :
<select name="cBirthYearM" id="cBirthYearM">
<option value="1974">1974</option>
<option value="1975">1975</option>
<option value="1976">1976</option>
<option selected="selected" value="1977">1977</option>
<option value="1978">1978</option>
<option value="1979">1979</option>
In this case '1977" is the value that I need to extract as it's the selected option .
To make it clear I need to get the value from the markup not from user GET/POST input
The value specified in the value part of the option will be in $_GET ['cCountry'] or $_POST ['cCountry'] (depending if you're using GET or POST to submit the form).
It should be simple matter to look up the value from a lookup table or DB query.
EDIT: This question didn't make it clear if you meant how to get the value the user selected when the form is submitted, or how to get the value from the markup. If it's the latter, then you should look at DOMDocument.
If you wish to parse HTML in PHP then the preferred method is the DOM hierarchy of objects, especially DOMDocument. You can use Javascript-like methods of accessing the DOM tree such as getElementById to grab the select control (in this case getElementById ('cCountry')) and then examine its children (the options) to find the selected one and get its attributes.
It can take a little getting used to using the DOM objects but they're far more powerful for parsing and manipulating HTML than regex would be, so they're well worth learning.
http://php.net/manual/en/book.dom.php
http://php.net/manual/en/class.domdocument.php

Categories