При обновлении моей таблицы все работает нормально. но единственная проблема в том, что я не может повторить поля во входных данных.
и показывая ошибку, неопределенный индекс. Я не понимаю, я попробовал все. но это не будет эхом
Например:
Неопределенный индекс: имя_ фамилии в /Applications/XAMPP/xamppfiles/htdocs/finalproject/admin/records/activities_update.php в строке 80
у меня нет проблем в получении удостоверения личности. но другие переменные fam_name, fam_add, nochild, aid и так далее … я не могу получить его. я надеюсь, вы понимаете, что я пытаюсь сказать
я пытался использовать $ _POST, $ _GET и строки, не работает = \
Нужна помощь, пытаясь решить эту проблему в течение нескольких дней.
<?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><? } ?>
$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'] : ''; ?>"
Догадываюсь здесь, поскольку неясно, где вы используете echo, но я предполагаю, что данные теряются после перенаправления заголовка, так как информация наверняка не будет доступна в 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
Не эхом $_POST
непосредственно к переменным, это допускает возможность атак XSS, всегда сначала санируйте. Я также заметил в вашем коде, что вы создаете $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']; ?>">