更新我的表时,它工作正常。但唯一的问题是我似乎无法回应输入中的字段。 并显示错误,未定义的索引。我没有得到它,我尝试了一切。但它不会回响。
例如:
未定义的索引:第80行的/Applications/XAMPP/xamppfiles/htdocs/finalproject/admin/records/activities_update.php中的fam_name
我在回复ID方面没有问题。但其他变量fam_name,fam_add,nochild,aid等......我无法检索它。我希望你能理解我想说的话
我尝试使用$ _POST,$ _GET和rows,不工作= \
需要帮助一直试图解决这个问题。
<?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><? } ?>
答案 0 :(得分:0)
要获取$_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
答案 1 :(得分:0)
$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'] : ''; ?>"
答案 2 :(得分:0)
在这里猜测,因为它不清楚你在哪里使用echo,但是我猜测在重定向标题之后数据丢失了,因为rec_act1.php中肯定无法获得信息。 。尝试重写脚本以不重定向,或者如果必须,请在会话中传递数据。
答案 3 :(得分:0)
不要直接回显$_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']; ?>">