728x90
반응형

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

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

 

딱히 좋은 것 같지는 않지만 메인화면의 html를 분리했다.

//main.html
<!DOCTYPE html>

<html lang="ko">
<head>
    <meta charset="utf-8" />
</head>
<body>
    <h1>단어장</h1>
    <form action="index.php">
        <input type="button" value="create" />
    </form>
    <h2>메뉴</h2>
    <p>단어 추가</p>
    <form action="insert.php" method="post">
        <input type="text" placeholder="단어를 입력하세요" name="word" />
        <input type="text" placeholder="뜻을 입력하세요" name="meaning" />
        <input type="submit" value="추가" />
    </form>
</body>
</html>

나중에 단어장 만들 때 필요한 create버튼을 미리 만들고

단어와 뜻은 text 형태로 추가하도록

//index.php
<!DOCTYPE html>

<html lang="ko">
<head>
    <meta charset="utf-8" />
</head>
<body>
    <?php
    	include "main.html";
    ?>
</body>
</html>


다음은 mysql의 데이터를 가져오는 함수 (body 태그 안에서 사용)

//index.php에 추가
<?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 "<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 $row['id'];
			echo "</td> <td>";
			echo $row['word'];
			echo "</td> <td>";
			echo $row['meaning'];
			echo "</td> </tr>";
		}
		echo "</table>";
	}
?>

mysqli_connect로 mysql과 연결

select join를 이용해 두 테이블의 데이터를 불러옴

mysqli_fetch_assoc는 select한 테이블의 칼럼마다 쪼개주는 함수

 

mysql에 데이터를 추가하는 php파일

//insert.php

<!DOCTYPE html>

<html lang="ko">
<head>
    <meta charset="utf-8" />
</head>
<body>
    <?php
        $conn = mysqli_connect("localhost", "root", *********, "Oweb_test");
        $word = $_POST["word"];
        $meaning = $_POST["meaning"];
        mysqli_query($conn, "INSERT INTO word (word) VALUES('$word')");
        mysqli_query($conn, "INSERT INTO meaning (meaning) VALUES('$meaning')");
		//id 정렬
        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>

insert문으로 main.html에서 받아온 단어와 뜻을 각가 테이블에 추가

id가 달라질 수 있으니 1,2,3...으로 되도록 정렬

 

표의 테두리를 위한 코드 (index.php의 head태그 안에 추가)

<style>
  table{
 	 border: 1px solid black;
  	border-collapse: collapse;
  }
  td{
    border: 1px solid black;
  }
</style>

최종 과정과는 다르지만 추가했을 때 단어와 뜻이 같은 id로 들어가니까 아직은 큰 상관 없다.

 

단어와 뜻을 입력하고 추가를 누르면 아래 표에 id와 함께 추가된다.