错误:-未定义的变量:在2页之间传输数据时原始

时间:2019-01-20 12:11:30

标签: php html mysql wamp

manageleavetype.php 

下面的代码是我的第一个文件页面,我想将此页面表单内容重定向到下一个文件代码edit.php。我想从下一页更新数据。

<form action="" method="POST">
<tr>
<td><?php echo $type; ?></td>
<td><?php echo $des; ?></td>
<td><?php echo $time; ?></td>
<input type="hidden" name="hid" value="<?php echo $id; ?>">
<input type="hidden" name="htype" value="<?php echo $type; ?>">
<input type="hidden" name="hdes" value="<?php echo $des; ?>">
<td><input type="submit" name="del" value="DELETE">
<input type="submit" name="update" value="UPDATE">
</td></form></tr>

edit.php

除了上面文件中的代码之外,该文件还会更新接收到MySQL数据库中的数据

<?php

require 'config.php';

if (isset($_POST['update'])) {
    $eid = $_POST['hid'];
    $que = "SELECT * FROM leavetype WHERE id='$eid'";
    $exe = mysqli_query($conn, $que);
    $raw = mysqli_fetch_array($exe);
}

if (isset($_POST['update'])) {
    $nwtype = $_POST['ltype'];
    $nwdes = $_POST['ldes'];

    $que = "UPDATE leavetype SET leavetype='$nwtype',description='$nwdes' WHERE id='$eid'";
    $exe = mysqli_query($conn, $que);
    if ($exe) {
        header("location:manageleavetype.php");
    }
}

?>
<form method="POST">
<label>Leave Type</label>
<input type="text" name="ltype" value="<?php echo $raw['leavetype']; ?>">
<label>Description</label>
<input type="text" name="ldes" value="<?php echo $raw['description']; ?>">
<input type="submit" name="update" value="Update">

</form>

当我运行该程序时,出现以下错误:

  

注意:未定义的变量:第31行的C:\ wamp64 \ www \ eLeaveSystem \ edit.php中的原始数据

2 个答案:

答案 0 :(得分:1)

如果仅在if块中定义变量,则可能会遇到该错误。对于您而言,仅在发布$raw时定义update

if (isset($_POST['update'])) {
    $eid = $_POST['hid'];
    $que = "SELECT * FROM leavetype WHERE id='$eid'";
    $exe = mysqli_query($conn, $que);
    $raw = mysqli_fetch_array($exe);
}

但是您可以在HTML生成部分中无条件访问该变量,如下所示:

<input type="text" name="ltype" value="<?php echo $raw['leavetype']; ?>">

所以您有一些选择:

  1. 也将HTML生成部分放在这样的if块中。然后,您需要在代码中包含另一部分,以便在没有发布update时生成输出。

  2. 定义这些变量的默认值。例如$raw = ['leavetype' => 'something', 'description' => 'default description']

答案 1 :(得分:0)

您可以使用isset()函数来解决此问题,从而避免出现未定义的变量问题。

尝试以下方法:

<form method="POST">
    <label>Leave Type</label>
    <input type="text" name="ltype" value="<?php echo (isset($raw['leavetype']) ? $raw['leavetype'] : '');?>">
    <label>Description</label>
    <input type="text" name="ldes" value="<?php echo (isset($raw['description']) ? $raw['description'] : ''); ?>">
    <input type="submit" name="update" value="Update">
</form>
  

我认为应该同时为“更新”和“插入”显示表单块。