Yassine
Yassine

Reputation: 35

PHP Mysqli HTML How to have current value from database selected in <select>

my goal is get current value from database, selected in the dropdown list. I tried that code but it shows always "Ndone" in the dropdownlist

<select name="work" id="work" value="<?php echo $work; ?>">
     <option selected="selected" value=""></option>
     <option selected="selected" value="DONE">DONE</option>
     <option selected="selected" value="NDONE">NDONE</option>
</select>

Also this one and nothing just the first row that selected in the dropdownlist

<select name="work" id="work" value="<?php echo $work; ?>">
     <option value=""></option>
     <option value="DONE">DONE</option>
     <option value="NDONE">NDONE</option>
</select>

I don't know what to do, any help please

When i use a textfield it works, so there's no problem with the variable $work

<input type="text" name="work" value="<?php echo $work; ?>"/>

Upvotes: 0

Views: 759

Answers (2)

David Jones
David Jones

Reputation: 4305

As per your example you could do this:

You just need to check each option value against the $work variable and if it matches add the selected attribute.

<select name="work" id="work">
     <option value=""></option>
     <option value="DONE" <?php echo($work == 'DONE'?'selected="selected"':''); ?>>DONE</option>
     <option value="NDONE" <?php echo($work == 'NDONE'?'selected="selected"':''); ?>>NDONE</option>
</select>

Upvotes: 0

BreyndotEchse
BreyndotEchse

Reputation: 2230

<select> does not have a "value" Attribute. You must add the selected attribute to one option.

<?php
$options = array(
    '',
    'DONE',
    'NDONE',
);
?>

<select name="work" id="work">
    <?php foreach ($options as $option): ?>
        <option value="<?php echo $option ?>"<?php echo $option === $work ? ' selected="selected"' : '' ?>><?php echo $option ?></option>
    <?php endforeach ?>
</select>

Upvotes: 1

Related Questions