PHP и MySQL - как отобразить выбранное значение в раскрывающемся меню
Я делаю 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>
Благодарим вас за помощь
Ответы
Ответ 1
Самая большая проблема в том, что вы неправильно используете значения своей базы данных. 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>
Ответ 2
Хорошо, допустим, что существует переменная, которая содержит выбранное значение, и мы называем его $selected
, а опции для нашего выбора будут сохранены в $options
.
$selected = "Buddha" ;
$options = array('Islam', 'Khatolik', 'Protestan', 'Hindu', 'Buddha', 'Lain-lain');
В файле edit.php вы должны попробовать создать элемент select через php echo
<?php
foreach($options as $option){
if($selected == $option){
echo "<option selected='selected' value='$option'>$option</option>" ;
}else{
echo "<option value='$option'>$option</option>" ;
}
}
?>
Ответ 3
У вас было неправильное объявленное значение textarea
. Нет тега значения для textarea
. То, что вам нужно добавить в свой textarea
, выглядит следующим образом:
<textarea id="alamatkorban" rows="5" name="alamatkorban" cols="33"><?php echo $rows -> alamatkorban; ?></textarea>
Ответ 4
параметр, который вы хотите выбрать, должен иметь свойство "selected" в теге option.
Ислам.
Содержимое текстового поля должно существовать внутри открытого/закрытого, например.
<textarea id="alamatkorban" rows="5" name="alamatkorban" cols="33"><?php echo $rows -> alamatkorban;?></textarea>
Ответ 5
Похоже, у вас есть пара проблем:
Как уже упоминалось, теги <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, эквивалентные <?php echo ($var); ?>
, чтобы сделать вещи немного короче.
Ответ 6
Вы можете попробовать это... textarea должно существовать внутри открытого/закрытого, например.
<textarea rows="5" cols="33" id="alamatkorban" name="alamatkorban" autofocus autocomplete="off"><?php echo @$row["alamatkorban"]; ?></textarea>