Я делаю 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>
Хорошо давайте предположим, что есть переменная, которая содержит выбранное значение, и мы называем его $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>" ; } } ?>
опция, которую вы хотите выбрать, должна иметь свойство «selected» в теге option.
Ислам.
Содержимое текстового поля должно существовать внутри открытого / закрытого, например
<textarea id="alamatkorban" rows="5" name="alamatkorban" cols="33"><?php echo $rows -> alamatkorban;?></textarea>
Вы неправильно textarea
значение вашего textarea
. Для textarea
нет textarea
. То, что вам нужно добавить в textarea
выглядит следующим образом:
<textarea id="alamatkorban" rows="5" name="alamatkorban" cols="33"><?php echo $rows -> alamatkorban; ?></textarea>
Похоже, у вас проблемы с <textarea>
Как уже упоминалось, теги <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); ?>
<?php echo ($var); ?>
чтобы вещи были немного короче.
Вы можете попробовать это … textarea должно существовать внутри открытого / закрытого, например
<textarea rows="5" cols="33" id="alamatkorban" name="alamatkorban" autofocus autocomplete="off"><?php echo @$row["alamatkorban"]; ?></textarea>