2017-10-09 5 views
0

간단한 PHP 및 SQL을 사용하여 목록 응용 프로그램을 만듭니다. 내 문제는 행을 편집 할 때마다 기존 행을 편집하는 대신 다른 행을 만드는 것입니다.행을 편집 할 때마다 다른 행이 생성됩니다.

다음
<?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에서 코드의 일부이다 : 여기의 index.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

아마, 당신은'update'가 있어야 할 곳에'insert'를 가지고있을 것입니다. –

+0

이전 레코드 ** 및 ** 새 레코드가 모두 데이터베이스에 있음을 의미합니까? 트리거를 통해서만 가능합니다. –

+0

@GordonLinoff edit.php에는 삽입 문장이 없습니다. – Julian

답변

0

edit.php 파일에서 Form 태그에는 edit.php를 가리키는 Action이 있어야합니다.

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'); 

} 

} 

?> 
0

내가 생각하는에 TASK_ID 전달에 edit.php 값을 편집하기위한 양식이 있고 그 양식에서 action 부분을 edit.php로 업데이트해야합니다.

관련 문제