PHP MySQL 编辑表单选择下拉列表预设选项

3

我当然已经浏览过,但似乎无法得到这个看似简单的答案!

我有一个表单,可以更新记录,也可以通过点击我创建的编辑按钮进行编辑。当我点击进行编辑时,显然希望默认选择当前设置。通过 $_GET 变量,我已经填充了文本输入框中来自数据库的正确值。

然而,我有三个下拉列表,我无法让它们选择正确的值和名称。

例如,我的表单有一个下拉列表,其中包含来自查询的所有用户:

SELECT
    users.id AS 'Users ID',
    users.first_name AS 'User First Name',
    users.last_name AS 'User Last Name'
FROM users
ORDER BY users.first_name;

使用以下代码可以正确地按名称显示用户列表,并将值作为ID发送到数据库

<div class="form-group">
    <label>Choose User</label><br />
    <select name="userid">
    <?php
        while($usersrow = $usersresult->fetch_assoc()) {
        //Display Customer Info
        $output = '<option value="'.$usersrow['User ID'].'">'.$usersrow['User First Name'].' '.$usersrow['User Last Name'].'</option>';

        //Echo output
        echo $output;                   
        }
    ?>
    </select>
</div>

在这个情况下,有人知道我如何进入我的编辑字段并使我的下拉菜单预选,其中值保留用户ID吗?我已经尝试了很多不同的方法,包括与三元if连接和其他$ _GET变量的串联$id(用于用户ID)和$name(用于用户名),但都没有成功。

感谢任何帮助!

编辑

简单来说...我正在尝试根据与下拉选项中的值匹配的$id $_GET变量预先选择我的下拉菜单。

谢谢


根据需要添加一个 selected 属性... - Marc B
5个回答

1
    <option value="<?php echo $row['softcode']; ?>"
     <?php if ($rows['office_type'] == $row['softcode']): ?>  
        selected="selected" 
     <?php endif ?>>
    <?php echo $row['description']; ?>
    </option>

1

为与正在编辑的userId匹配的选项设置selected属性:

<div class="form-group">
    <label>Choose User</label><br />
    <select name="userid">
    <?php
        while($usersrow = $usersresult->fetch_assoc()) {
        //Display Customer Info
        if($usersrow['User ID'] == $_GET['userid']){
          $selected = "selected";
        }else{
          $selected = "";
        }
        $output = '<option value="'.$usersrow['User ID'].'" '.$selected.'>'.$usersrow['User First Name'].' '.$usersrow['User Last Name'].'</option>';

        //Echo output
        echo $output;                   
        }
    ?>
    </select>
</div>

我发现这个最适合我的需求...只需要一个小改变(但那只是一个$_GET变量的更改,你从我的代码中看不到!),所以这个非常好用。谢谢。 - Ridge Robinson

1
你可以尝试这个...
<select name= "USER LIST">
  <option value="">Choose user </option>
  <option value="User1"<?php if($record['User ID']== 'User1'){ echo 'selected'; }?>>USER 1</option>
                       <option value="User2"<?php if($record['User ID']== 'User1'){ echo 'selected'; }?>>USER 2</option>
 </select>

0

尝试类似这样的代码:

       if ($usersrow['id']==$_GET['id']) {
             $selected = "selected";
       } else {
             $selected = "";
       }
       $output = '<option '.$selected.' value="'.$usersrow['User ID'].'" >'.$usersrow['User  First Name'].' '.$usersrow['User Last Name'];

    $output.='</option>';

或者... $usersrow ['id'] == $ _GET ['id']? $selected = " selected ":$selected=" "; - mlattari
感谢您的评论...@Evis 提供了完整的代码,更容易融入我的代码中,所以我选择了他的答案。但是您的逻辑也很好,非常感谢您。 - Ridge Robinson

0

看一下这个:

<?php
    while($usersrow = $usersresult->fetch_assoc()) {
    //Display Customer Info
    $output = '<option value="'.$usersrow['User ID'].'"'. $usersrow['User ID']== $_GET['id'] ? "selected" : "" . '" >'.$usersrow['User First Name'].' '.$usersrow['User Last Name'].'</option>';

    //Echo output
    echo $output;                   
    }
?>

这是一个神奇的部分,用于判断$_GET['id']是否与$userrow['id']匹配,如果匹配则输出“selected”,否则不输出任何内容:

$usersrow['User ID']== $_GET['id'] ? "selected" : ""

我首先尝试了这个......但我的选择选项都是空的。我不确定为什么会发生这种情况,因为我确保变量是正确的,但这背后的逻辑很好,实际上与我的努力非常相似......但两者都没有完全按计划工作。 - Ridge Robinson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接