2017-12-27 10 views
0

페이지 매김을 추가하려고하는데 올바른 코드 일지라도 페이지에는 처음 10 개의 결과 만 표시됩니다 (페이지 당 10 개의 결과 만 표시됨). 아래에서 볼 수 있듯이이 문제는 $_GET 메서드에서 생성 된 것으로 보입니다. 즉 $_GET['page'] 등을 설정할 수없는 것, 그래서 변수 $page은 항상 1 :
PHP와 Ajax 페이지 매김. GET 메서드가 항상 빈 값을 반환하는 이유는 무엇입니까?

if(isset($_GET['keyPagination'])) { 
if($_GET['keyPagination'] == "displayAllTopics") { 
    $sql = "SELECT * FROM travel"; 
    $result = mysqli_query($conn, $sql); 
    $count_topics = mysqli_num_rows($result); 
    if($count_topics < 1) { 
    exit('There are no topics yet.'); 
    } 

    if(isset($_GET['page'])) { 
    $page = $_GET['page']; 
    } 
    else { 
    $page = 1; 
    } 

    //results per page 
    $results_per_page = 10; 
    //number of pages 
    $offset = ($page-1) * $results_per_page; 
    $number_of_pages = ceil($count_topics/$results_per_page); 

    $sql_pagination = "SELECT * FROM travel LIMIT $offset, $results_per_page"; 
    $results_pagination = mysqli_query($conn, $sql_pagination); 
    $response_message = ""; 
    $pagination = ""; 
    while($row = mysqli_fetch_assoc($results_pagination)) { 
    $user_id = $row['user_id']; 
    $travel_subject_id = $row['travel_subject_id']; 
    $travel_subject_date = $row['travel_subject_date']; 
    $travel_title = $row['travel_subject_title']; 
    $travel_body = $row['travel_subject_body']; 
    $travel_comments_count = $row['travel_comments_count']; 
    $travel_views = $row['travel_subject_views']; 
    $travel_subject_date_format = date('j M y H:i', strtotime($travel_subject_date)); 
    $sql_user = "SELECT * FROM forum_users WHERE user_id='$user_id'"; 
    $result_user = mysqli_query($conn, $sql_user); 
    if($row_user = mysqli_fetch_assoc($result_user)) { 
    $username = $row_user['username']; 
    $response_message .= "<tr> 
    <td><a href='travel_subject.php?id=".$travel_subject_id."' onclick='countview(".$travel_subject_id.");'><img src='topic.png' class='img_first'>$travel_title</a></td> 
    <td><img src='comment.png' class='img_second'><p>$travel_comments_count</p></td> 
    <td><a href='profile_user.php?id=".$user_id."'><img src='avatar.png' class='img_third'>$username</a></td> 
    <td><p><img src='views.png' class='img_four'>$travel_views</p></td> 
    <td><p>$travel_subject_date_format</p></td> 
    </tr>"; 
    } 
} 
for ($i = 1; $i <= $number_of_pages; $i++) { 
    $pagination .= "<a href='forum_index.php?page=".$i."&limit=".$offset."'>$i</a>"; 
} 

$data = array('response_message' => $response_message, 'pagination' => $pagination); 
echo json_encode($data); 

exit(); 
} 
} 

:
여기

function displayAllTopics() { 
     $.ajax({ 
      url: "requests.php", 
      type: "GET", 
      data: { 
      keyPagination: "displayAllTopics" 
      }, 
      dataType: "json", 
      success: function(response) { 
      $("#topicArea").append(response.response_message); 
      $("#pagination").append(response.pagination); 
      } 
     }); 
     } 

requests.php 파일 : 여기에

는 아약스입니다 그 결과, 아래의 페이지는 항상 처음 10 개의 결과를 표시합니다. 왜 그런가요?

<div class='display-subjects'> 
    <table class='display-subjects-table' cols='5'> 
<tbody id="topicArea"> 
    </tbody> 
</table> 
</div> 
<div id='pagination'> 
    <?php 
    if(isset($_GET['page'])) { 
    $page = $_GET['page']; 
    } 
    else { 
    $page = 1; 
    } 
?> 
</div> 

잘못된 부분은 다음과 같습니다

여기에 내가 결과를 표시 할 것인지, PHP 파일입니까? 미리 감사드립니다.

+0

'data :'옵션에는'page :'매개 변수가 없습니다. '$ _GET [ 'page']'가 어디에서 왔을 것으로 기대합니까? – Barmar

답변

1

displayAllTopics()은 페이지 번호를 매개 변수로 취한 다음 data 옵션으로 전달해야합니다.

function displayAllTopics(pageNum) { 
    $.ajax({ 
     url: "requests.php", 
     type: "GET", 
     data: { 
     keyPagination: "displayAllTopics", 
     page: pageNum 
     }, 
     dataType: "json", 
     success: function(response) { 
     $("#topicArea").append(response.response_message); 
     $("#pagination").append(response.pagination); 
     } 
    }); 
    } 
+0

나는 그것이 작동하지 않는 것을 시도하더라도. –

+0

당신 말이 맞습니다. 문제 해결됨. 변수 pageNum을 선언하지 않았기 때문에 이전에는 작동하지 않았습니다. –

관련 문제