PHP和MySQL - 如何在下拉菜单中显示所选值

1 html php mysql select textarea

我创建edit.php,显示来自MySQL的所有形式的数据.
所有数据都在表单上正确显示,但它不适用于下拉列表和textarea.

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

<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); 
?>  
Run Code Online (Sandbox Code Playgroud)

下拉值仍然是默认值,而不是选定值,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>
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

Joh*_*nde 7

您最大的问题是您正在错误地访问数据库值.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>
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

要修复textarea问题,<textarea>没有value属性.您需要将内容放在<textarea></textarea>标记之间:

<textarea id="alamatkorban" rows="5" name="alamatkorban" cols="33"><?php echo $rows['alamatkorban'] ;?></textarea>
Run Code Online (Sandbox Code Playgroud)