PHP & MySQL - 如何在下拉菜单中显示选定的值

标签 php html mysql select textarea

我制作了 edit.php,以 MySQL 的形式显示所有数据。
所有数据都正确显示在表单上,​​但不适用于下拉列表和文本区域。

我需要帮助,这是我的代码

<form method="post" action="editdata.php">
<?php 
  include 'config.php';
  $id = $_GET['id'];
  $sqlTampil = "select * from data_korban Where kasus_id=$id"; 
  $qryTampil = mysql_query($sqlTampil); 
  $dataTampil = mysql_fetch_array($qryTampil); 
?>  

下拉值仍为默认值,未选择值且 TextArea 为空白

<select name="agama" id="agama" value="<?php    echo $rows -> agama;?>">
    <option value="Islam">Islam</option>
    <option value="Khatolik">Khatolik</option>
    <option value="Protestan">Protestan</option>
    <option value="Hindu">Hindu</option>
    <option value="Buddha">Buddha</option>
    <option value="Lain-Lain">Lain-Lain</option>
</select>

<textarea id="alamatkorban" rows="5" name="alamatkorban" 
          value="<?php echo $rows -> alamatkorban;?>" 
          cols="33">
</textarea>

谢谢你的帮助

最佳答案

您最大的问题是您访问数据库值的方式不正确。 mysql_fetch_array()不返回对象。它返回一个数组。所以你使用数组语法 ( $rows['key'] ) 而不是对象语法 ( $rows->key )。

只需检查选项值是否与 $rows['agama'] 的值匹配.如果是这样,请添加 selected属性。

<select name="agama" id="agama">
    <option value="Islam"<?php if ($rows['agama'] === 'Islam') echo ' selected="selected"'>Islam</option>
    <option value="Khatolik"<?php if ($rows['agama'] === 'Khatolik') echo ' selected="selected"'>Khatolik</option>
    <option value="Protestan"<?php if ($rows['agama'] === 'Protestan') echo ' selected="selected"'>Protestan</option>
    <option value="Hindu"<?php if ($rows['agama'] === 'Hindu') echo ' selected="selected"'>Hindu</option>
    <option value="Buddha"<?php if ($rows['agama'] === 'Buddha') echo ' selected="selected"'>Buddha</option>
    <option value="Lain-Lain"<?php if ($rows['agama'] === 'Lain-Lain') echo ' selected="selected"'>Lain-Lain</option>
</select>

更好的方法是将所有选项放在一个数组中并循环遍历它们以生成您的选项。然后您可以在遍历它们时检查它们的值。这将减少代码并更易于维护。

<select name="agama" id="agama">
<?php
$agamas = array('Islam', 'Khatolik', 'Protestan', 'Hindu', 'Buddha', 'Lain-Lain');
foreach ($agamas as $agama) {
      $selected = ($rows['agama'] === $agama) ? ' selected="selected"' : '';
?>
    <option value="Islam"<?php echo $selected; ?>>Islam</option>
<?php
}
?>
</select>

要解决您的文本区域问题,<textarea>没有 value属性。您需要将内容放在 <textarea></textarea> 之间标签:

<textarea id="alamatkorban" rows="5" name="alamatkorban" cols="33"><?php echo $rows['alamatkorban'] ;?></textarea>

关于PHP & MySQL - 如何在下拉菜单中显示选定的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22701850/

相关文章:

html - flex 元素之间的相等空间

php - 想要阻止用户在表单中输入无效的电子邮件地址

php - 执行 php 脚本时 'asdf' 中的未知列 'where clause'

php - 查询在正确执行时不获取数据

php - 响应引导 css php 错误

mysql - SQL查询查询某月员工积分总是小于75

html - 将我的 CSS 与内置的 Bootstrap CSS 冲突

javascript - 有人知道为什么我的 transform scale css 不工作吗?

MySQL Update Join 不影响所有匹配的行

c++ - 找不到 mysql.h 文件