每次我编辑一行时,它都会创建另一行

时间:2017-10-09 00:09:27

标签: php mysql sql mysqli edit

我正在创建一个简单的PHP和SQL待办事项列表应用程序。我的问题是,每次编辑一行时,它都会创建另一行而不是仅编辑现有行。以下是index.php中的一些代码:

<?php

$current_date = date("Y-m-d");

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

$task = isset($_POST['task']) ? $_POST['task'] : null;
$importance = isset($_POST['importance']) ? $_POST['importance'] : null;
$due_date = isset($_POST['due_date']) ? $_POST['due_date'] : null;
$order = isset($_POST['order']) ? $_POST['order'] : null;

if(isset($task,$importance,$due_date,$user_name)){
$sql = "INSERT INTO tasks (task, importance, due_date, user_name) VALUES ('$task', '$importance', '$due_date', '$user_name')";

$result = mysqli_query($connection, $sql) or die(mysqli_error($connection));

}

}

?>

<?php
while($column = mysqli_fetch_assoc($result)){
?>
<tr><td><?php echo $column["task"]?></td><td class="<?php echo $column["importance"] ?>"><?php echo $column["importance"]?></td><?php if($column["due_date"]<$current_date){echo '<td class="overdue">';}else{echo '<td class="not_overdue">';} ?><?php echo $column["due_date"]?></td><td><?php echo "<a href='edit.php?id=".base64_encode($column['task_id'])."'>Edit</a>" ?></td><td><?php echo "<a href='delete_one.php?id=".base64_encode($column['task_id'])."' onclick=\"return confirm('Are you sure?')\">Delete</a>" ?></td></tr>
<?php
}
?>

以下是edit.php中的一些代码:

<?php

if($_GET['id'] != ""){

$task_id = $_GET['id'];

$task_id = base64_decode($task_id);

$sql = "SELECT * FROM tasks WHERE task_id='$task_id'";

$result = mysqli_query($connection, $sql) or die(mysqli_error($connection));

}

?>

<?php
}
?>

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

$task = isset($_POST['task']) ? $_POST['task'] : null;
$importance = isset($_POST['importance']) ? $_POST['importance'] : null;
$due_date = isset($_POST['due_date']) ? $_POST['due_date'] : null;

if(isset($task,$importance,$due_date)){

$sql = "UPDATE tasks SET task='$task', importance='$importance', due_date='$due_date' WHERE task_id='$task_id'";

$result = mysqli_query($connection, $sql) or die(mysqli_error($connection));

}

}

?>

有人能告诉我我做错了吗?

3 个答案:

答案 0 :(得分:0)

在edit.php文件中,Form标记应该有一个指向要更新的edit.php的Action。

答案 1 :(得分:0)

我通过删除edit.php上的表单操作来修复此问题。原文:

<form method="post" action="index.php">

新:

<form method="post">

然后我在edit.php上添加了一个重定向到这个代码块的底部:

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

$task = isset($_POST['task']) ? $_POST['task'] : null;
$importance = isset($_POST['importance']) ? $_POST['importance'] : null;
$due_date = isset($_POST['due_date']) ? $_POST['due_date'] : null;

if(isset($task,$importance,$due_date)){

$sql = "UPDATE tasks SET task='$task', importance='$importance', due_date='$due_date' WHERE task_id='$task_id'";

$result = mysqli_query($connection, $sql) or die(mysqli_error($connection));

header('Location: index.php');

}

}

?>

答案 2 :(得分:0)

我认为在将task_id传递给edit.php时,您有一个用于编辑值的表单,并且在该表单中,操作部分应该更新为edit.php。