MySQL数据库项目不会更新。 PHP不会输入if($ _ POST ['edit_submit'])

时间:2019-01-27 19:00:23

标签: php html mysql database phpmyadmin

我正在尝试使用任务的新值更新任务页面。我的表单如下:

<?php if (isset($_GET['edit_task'])): ?>
    <form action="" method="POST" class="form-inline">
        <td class="task">
            <div class="form-group mr-sm-3 mb-2 inputfield">
                <input type="text" name="taskvalue" class="form-control col-12" value="<?php echo $row['task'] ?>">
            </div>
        </td>
        <td class="date">
            <div class="form-group mr-sm-3 mb-2 inputfield">
                <input type="date" name="datevalue" class="form-control col-12" value="<?php echo $row['duedate'] ?>">
            </div>                                    
        </td>
        <td class="edit" style="font-size: 0.8rem;">
            <button type="submit" name="edit_submit" class="btn btn-primary mb-2">Edit</button>
            <input type="hidden" name="id" value="<?=$row['id']?>">
        </td>
    </form>
<?php else: ?>
    <td class="task">
        <?php echo $row['task'] ?>
    </td>
    <td class="date">
        <?php echo $row['duedate'] ?>
    </td>
    <td class="delete edit move" style="font-size: 0.8rem;">
        <a href="index.php?move_task=<?php echo $row ['id']; ?>"><i class="fas fa-check-square fa-2x"></i></a>
        <a href="index.php?edit_task=<?php echo $row ['id']; ?>"><i class="fas fa-pen-square fa-2x"></i></a>
        <a href="index.php?del_task=<?php echo $row ['id']; ?>"><i class="fas fa-minus-square fa-2x"></i></a>
    </td>
<?php endif ?>

我用来更新值的PHP代码如下:

//edit items to database
if (isset($_GET['edit_task'])) {
    if (isset($_POST['edit_submit'])) {
        $id = $_POST['id'];
        $task = $_POST['taskvalue'];
        $rawdate = htmlentities($_POST['datevalue']);
        $insertdate = date("Y-m-d", strtotime($rawdate));

        if (empty($task)) {
            $message['type'] = "error";
            $message['text'] = "You must fill in a task first.";
        } else {
            mysqli_query($db, "UPDATE tasks (task, duedate) SET (task = '$task', duedate = $insertdate) WHERE id = $id");

            header('location: index.php');
        }
        $debuglog2 = "edit task working 2";
    }
    $debuglog1 = "edit task working 1";
}

您看到$debuglog1 = "edit task working 1";吗?当我按the update icon时,它会在我的页面中显示此内容。这样第一个if (isset($_GET['edit_task']))就可以了。当我按下the edit button之后,第二个调试日志$debuglog2不会显示在我的网站上,因此我认为它不会输入if (isset($_POST['edit_submit']))。这两个调试日志都在HTML的表外回显。按下上方的链接即可访问图标和按钮的图像。 HERE是一个概述我的问题的视频。

该应用程序还能够向数据库添加任务。这部分工作正常。我使用相同的表单来更新任务,但name属性不同,并且使用相同的PHP脚本来更新任务,除了该表单具有UPDATE Query并检查是否在开始时按下了编辑图标。

我尝试切换if,将input hidden id元素放入表单,我的按钮名为edit_submit,表单为POST。我不知道为什么它不会输入第二个if语句。我认为我的SQL查询是正确的,即使它甚至都不会在同一层次结构中显示调试日志。我尝试在$_GET$_POST之间进行更改,但没有任何变化。这是您可以在SQL中执行的最简单的操作之一,但是我无法使其正常工作。 YouTube和其他论坛上的帖子已经告诉我我键入的内容,所以我不知道出了什么问题。有人可以帮忙吗?预先感谢。

1 个答案:

答案 0 :(得分:-1)

发布表单后,$ _ GET变量将不包含任何内容。仅$ _POST将包含数据。因此,您对$ _GET的检查失败了,正是因为您已发布了一个表格。

日志文件(对于apache Web服务器而言)(在* nix环境中)通常位于名为/var/log/apache2/error.log和/ var / log / apache2 / access的文件中.log ...

您通常可以打开终端并输入以下内容:

sudo tail -f /var/log/apache2/error.log ...这将不断更新您的终端,并使用apache2累积的最新日志...这也会显示您的PHP错误,这会使您生活要轻松得多。