Mini mission
DATE : 2023/11/2
Last updated
DATE : 2023/11/2
Last updated
자! DB & SQL에 대해 살펴보았으니 mini mission을 할 차례이다.
Mini mission 내용은 다음과 같다.
Client가 학생 이름을 입력하면 Get method로 파라미터를 보낼 것
DB에서 이름을 입력한 학생의 점수를 가져와 화면에 결과를 출력할 것
바로 시작해보자.
DB는 DataBase에서 본
test DB - student_grade Table을 사용할 것이다.
우선 사용자의 파라미터를 받을 <input>이 필요하다.
간단하게 입력란 & 버튼 정도로만 구성했다.
Get method로 파라미터를 보낼 거라 <form> - method 속성을 get으로!
결과 화면을 보면
이름을 입력할 <input>과 버튼이 등장한다.
다음으로 학생 이름을 가지고 이후 과정을 처리할 PHP code를 살펴보자.
전체적인 코드는 위와 같다. 이해를 돕기 위해 조금씩 쪼개서 분석해보자.
사용자가 학생 이름을 입력하면 WAS는 그 값을 가지고 DB에게 해당 학생의 점수를 물어봐야 한다.
이때 DB 관점에서는 아무한테 정보를 알려줄 수 없기 때문에
데이터를 제공할 만한 권한이 되는 지 인증이 필요하다고 할 수 있다.
여기서 말하는 "인증"은 쉽게 말해 로그인과 같다.
DB의 id:password를 가지고 연결을 시도하면 WAS는 로그인에 성공해 자신이 인증된 상대라는 걸
증명할 수 있게 된다.
자신이 인증된 대상임을 보여주는 결과를 mysqli_connect()가 반환하고 (= $conn)
이후 SQL을 실행할 때 사용한다.
만약 연결에 문제가 생겼다면 다시 score.html로 이동하고
정상적으로 연결이 마무리 되면
사용자가 보낸 학생 이름을 글로벌 변수 $_GET에서 가져온다.
<input>에서 required를 사용하지 않았기 때문에
사용자가 아무런 값을 입력하지 않은 상태로 요청을 보낼 수 있음을 고려해
$name이 공백이면 계속해서 진행하지 않고 다시 score.html로 이동한다.
DB와 소통도 문제없고! 사용자가 학생 이름을 입력했다면!
이젠 SQL을 실행할 시간이다.
(참고로 DB에 SQL을 실행하는 걸 query 질의한다고 표현한다.
query할 때 사용하는 언어라 Structured Query Language인 셈)
우리는 사용자가 입력한 학생 이름으로 점수를 얻고 싶기 때문에 select문을 실행할 것이다.
PHP에서 SQL을 사용하기 위해서는 mysqli_query() 함수를 사용한다.
위에서 말했듯이 DB에게 인증해야 하니까 $conn도 같이 넣어준다 😎
만약 SQL 결과로 나온 row가 0개라면
DB에 없는 학생 이름을 입력한 것이기 때문에 pop up으로 이를 알리고
score.html로 돌아간다.
SQL 실행 결과가 존재하면 mysqli_fetch_array()로 맨 위에 있는 데이터부터 값을 가져온다.
mysqli_query() 결과는 Object 형태이기 때문에 우리가 바로 사용할 수 없어 mysqli_fetch_array,
mysqli_fetch_assoc 함수 등을 사용해야 한다.
마지막엔 학생 이름과 점수를 알려주는 문장을 echo 해주면 끝!
그럼 실행이 잘 되는 지 확인하러 가자!
사용자가 아무런 값을 입력하지 않은 경우, pop up으로 문구를 출력한다.
만약 mysqli_connect() 실행 결과에 문제가 있다면 DB connection error 문구를 출력한다.
DB에 존재하는 학생 이름을 입력한 경우에는 학생 이름 & 점수로 위와 같이
성적을 알려주는 문구를 출력한다.
Get method로 파라미터로 학생 이름을 전달하기 때문에
URL 바에 현재 입력한 학생 이름이 무엇인지 노출되는 걸 볼 수 있다!
이렇게 해서- Mini mission 완료!