2

在我的更新表单中,我希望这些字段能够调用已存储的值。这在文本字段中非常简单,但对于我的下拉 (),我在 PHP 读取已存储的用户名时遇到了问题。这是我的查询和代码:

$sql = "SELECT users.user_id, users.name FROM users";
                $result = mysql_query($sql, $connection)
                or die ("Couldn't perform query $sql <br />".mysql_error());
                $row = mysql_fetch_array($result);?>

        <label>Designated Person:</label> <select name="name" id="name">

        <option value="<?php echo $row['user_id']?>" SELECTED><?php echo $row['name']?> - Current</option>

         <?php    
              while($row = mysql_fetch_array($result))
        { ?>                        <option value="<?php echo $row['user_id']; if (isset($_POST['user_id']));?>"><?php echo $row['fullname']?></option>
        <?php } ?>

结果显示所有用户(根据需要)并让我选择一个用户然后成功执行更改......但是“SELECTED”始终是我数据库中的第一个用户,而不是我活动时选择的用户加入 :( !!!

4

3 回答 3

1

嗯...我认为您的代码不完整。例如,最后一个选项有一个什么都不做的 if 语句......并且您不应该将 selected 放在同一个 select 元素中的两个不同选项上。

如果没有其他选项,则始终默认选择第一个选项,并且.... 对于 xhtml,请尝试使用 selected="selected" 而不是 SELECTED

此外,您正在尝试回显 $row['fullname'],但您的查询正在获取列 'name'

<?php
$sql = "SELECT users.user_id, users.name FROM users";
$result = mysql_query($sql, $connection) or die ("Couldn't perform query $sql <br/>".mysql_error());
$row = mysql_fetch_array($result);
?>

<label>Designated Person:</label> 

<select name="name" id="name">
    <option value="<?php echo $row['user_id']?>"><?php echo $row['name'] ?> - Current</option>
<?php    
while($row = mysql_fetch_array($result)){ ?>
   <option 
      value="<?php echo $row['user_id'] ?>"
      <?php echo (isset($_POST['name']) && $_POST['name'] == $row['user_id']) ? ' selected="selected"' : '');?>
><?php echo $row['name']?></option>
<?php } ?>
于 2010-03-18T23:38:17.780 回答
1

你现在做的是:

  • 选择第一个结果行并将其打印为带有 SELECTED 硬编码的选项;
  • 循环通过其余的结果行输出选项;您没有在任何地方检查当前选择的值,但您有一个空的 if() 没有任何目的;
  • 我看不到保存当前存储名称的任何地方。

试试这个(假设$curname是当前选择的名称):

$sql = "SELECT users.user_id, users.name FROM users";
        $result = mysql_query($sql, $connection)
        or die ("Couldn't perform query $sql <br />".mysql_error());
?>

<label for="name">Designated Person:</label>
    <select name="name" id="name">

 <?php    
      while($row = mysql_fetch_array($result))
{ ?>                        
    <option value="<?php echo $row['user_id'] ?>" <?php if ($curname == $row['name']) echo ' SELECTED'; ?>><?php echo $row['fullname']?></option>
<?php } ?>
于 2010-03-18T23:40:05.867 回答
0
            <?php
                $result = mysql_query("select (row) from (table)");
                while($row = mysql_fetch_row($result))
                {
                    echo '<option value='.$row[0].'>'.$row[1].'</option>';
                }
            ?>
于 2013-06-05T15:14:38.053 回答