11. 활용 - 글쓰기

https://youtu.be/GtE4ZXm8eNo

 

 

 

여태까지 배웠던 것을 이용해서 위키 사이트를 업데이트해 보자. 핵심은 모든 기능을 db와 연동시키는 것이다.

 

 

 

글을 작성하는 기능이다. (create.php 코드를 찍었어야 했는데 스크린샷을 잘못 찍었다.)

글 작성 위치와 기능 자체는 이전 php문 수업과 동일하나, 작성한 글이 db에 하나의 row로서 들어간다는 점이 중요하다.

연결 변수 $conn을 통해 INSERT문으로 row를 집어넣는다. SQL Server라는 글을 작성하는 모습이다.

 

 

성공적으로 글이 등록되었다. 위의 ordered list는 db 테이블에 있는 항목들의 title을 모두 불러오므로 ol에 추가되었다면 db에 추가된 것이라고 보아도 무방하다.

 

 

글을 썼다면 수정할 수 있는 기능이 생겨도 좋을 것이다. 수정할 대상이 되는 글이 있어야 하므로, 특정 글을 지정하지 않아도 나오는 create 버튼과는 달리 update 버튼은 특정 글을 클릭해야 나오도록 하는 것이 적절할 것이다. id 변수를 담은 isset문을 조건으로 한 if문 안에 넣고 변수명을 $update_link로 한다. 이 링크는 전용 php 페이지로 연결될 것이며, php문을 통해 html 사이에 끼워넣어진다.

update.php 링크는 create.php와 유사하나 제목과 내용에는 기존 글의 제목과 내용이 value 값으로 담겨 있다. 이 내용은 DB에서 SELECT문으로 가져와지며, 입력되는 값 역시 한 번의 필터링을 거쳐 DB로 들어간다.

중복되는 SQL Server 항목을 Database 항목으로 수정한 모습이다.


12. 활용 - 글삭제

https://youtu.be/t6TtDnulbMU

 

 

글 삭제 기능도 구현해 보자. 삭제는 업로드/수정과는 달리 실행했을 때 이동해야 할 페이지가 없으므로

a 태그가 아닌 input의 버튼 타입으로 구현한다.

삭제도 대상이 있어야 하므로 수정과 마찬가지로 특정 항목에 들어가야만 버튼이 나타나도록 한다.

삭제할 글의 php id 값을 받아 db로 보낸 뒤 delete문을 통해 지운다.

삭제를 실행한 뒤의 모습이다.


13. 관계형 데이터베이스의 도입 ~ 14. 많아지는 테이블

https://youtu.be/0DKV9pyXB-g

 

 

'관계형 데이터베이스'의 의의란 테이블들 사이의 '관계'에 있다고 할 수 있다.

'join' 기능을 사용함으로써 테이블들 간의 관계, 접접을 통해 테이블들을 합칠 수 있고

중복제거를 위해 정보가 여러 테이블에 분산되어도 조인만 하면 다시 하나의 테이블처럼 볼 수 있는 것이다.

그리고 그 조인된 테이블을 php 페이지에서도 쿼리를 통해 확인할 수 있다.

 

기능 시연을 위해 author라는 테이블을 만들었다. 여기에는 작가 이름과 정보, 아이디가 들어갈 것이다.

 

이것은 기존에 있던 테이블인 topic의 구조이다. 기존 테이블에서 작가에 관한 정보 부분을 분리했으며,

작가 아이디 부분만 컬럼으로 남겨놓고 있다.

 

작가 아이디 값을 세팅해준 뒤 join한 모습이다.

topic 테이블의 author_id와 author 테이블의 id 값을 같은 값으로 취급하여, 이 부분을 접점으로 한 뒤

두 테이블을 서로 결합한 것이다.

이제 이 기능을 php에 적용해 보자.


15~16. 테이블 간의 연결 - 읽기~생성

https://youtu.be/Mdsemy535bE

 

 

다시 글 읽기와 생성으로 돌아온다. 이제 작가 아이디라는 정보가 생겼으므로

글마다 항목을 누르면 글 밑에 작가가 누구인지 표시되게끔 하고자 한다.

이런 식이다. db에서 조인된 테이블로부터 작가 이름을 받아온 뒤, 그것을 변수에 담아 php문으로 본문 아래 기재한다.

 

 

$author 변수는 글 작성 시에도 글 아래 기입하도록 되어 있다.

row를 작성할 때 작가가 누구인지 기입하면 author_id가 배당되고, 그 정보가 쿼리를 통해 db에 들어가는 것이다.

 

쿼리 전문은 이러하다. 당연히, 입력값으로 받는 모든 정보는 필터링을 거칠 필요가 있다.

 

성공하면 이와 같은 화면이 뜬다. 돌아가기 버튼을 눌러 메인 화면인 index로 돌아갈 수 있다.


17. 새로운 테이블 - 읽기

https://youtu.be/eLFszaGuI1o

 

 

 

이제 글 이외에도 작가들의 목록도 웹 페이지에서 확인하고 싶다면 어떻게 해야 할까?

우선 별도의 페이지를 만든다. topic 테이블이 표시되는 index 페이지에서는 author 링크를 누르면 author.php로 갈 수 있게 한다.

author.php에서는 topic을 누르면 index로 돌아올 수 있다.

 

작가 정보는 id, 이름, 부가정보가 함께 표시되어야 하기 때문에 표 형태로 나타내는 것이 좋을 것이다.

table 태그를 쓰면 표를 웹에 표시할 수 있다. 한 줄은 tr, 한 칸은 td 태그로 감싼다.

값이 더 없을 때까지 반환하게 하는 mysqli_fetch_array 문을 사용해 테이블 전체의 내용을 반환하게 한다.

최종적으로 완성된 표는 위와 같다.


18. 새로운 테이블 - 생성

https://youtu.be/LHVppMSMLfY

 

 

그러면 이제 작가 정보도 갱신할 수 있게 해 보자.

작가 정보 갱신도 여태까지 해왔던 것에서 크게 벗어나지 않는다.

입력값을 받고, 필터링하고, 이 값들을 db에 보내 INSERT 쿼리를 통해 삽입한다.

 

process_create의 author 버전을 만들어 삽입 작업을 담당하게 한다.


19. 새로운 테이블 - 수정

https://youtu.be/B9fidsr4Io8

 

 

수정 또한 같은 방식으로 실행하되, author 페이지는 항목마다의 페이지를 갖추고 있지 않기 때문에

테이블의 컬럼을 하나 더 써서 수정하는 버튼이 각각 위치하게끔 한다.

update 링크를 누르면 수정하고자 하는 작가의 아이디가 process_update_author.php로 전달된다.

쿼리를 통해 db에서 작가의 이름과 설명이 전달되고, 이 값을 value 삼은 form으로 정보를 수정한다.

(각 입력값은 필터링 및 이스케이프 되어야 한다.)

 

6번 항목에서 문장부호를 지운 내용을 업로드한 것이다.


20. 새로운 테이블 - 삭제

https://youtu.be/XVbwTDfqn-A

 

 

 

삭제 기능은 역시 위와 같이 별도의 링크가 필요하지 않으므로 버튼으로 구현한다.

하나의 DELETE문 쿼리로 처리될 수 있으므로, 버튼을 누르면 해당 쿼리를 담은 process_delete_author.php가 실행되도록 하고 리다이렉트 기능을 통해(header("Location: ()")) 새로고침된 원래의 페이지로 돌아온다.

삭제는 신중해야 하므로, 한 번의 alert를 넣어 쿠션을 깐다.

확인을 눌러야만 삭제가 진행된다.

 

6번 항목을 삭제한 후의 모습이다.

+ Recent posts