I’m trying to get a dropdown menu to default to a certain value depending on an employee number, I have managed to get it to say it but it’s not the right option as the options are pulled in from on MS SQL server, so it just created 2 options for ‘Labour’ for example, there’s the one from SQL which works but then one that’s created as it’s a default option but then it doesn’t let me post the form properly.
elseif ($_SESSION['employeeNo'] == '330'){ echo "<option selected>Labour</option>"; while ($costrow = sqlsrv_fetch_array($coststmt, SQLSRV_FETCH_ASSOC)) { $costOption = $costrow["Cost_Centres"]; $costArea = $costrow["Area"]; echo "<option value='" . $costOption . " (" . $costArea . ")'> $costOption </option>"; } }
Labour 2 is from the SQL server, which is the one I need it to default to so that I can use it to write back to the database. Otherwise, it thinks that that drop down is not set.
All help is appreciated cheers.
Advertisement
Answer
Just output selected="selected"
for the default option.
I removed the useless concatenations for clarity, and used $selected
as a variable to separate concerns. Of course you may want to organize the code differently, and change the test $costOption == 'Labour'
.
elseif ($_SESSION['employeeNo'] == '330') { while ($costrow = sqlsrv_fetch_array($coststmt, SQLSRV_FETCH_ASSOC)) { $costOption = $costrow["Cost_Centres"]; $costArea = $costrow["Area"]; $selected = ($costOption == 'Labour') ? 'selected="selected"' : ''; echo "<option value='$costOption ($costArea)' $selected> $costOption </option>"; } }
If you never encountered it, (condition) ? X : Y
is the ternary operator. If condition
is true, X
is chosen, otherwise Y
is chosen.