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

时间:2014-03-28 00:16:46

标签: php html 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); 
?>  

下拉值仍为默认值,未选中值且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>

感谢您的帮助

6 个答案:

答案 0 :(得分: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>

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

<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问题,<textarea>没有value属性。您需要将内容放在<textarea></textarea>标记之间:

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

答案 1 :(得分:2)

好的,我们假设有一个变量保存所选的值,我们将其命名为$selected,我们的选项选项将存储在$options中。

$selected = "Buddha" ;
$options  = array('Islam', 'Khatolik', 'Protestan', 'Hindu', 'Buddha', 'Lain-lain');

在edit.php文件中,您应该尝试通过php echo

创建select元素
<?php
    foreach($options as $option){
        if($selected == $option){
            echo "<option selected='selected' value='$option'>$option</option>" ;
        }else{
            echo "<option value='$option'>$option</option>" ;
        }
    }
?>

答案 2 :(得分:0)

您的textarea声明值已错误。 textarea没有价值标签。您需要为textarea添加的内容是这样的:

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

答案 3 :(得分:0)

您想要选择的选项需要在选项标记中包含“selected”属性。

伊斯兰教。

textarea的内容应该存在于开放/关闭内部,例如

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

答案 4 :(得分:0)

看起来你有几个问题: 如上所述,<textarea>标记不使用value属性,而是更改内部HTML,因此您拥有:

    <textarea>Text inside the text area is written here, like <?php echo $var; ?></textarea>

您的另一个问题是,您需要在标记内部选择一个默认选择的选项。所以:

    <select id="selector">
<?php
$optionArray=array("Option 1","Option 2","Option 3");
foreach ($optionArray as $option){?>
    <option id="<?= $option? >"<? if ($rows[$option]==$option){ echo " selected"; } ?>><?= $option ?></option>
<?}?>

应该这样做 - 这样,您可以将所有选项保存在一个简单循环的数组中。 <?= ($var) ?>标签是相当于<?php echo ($var); ?>的php短标签,可以让事情变得更短。

答案 5 :(得分:0)

你可以试试这个...... textarea应该存在于开/关内部,例如

<textarea rows="5" cols="33" id="alamatkorban" name="alamatkorban" autofocus autocomplete="off"><?php echo @$row["alamatkorban"]; ?></textarea>