PHP selectfield 从数据库中获取值,更改 POST

PHP selectfield get value from database, change and POST

我是 PHP 的初学者并且有一些不错的问题 ^^

想从数据库的“已禁用”字段中选取数据并使用该值更新选择字段。

选择字段有 2 个可能的选项“是”和“否”(值 0 或 1)。 现在我终于想 post 将选定或未更改的值返回到数据库。

这里所有的值包括 disabled 被 MYSQL SELECT query

加载到 $row
 $mydb->query('SELECT a.* ...
 $row = $mydb->fetchRow();

这里是写入数据库的工作查询/table(在其他领域测试过)。 disabled 是应该的字段 updated/overwritten:

$sql = "REPLACE INTO `api_tokens` (`id`, `disabled`) VALUES (
                ".$id.",
                ".(empty($_POST['disabled']) ? 0 : 1).")";

这里的表单应该有2个selectable选项,其中一个应该是从数据库加载的值,另一个应该是相反的值。 不清楚value/ares标有????

<div class="row">
    <label for="disabled">Deactivate</label>
    <select name="disabled" id="disabled">
        <option selected="<?=$row['disabled']?>"></option>
        <option value="????">No</option>
        <option value="????">Yes</option>
    </select>
                            
                     

试试这个。关键是检查每个条件的值。如果保存的选择是 'no' (0),则设置 select 属性。对 'yes' (1).

做同样的事情
<div class="row">
    <label for="disabled">Deactivate</label>
    <select name="disabled" id="disabled">
        <option value="0"<?php echo ($row['disabled'] == 0?' selected':''); ?>>No</option>
        <option value="1"<?php echo ($row['disabled'] == 1?' selected':''); ?>>Yes</option>
    </select>

更新

我从你的评论中看出你想要进一步的说明。事情是这样的:

  1. 每个 <option> 元素将指定一个 value 属性作为它所属的 <select> 元素的一个可能选择。做出选择后,将设置 <option> 元素的 selected 属性。 (从技术上讲,<select> 元素上有 multiple 属性,但我们现在不讨论它。)
  2. 当您的用户提交表单时,他们的选择(选项值)通过将它们存储在数据库中而持久化。在此示例中,这将是 either 1 是或 0 否。
  3. 如果您想向用户显示他们表单所在的最后状态,您必须从数据库中读回他们的选择。您现在必须在他们之前选择的 <option> 元素上设置 select 属性。在他们的屏幕上,他们选择的选项现在在 <select> 列表中突出显示。

您可以在 $row['disabled'] 中找到他们提交的选择,其中 'disabled' 键等于 <select> 元素的 name 属性。要在右侧(先前选择的)<option> 元素上设置 select 属性,请检查 $row['disabled'] 与每个 <option> 元素的值。他们平等吗?那么这是他们最后选择的选项,所以现在突出显示它并在这个特定的 <option> 元素上设置 selected 属性。