Delete duplicates in dropdown list - php

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

Related

HTML Dropdown Default value not setting

I have a Dropdown that consists of two options. When I select an option the page reloads and using GET method I find out which value is selected. Then I try to make sure that the dropdown has the previously selected value and this is where things go wrong.
<?php echo $Status; ?> <!-- the value passed in the URL(stored in the variable Status) gets correctly printed here -->
<select class="btn btn-primary" required name="Status" style="float:right" onchange="location = this.value">
<option value="">Select Status</option>
<option value="?pageno=1&Status='Active'" <?php if($Status=='Active'){echo "selected";}?>>Active</option>
<option value="?pageno=1&Status='Not Active'" <?php if($Status=='Not Active'){echo "selected";}?>>Not Active</option>
</select>
The value gets printed correctly in the first line but for some reason, it isn't working in the options part. What am I doing wrong here? Can anyone clarify
The value of your URL parameter Status is either 'Active' or 'Not Active' - including those single quotes, they are part of the value that you are sending.
But what you are comparing it to, is just Active resp. Not Active:
if($Status=='Active')
The single quotes here are not part of the value that you are comparing $Status to - they are part of the PHP syntax. You would have to write something like
if($Status=="'Active'")
or
if($Status=='\'Active\'')
here, to properly compare the your variable with what it actually contains.
But that makes rather little sense to begin with - you should rather remove the single quotes from the parameter value you are sending.
<option value="?pageno=1&Status=Active"
<option value="?pageno=1&Status=Not+Active"
Note that I replaced the space with + here, to make this a properly URL encoded value.

echo <option> compiles wrong, and $_POST[''] doesn't return selected value

I populate my select from an array, in the loop I echo lines like this
echo "<option value='".$company->id."' selected>".$company->name."</option>";
when this compiles it compiles like this:
<option selected="" value="1">Company</option>
Also when I try to retrieve the value of <select name='companies'>
with line like this $_POST['companies'] I get nothing back.
Thanks
If your form method is post then you will get value with $_POST['companies']
If you are using selected for each option then please remove that because in that you will get value of always last option

Trying to Echo a value from a select drop down in PHP

I am in school for web development, so I clearly don't know a lot yet. I am trying to grab a value from a select, and output it in a paragraph. I know it's about the Browns, but everything else works, but I cannot seem to find anything on StackOverflow, or Google on how to grab the value that works. I get the following error:
Notice: Undefined variable: draft in C:\wamp\www\lab 5\process.php on line 42
This error is in my paragraph, which makes me think I am grabbing the value, but it isn't outputting correctly? I am using a variable to show where I want to output that value in the paragraph.
This is my HTML:
<li><select id="uDraft"
<select>
<option value="Draft Offense">Draft Offense</value>
<option value="Draft Defense">Draft Defense</value>
<option value="Trade them, we can't pick good anyways">Trade them, we can't pick good anyways</value>
</select></li>
This is my process.php code:
if(isset($_GET["uDraft"])){
$draft= $_GET["uDraft"];
}
echo "I want to output **$draft var** as the value they choose so it shows the choice in a paragraph that is pre-written";
All of my other text boxes work, I just cannot seem to get the value from the select, so that I can show what it says in the text, into the paragraph. I also had a select for wins, but gave up when I couldn't figure out how to grab the value. I know I can use radio buttons, but I am trying to learn how to grab the value from the drop down. Any help would be greatly appreciated.
You need to give your dropdown a name:
HTML:
<li>
<select name="uDraft">
<option value="Draft Offense">Draft Offense</option>
<option value="Draft Defense">Draft Defense</option>
<option value="Trade them, we can't pick good anyways">Trade them, we can't pick good anyways</option>
</select>
</li>
PHP:
if(isset($_GET["uDraft"])){
$draft= $_GET["uDraft"];
echo $draft;
}
1st you have simple html errors, closing the select tag early, no name on select and closing the options tags incorrectly. It should be:
<select id="uDraft" name="uDraft">
<option value="Draft Offense">Draft Offense</option>
<option value="Draft Defense">Draft Defense</option>
<option value="Trade them, we can't pick good anyways">Trade them, we can't pick good anyways</option>
</select>
Then in php, you need to handle the case when the page loads, so there is no get data:
if(isset($_GET["uDraft"])){
$draft= $_GET["uDraft"];
}else{
$draft = 'DEFAULT VALUE GOES HERE';
}
echo "I want to output **$draft var** as the value they choose so it shows";
This could be handled with a ternary if as well:
$draft = isset($_GET['uDraft'])? $_GET['uDraft'] : 'DEFAULT';

Getting multi Values from a dropdown list in PHP

This is my drop down list.
<p align="center"><select size="1" name="bo_chose" id="boID">
<option selected value="Select...">Select...</option>
<?php
while ($list_bo = mysql_fetch_array($select_brof)) {
echo "<option value=\"$list_bo[bo_name] $list_bo[bo_code]\">$list_bo[bo_code],$list_bo[bo_name]</option>"; }
?>
</select></p>
So the drop down will show first "select..."
and then will retrieve data andlist the bo_name, bo_code in <option>
It works well.
The problem is, I want to carry the value to another PHP page which will delete the
selected option in the drop down.
Of course the MySQL and PHP will complain that it does not exist ...why?
Its taking the new value $bo_chose (name of the dropdown list) as a new value
as (bo_name, bo_code) — as one value not as a split values.
So if the dropdown list is (george Mike GM)
the data will complain that there is no value called "George Mike GM"
when I want it to carry only "GM" which is the bo_code.
Can anyone help?
Just split the value with space as delimiter and pick the first value. May I know why do you
need to carry both name and id in first place.
You should just add $list_bo['bo_code'] as option value instead of both.
If I understand you correctly you have this select inside a POST form or you are sending it by ajax to the script you want to parse the value. Use a separator to merge these two variables. The separator should be a char that you are sure, it will never be in either of two variables. So, you can for example use ; for the separator and write $list_bo[bo_name].';'.$list_bo[bo_code]. In the recieving script you just explode the value by separator and you will get both values as array. If you are unsure which chars will be in both variables, you can either json_encode or serialize it before puting it into html.

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

Categories