我正在尝试使用任务的新值更新任务页面。我的表单如下:
<?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和其他论坛上的帖子已经告诉我我键入的内容,所以我不知道出了什么问题。有人可以帮忙吗?预先感谢。
答案 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错误,这会使您生活要轻松得多。