echo不起作用,但表已成功更新

时间:2015-01-06 06:37:49

标签: php echo undefined-index

更新我的表时,它工作正常。但唯一的问题是我似乎无法回应输入中的字段。 并显示错误,未定义的索引。我没有得到它,我尝试了一切。但它不会回响。

例如:

未定义的索引:第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><? } ?>

4 个答案:

答案 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']; ?>">