728x90
반응형

https://boltlessengineer.tistory.com/28?category=1104321

Oweb 서비스의 개요는 위 링크 참조

 

최종형태와는 다르겠지만 일단 선택 삭제를 구현했다.

 

show_table 함수 조금 수정

<?php
	function show_table()
	{
		$conn = mysqli_connect("localhost", "root", *********, "Oweb_test");
		$query = "SELECT word.id, word, meaning FROM word LEFT JOIN meaning ON word.id = meaning.id";
		$result = mysqli_query($conn, $query);
		echo "<br>";
		echo "<table>";
		echo "<tr><td>선택</td> <td>id</td> <td>단어</td> <td></td> </tr>";
		if (!$result)
		{
			echo mysqli_error($conn);
			exit;
		}
		while($row = mysqli_fetch_assoc($result))
		{
			echo "<tr> <td>";
			echo "<input type='checkbox' name='id[]' value=".$row['id'].">";
			echo "</td> <td>";
			echo $row['id'];
			echo "</td> <td>";
			echo $row['word'];
			echo "</td> <td>";
			echo $row['meaning'];
			echo "</td> </tr>";
		}
		echo "</table>";
	}
?>

while문에 체크박스 추가가 나오도록 추가

id[] 배열로 저장

.$row['id']. 는 각각 체크박스마다 같은 행에 있는 id를 받아옴

 

저번에 만들었던 show_table 함수를 <form>태그 안에 넣는다.

<form action="delete.php" method="post">
  <?php
  	show_table();
  ?>
  <input type="submit" value="삭제" />
</form>

show_table함수에서 체크박스 값을 받아와야 하기 때문에 <form>태그 안에 넣는다.

 

위 코드에서 받을 delete.php 코드

//delete.php
<!DOCTYPE html>

<html lang="ko">
<head>
    <meta charset="utf-8" />
</head>
<body>
	<?php
        $conn = mysqli_connect("localhost","root",*********,"Oweb_test") or die("DB 연결실패");

        $id = $_POST['id'];
        for($i=0; $i<=count($id);$i++)
        {
          mysqli_query($conn, "DELETE FROM word WHERE id = $id[$i]");
          mysqli_query($conn, "DELETE FROM meaning WHERE id = $id[$i]");
        }
        mysqli_query($conn,"SET @C = 0");
        mysqli_query($conn,"UPDATE word SET word.id = @C:=@C+1");
        mysqli_query($conn,"SET @CNT = 0");
        mysqli_query($conn,"UPDATE meaning SET meaning.id = @CNT:=@CNT+1");

        header("location:index.php");
    ?>
</body>
</html>

for문으로 체크박스가 선택되었는가의 배열을 받아와서 데이터 삭제

(물론 같은 id이기때문에 가능하다)

 

실행결과

삭제버튼을 누르면 그 행이 삭제된다.