2017-09-02 72 views
0

我有一个有很多条目的表单,有很多选择从mysql的表中获取他们的数据,工作正常,我的表单将所有输入发送到$ _post就好了。问题出在选择部分。该页面从mysql表中加载信息,并填充除select字段外的所有字段。选择字段向用户显示文本名称,并将2位数字传递到帖子。问题是,当页面加载Post时,所有选择字段都会填充列表中第一个选择对象的值。所以,简而言之,所有(40)字段在我提交时会被覆盖。除非我经历所有的下拉菜单并将它们设置回原来的设置,否则它们都会改变,而不是理想的。我怎样才能在下拉列表中保留一个值

echo "<tr><form action='update.php' method='post'>"; 
    echo"<td><input type='hidden' name='id' value='".$row['id']."'></td>"; 
    echo"<td><input type='hidden' name='name' value='".$row['templatename']."'></td>"; 
    echo"<td><input type='text' name='keyname1' value='".$row['keyname1']."'><readonly</td>"; 
    echo"<td></select><select name='lk1'>"; 
    while($rowA = mysqli_fetch_assoc($result1)) { 
     echo '<option value="' . $rowA['keytype'] . '">' . $rowA['keyname'] . '</option>'; 
    } 
    echo"</select></td>"; 
    echo"<td><input type='text' name='lk1value' value='".$row['lk1value']."'></td>"; 
    echo"<td><input type='text' name='lk1label' value='".$row['lk1label']."'></td>"; 
    echo "<td><input type='submit'>"; 

感谢

回答

0

您可以通过使用selected="selected"属性标志着一个<select>列表作为启动/默认值的<option>元素。当你在while循环,并检查当前$row项是用户之前已经选择了一个,你可以生成输出如下:

while ($rowA = mysqli_fetch_assoc($result1)) { 
    if ($row['yourFieldInTheDatabase'] == $rowA['keytype']) { 
     echo '<option value="'.$rowA['keytype'].'" selected="selected">'.$rowA['keyname'].'</option>'; 
    } else { 
     echo '<option value="'.$rowA['keytype'].'">'.$rowA['keyname'].'</option>'; 
    } 
} 
+0

嗯,也许我是没有什么我需要明确的,尽管答案很接近。字段lk1中已经有数据。我需要显示这些数据。选择将已经从另一个页面填充蜜蜂。这个页面让用户可以“编辑”他们之前输入的内容。右侧未选中显示选项值中最后一个可能的可选值。 –

+0

@EdLentz这就是为什么只应根据数据库中的值为用户选择的行打印“selected =”selected“'的原因。你必须添加一个'if'语句来检查用户是否选择了当前选项。根据此检查,您输出的是否选择了“selected =”属性。 – Progman

+0

所以我会使用if语句来确定他们是否选择了该字段,如何显示页面加载时的原始条目。没有意思是密集的,有头冷,有点雾 –

相关问题