2017-11-07 1 views
1

페이지 당 데이터베이스에서 얻은 결과가 최대 3 개까지 내 페이지에 저장할 수 있도록하려면 어떻게해야합니까? 이전 페이지에서 html 링크를 통해 일부 값을 검색하고이를 사용하여 데이터베이스에서 결과를 검색합니다. 그런 다음 결과에서 페이지를 만들어서 스크롤하지 않아도됩니다. 그리고 켜져있는 각 페이지에서 사용할 수 없게됩니다.페이지 당 한도를 표시하는 페이지 번호

<?php 
if (isset($_GET["w1"]) && isset($_GET["w2"])) { 
     $lt = $_GET["w1"]; 
     $ln = $_GET["w2"]; 
     $GLOBALS['id']= ""; 
    } 

    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 

    try { 
     $conn = new PDO("mysql:host=$servername;dbname=dbname", $username, $password); 
     // set the PDO error mode to exception 
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } 
    catch(PDOException $e){ 
     echo "Connection failed: " . $e->getMessage(); 
    } 

    function getAddress($lt, $ln) { 
     $result = json_decode(file_get_contents("https://maps.google.com/maps/api/geocode/json?key=". API_KEY ."&latlng=$lt,$ln")); 
     if ($result->status == 'OK') { 
      return $result->results[0]->formatted_address; 
     } 
     return 'Error'; 
    } 

    try{ 
     $db = $conn->prepare("Select ID from Table"); 
     $db->execute(); 

     echo "<div class='row'>"; 
     while($row=$db->fetch(PDO::FETCH_OBJ)) { 
      $GLOBALS['id'] = $row->ID; 

      echo "<div class='col-sm-6 col-md-4'>"; 

      echo "<h4 class='media-heading'>", $GLOBALS['id'] ,"</h4>"; 
      echo "<span class='fa fa-map-pin'></span> ", getAddress($lt,$ln); 
      echo "</div>"; 

     } 
     echo "</div>"; 

    } catch (PDOException $e) { 
     echo "Error: ".$e; 
    } 


?> 
<!--Pagination--> 
<div class="row"> 
    <div class="col-xs-12"> 
     <nav aria-label="Page navigation" class="text-center"> 
      <ul class="pagination pagination-lrr"> 
      <li> 
       <a href="#" aria-label="Previous"> 
       <span aria-hidden="true">&laquo;</span> 
       </a> 
      </li> 
      <li class="active"><a href="#">1</a></li> 
      <li><a href="#">2</a></li> 
      <li><a href="#">3</a></li> 
      <li><a href="#">4</a></li> 
      <li><a href="#">5</a></li> 
      <li> 
       <a href="#" aria-label="Next"> 
       <span aria-hidden="true">&raquo;</span> 
       </a> 
      </li> 
      </ul> 
     </nav> 
    </div> 
</div> 

답변

1
당신은이 개 변수를 추가하여 코드를 약간 수정해야합니다

:

  • currentPage - 방문자가
  • pagepage에있다 페이지 스크립트를 말해 - 얼마나 많은 기록에 표시를 각 페이지

다음 단계는 SQL 쿼리에 LIMIT 옵션을 사용하는 것입니다.

LIMIT start, amount 

현재 페이지 & perpage 변수를 사용하여 시작점을 계산합니다. 페이지 1 그래서

$currentPage = (!isset($_GET['current_page']) || (int)$_GET['current_page'] == 0) ? 1 : $_GET['current_page']; 
$perpage = 3; //or whatever you'd like 

$limit = $perpage; 
$start = ($currentPage-1)*$perpage; 

$db = $conn->prepare("Select ID from Table LIMIT $start, $limit"); 

:

start = (2-1)*3 = 3 
limit = 3 
Which means: count 3 items and then get the 3 after to them 
: 2 페이지를 들면

start = (1-1)*3 = 0 
limit = 3 
Which means: get the first 3 items. 

관련 문제