是否可以使用具有下拉列表的表单更新数据库字段而不更改下拉字段的值

时间:2016-07-29 22:01:06

标签: php html

让我说我使用下拉列表将数据输入到mysql数据库中:

<div>
  <input name="name" type="text" id="name" placeholder="Enter Name"></div>
<div>
  <select name="position" id="position" type="text">
    <option selected="selected">Select</option>
    <option value="A">A</option>                        
    <option value="B">B</option>
    <option value="C">C</option>
  </select>
</div>

使用普通的文本字段,我可以简单地包含值字段,以便在表格中显示表格中最初输入的数据。并且当我提交表单时更改它,它会更新相关字段。

      
<div>
  <select name="position" id="position" type="text" value="<?php echo $row_position['Position']; ?>>
    <option selected="selected">Select</option>
    <option value="A">A</option>                        
    <option value="B">B</option>
    <option value="C">C</option>
  </select>
</div>

所以假设我不想更新与下拉相关的字段,我该怎么做?因为会发生什么,一旦我提交表单而没有从下拉列表中选择任何选项,它会从列表中选择第一个选项,即&#34;选择&#34;选项并使用它来更新数据库中的相关字段。

3 个答案:

答案 0 :(得分:1)

我建议至少采取两个步骤,使用户友好并实现目标:

首先,如果可用,请选择最初输入的选择:

<?php 
    $positions = Array("A", "B", "C");
?>
<div>
  <select name="position" id="position">
      <option value="-1">Select</option>
      <?php
      foreach($positions as $v) {
         $selected = ($row_position['Position']===$v) ? "selected" : "";
         echo "<option value='$v' $selected>$v</option>";
      }
      ?>
  </select>
</div>

在接收php脚本时检查您是否收到了有效选项,否则发送错误消息:

<?php
//other stuff...

if($_POST['position']>0) {
    // save that value
} else {
   // send error to user
}
// even more stuff..
?>

备注:在select标签中,没有type=textvalue=anything可用。

答案 1 :(得分:1)

假设您从数据库中获取下拉选项。

注意 :数组键,变量仅用于演示目的。这可能与您的实际记录不同。

<div>
  <select name="position" id="position">
    <?php foreach($options as $option): ?>
    <option value="<?= $option['position'] ?>" <?php if($option['position'] == $current_record['position']) { echo "selected"; }  ?>> <!-- e.g. $option['id'] -->
      <?= $option['name'] ?>
    </option>                        
    <? endforeach; ?>
  </select>
</div>

答案 2 :(得分:0)

我所做的解决了这个问题的方法是简单地将数据库中的值添加到selectedoption或第一个选项字段。因此,默认情况下,不更改下拉列表,将选择具有数据库值的第一个选项。所以没有变化。

<div>
<div><?php echo $row_position['Position']; ?></div>
  <select name="position" id="position">
    <option value="<?php echo $row_position['Position']; ?>Select to Change</option>
    <option value="A">A</option>                        
    <option value="B">B</option>
    <option value="C">C</option>
  </select>
</div>

这为问题提供了简单或直接的解决方案。 仍然会尝试其他建议,看看它是如何发挥作用的。谢谢你们。