简体   繁体   中英

Choose correct Select option from MySQL Database

I have this HTML/PHP Code that lists options in a select element.

Whats the best way to make the correct option selected based on a record from a MySQL database:

This works fine, but is there any easier way to do it with one line of code rather than doing an if statement per option?

<select name="status" id="status">
            <option value="Open"<?php if($ticket["status"]=="Open"){echo('selected="selected"');}?>>Open</option>
            <option value="Needs Action"<?php if($ticket["status"]=="Needs Action"){echo('selected="selected"');}?>>Needs Action</option>
            <option value="Customer Reply"<?php if($ticket["status"]=="Customer Reply"){echo('selected="selected"');}?>>Customer Reply</option>
            <option value="Completed"<?php if($ticket["status"]=="Completed"){echo('selected="selected"');}?>>Completed</option>
          </select>

use an array:

echo "<select name='status' id='status'>";
$statuses = array('Open', 'Needs Action', 'Customer Reply', 'Completed');
foreach ($statuses as $status) {
    echo "<option value='$status' " . ($ticket['status'] == $status) ? "selected='selected'" : "" . "/>";
}
echo "</select>";

您可能需要将这些值放入数据库中,或者如果要使用它,只需将它们放入数组中并使用循环打印所有选项,然后将其标记为正确的选项即可。

Yes, the code can be shorter (and much more readable):

if($ticket["status"]=="Open") {
    $openSelected = "selected='selected'";
}
if($ticket["status"]=="Needs Action") {
    $needsActionSelected = "selected='selected'";
}
if($ticket["status"]=="Customer Reply") {
    $customerReplySelected = "selected='selected'";
}
if($ticket["status"]=="Completed") {
    $completedSelected = "selected='selected'";
}

<select name="status" id="status">
            <option value="Open" <?php print($openSelected) ?>>Open</option>
            <option value="Needs Action"<?php print($needsActionSelected) ?>>Needs Action</option>
            <option value="Customer Reply"<?php print($customerReplySelected) ?>>Customer Reply</option>
            <option value="Completed"<?php print($completedSelected) ?>>Completed</option>
          </select>

EDIT// @Barmar has a better answer.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM