해결된 질문
작성
·
385
0
ajax 방식으로 fetch 통해 page값을 넘겨
Domparser 사용해서 html을 새로 그린다는건 알겠는데 get방법을 사용한 이유가 있나요?
왜 li태그 안에내용만 쿼리내용이 업데이트되어 그려질수 있는지 모르겠는데 조금 더 자세한 설명 없나요?
page값이 변경된 새로운 쿼리를 실행시켜 실행된 값들을 저장하는 코드가 어느부분인걸가요?
답변 1
1
안녕하세요. 정상우입니다 :D
Domparser 사용해서 html을 새로 그린다는건 알겠는데 get방법을 사용한 이유가 있나요?
중요하지 않은 정보의 경우 GET 으로 처리하는 것이 일반적이고, '읽기' 또는 '정보 요청' 의 경우 GET 으로 처리합니다. 검색어에 대해서도 GET 으로 처리합니다. 이는 제 강의 뿐만 아니라 다양한 서비스의 사례에서도 확인하실 수 있습니다. 블로그나 검색도 마찬가지입니다.
page값이 변경된 새로운 쿼리를 실행시켜 실행된 값들을 저장하는 코드가 어느부분인걸가요?
page
쿼리 파라매터를 받아오는 부분은 index.php 의 초반부 코드인 다음과 같은 부분입니다. page
를 받아오지 못하면, 즉 쿼리 파라매터가 주어지지 않은 경우 $page ?: 0
에 의해 거짓으로 판단되어 0 으로 처리되며 SELECT * FROM posts ORDER BY id DESC LIMIT 3 OFFSET 0
가 최종적으로 처리됩니다.
$page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
$page = $page ?: 0;
$stmt = mysqli_prepare($GLOBALS['DB_CONNECTION'], 'SELECT * FROM posts ORDER BY id DESC LIMIT 3 OFFSET ?');
$page = $page * 3;
mysqli_stmt_bind_param($stmt, 'i', $page);
그러나 /?page=1
과 같이 주어진 경우 $page ?: 0
가 참으로 처리되므로 $page
의 초기 값으로 1 이 할당되고, 그 이후 $page * 3
에 의해 3 이 할당됩니다. 따라서 결론적으로 SELECT * FROM posts ORDER BY id DESC LIMIT 3 OFFSET 3
로 쿼리가 실행됩니다. 쿼리 파라매터에 따라 반환하는 결과 페이지가 달라지는 것은 이 때문입니다.