首页 > 解决方案 > 错误:- 未定义的变量:原始而在 2 页之间传输数据

问题描述

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>

编辑.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 中的原始变量

标签: phphtmlmysqlwamp

解决方案


当您仅在块中定义变量时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'].


推荐阅读