При обновлении моей таблицы она работает нормально. но единственная проблема заключается в том, что я, похоже, не эхо-полях полей ввода. и показывая ошибку, неопределенный индекс. я не понимаю, я все испробовал. но он не будет эхом.
Например:
Неопределенный индекс: имя_файла в /Applications/XAMPP/xamppfiles/htdocs/finalproject/admin/records/activities_update.php в строке 80
У меня нет проблем с повторением эскиза. но другие переменные fam_name, fam_add, nochild, aid и т.д.... я не могу его получить. я надеюсь, вы понимаете, что я пытаюсь сказать
я попытался использовать $ _POST, $ _GET и строки, doesn; t work =\
нужна помощь, пытающаяся решить это в течение нескольких дней.
<?php
if(isset($_GET['success']) === true && empty($_GET['success']) === true){
echo ' Your details have been updated';
} else {
if (empty($_POST) === false && empty($errors) === true) {
$fam_data = array(
'fam_name' => $_POST['fam_name'],
'fam_add' => $_POST['fam_add'],
'nochild' => $_POST['nochild'],
'aid' => $_POST['aid'],
'date_visited' => $_POST['date_visited'],
'visited_since' => $_POST['visited_since'],
);
edit_family($fam_data);
header('Location: rec_act1.php?success');
exit();
//exit();
} else if (empty($errors) === false) {
echo output_errors($errors);
}
?>
<div id="insert_form">
<form name="update" action = "" method ="post">
<table border = "0" align = "center">
<tr>
<th colspan = "2"> </th>
</tr>
<tr>
<td><input type = "hidden" name = "id" maxlength = "9" value="<?php echo $id = $_GET['id'];?>"></td> Editing: <?php echo $id = $_GET['id'];?>
</tr>
<tr>
<td>Family Name: </td>
<td><input type = "text" name = "fam_name" maxlength = "9" value="<?php echo $_POST['fam_name']; ?>"></td>
</tr>
<tr>
<td>No. Of Family: </td>
<td><input type = "text" name = "nochild" maxlength = "30" value="<?php echo $row['nochild'];?>"></td>
</tr>
<tr>
<td>Family Address: </td>
<td><input type = "text" name = "fam_add" maxlength = "30" value="<?php echo $row['fam_add'];?>"></td>
</tr>
<tr>
<td>Types of Aid received: </td>
<td><input type = "float" name = "aid" step = 'any' min = 1 max = 99999999 value="<?php echo $row['aid'];?>"></td>
</tr>
<tr>
<td>Date Visited</td>
<td><input type = "date" name = "date_visited" value="<?php echo $row['date_visited'];?>"></td>
</tr>
<tr>
<td>Visited Since </td>
<td><input type = "date" name = "visited_since" value="<?php echo $row['visited_since'];?>"></td>
</tr>
<td><input type ="submit" name = "submit" value = "Update"></td></table>
</form></div><? } ?>
Не перекликайтесь с переменными $_POST
напрямую, это позволяет использовать атаки XSS, всегда санировать в первую очередь. Я также замечаю в вашем коде, что вы $fam_data
массив $fam_data
и перенаправляете непосредственно после этого, не создавая $_SESSION
поэтому массив будет потерян, если ваша функция edit_family не начнет сеанс. Мне кажется, что вы не получаете переменную $_POST['fam_name']
из формы или она теряется при обновлении страницы.
Попробуйте добавить...
//start session before any output to browser
session_start();
if (isset($_POST['fam_name'])) {
//only process the request if expected values are found
if (ctype_alpha($_POST['fam_name'])) {
$_SESSION['fam_name'] = $_POST['fam_name'];
}
} else {
//this alert will let you know if the value was empty
echo "no family name received";
exit;
}
Затем в форме ввода введите...
value="<?php echo $_SESSION['fam_name']; ?>">
Угадайте здесь, когда неясно, где вы используете эхо, но я предполагаю, что данные теряются после перенаправления заголовка, поскольку информация, безусловно, не будет доступна в rec_act1.php. Попробуйте переписать сценарий, чтобы он не перенаправлялся, или, если необходимо, передавать данные в сеансе.
Для получения данных в $_GET
вам необходимо отправить все ваши переменные в строку запроса, например
if (empty($_POST) === false && empty($errors) === true) {
$fam_name = $_POST['fam_name'];
// set your all vars
<------rest of code ---->
header('Location: rec_act1.php?id=$id&fam_name=$fam_name');
и получите строку запроса var в виде: -
value="<?php echo $_GET['id'];?>"
value="<?php echo $_GET['fam_name'];?>"
// and so on
$row
используемый в форме, не существует.
Перед формой вам нужно выбрать текущие данные из таблицы, чем сохранить эти данные в $row
.
$row = $mysqli->fetch_assoc($mysqli->query($conn, "SELECT ...")); // select family data
Конечно, в $ mysqli есть экземпляр MySQLi.
Из-за обновления строки я ожидаю, что у вас есть данные в вашей базе данных. Если вы не знаете и не хотите видеть undefined index
уведомления, в значениях формы должен быть isset
, например.
value="<? echo isset($row['fam_name']) ? $row['fam_name'] : ''; ?>"