LondonMassive
LondonMassive

Reputation: 447

How to set the default value of a HTML <select> element with data from a database?

I am currently trying to set the default value of a element in HTML with data from an SQL database. I have loaded the values from the database into variables. This is what I have done so far:

<div class="form-group">
         Gender: <select class="form-control" name="gender" value="<?php echo $user['gender'] ?>">
         <option value="female">Female</option>
         <option value="male">Male</option>
         <option value="none" selected>Prefer not to say</option>
         </select>
</div>

However when I load the page, the default value is "Prefer not to say" when the value stored in $user['gender'] is "male".

Upvotes: 2

Views: 1509

Answers (1)

RiggsFolly
RiggsFolly

Reputation: 94642

You need to add the selected attribute to the option that matches what was in $user['gender']

<div class="form-group">
    Gender: 
    <select class="form-control" name="gender">
         <option value="female" <?php echo $user['gender'] == 'female' ? ' selected ' : '';?>>Female</option>
         <option value="male" <?php echo $user['gender'] == 'male' ? ' selected ' : '';?>>Male</option>
         <option value="none" <?php echo $user['gender'] == 'none' ? ' selected ' : '';?>>Prefer not to say</option>
         </select>
</div>

Which is a shorter way of saying

<div class="form-group">
     Gender: 
    <select class="form-control" name="gender">
        <?php
        if ($user['gender'] == 'female' ) {
        ?>
            <option value="female" selected>Female</option>
            <option value="male">Male</option>
            <option value="none">Prefer not to say</option>
        <?php
        }

        if ($user['gender'] == 'male' ) {
        ?>
            <option value="female">Female</option>
            <option value="male" selected>Male</option>
            <option value="none">Prefer not to say</option>
        <?php
        }

        if ($user['gender'] == 'none') {
        ?>
            <option value="female">Female</option>
            <option value="male">Male</option>
            <option value="none" selected>Prefer not to say</option>
        <?php
        }
        ?>

     </select>
</div>

Upvotes: 1

Related Questions