2016-05-24 15 views
0

データが増加したので、ページネーションの必要性が非常に重要です。すべてうまく動作します。私はSELECTステートメントに制限があり、行を数えます。目標は、ページの最下部にページ数を10に制限することです。このページには、データベースの最新の行が含まれています。私は$のNRは、現在のページ-1の数である場合ウェブサイト上のPHPページネーション

<?php 

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


$conn = new mysqli($servername, $username, $password, $dbname); 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$nr  = 0; 
$count = mysql_query("SELECT count(*) AS TOTAL FROM quotes"); 
$row = mysql_fetch_array($sum); 

$sql = "SELECT * FROM quotes ORDER BY date DESC limit 10"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    $output  = ""; 
    while($row = $result->fetch_assoc()) { 
     $topic = trim($row["topic"]); 
     $quote = trim($row["quote"]); 
     $author = trim($row["author"]); 
     $id  = trim($row["id"]); 

     $output .= injectNColumnWrapper(3, $nr, "container row", $nr); 
     $output .="<div class='col s12 m6 l4 z-depth-1'>"; 
     $output .="<div class='card-panel grey darken-4 white-text center'>"; 
     $output .=" <h5>Citat: {$id}</h5>"; 
     $output .="</div>"; 
     $output .="<pre class='flow-text black-text' wrap='soft'>";   
     $output .="<p class='flow-text-p citat'>&#34{$quote}&#34</p>"; 
     $output .="<p style='font-weight:bold; class='flow-text-p author'>{$author}</p>"; 
     $output .="<p class='flow-text-p topic'>{$topic}</p>"; 
     $output .="</pre>"; 
     $output .="<div class='content_wrapper'>"; 
     $output .="<h4></h4>"; 
     $output .="<div class='voting_wrapper' id='vote-{$id}'>"; 
     $output .="<div class='voting_btn'>"; 
     $output .="<div class='up_button'>&nbsp;</div>"; 
     $output .="<span class='up_votes'>0</span>"; 
     $output .="</div>"; 
     $output .="<div class='voting_btn'>"; 
     $output .="<div class='down_button'>&nbsp;</div>"; 
     $output .="<span class='down_votes'>0</span>"; 
     $output .="</div>"; 
     $output .="<br>"; 
     $output .="</div>"; 
     $output .="</div>"; 
     $output .="</div>"; 
     $nr++; 

    } 
    $output .= "</div>"; 
    echo $output; 
}else { 
    echo "0 results"; 
} 

$conn->close(); 


function injectNColumnWrapper($cols_per_row, $closePoint, $cssClass="container row", $nthElem=""){ 
    $blockDisplay  = ""; 
    if(($closePoint == 0)){ 
     $blockDisplay = "<div class='" . $cssClass . " container_nr_" . $nthElem . "'>" . PHP_EOL; 
    }else if(($closePoint % $cols_per_row) == 0 && ($closePoint != 0)){ 
     $blockDisplay = "</div><div class='" . $cssClass . " container_nr_" . $nthElem . "'>" . PHP_EOL; 
    } 
    return $blockDisplay; 
} 
?> 

答えて

0
$limit = 10; 
$start = $nr * $limit 
$sql = "SELECT * FROM quotes ORDER BY date DESC limit $start $limit"; 

を持っている必要がありますので、あなたは1ページを持っている場合、それは、0すべきかなど、その後2 1、

場合ページ数を取得すると、すべての結果を集計して制限で除算します(例:100/10 = 10ページ)。簡単なループのページをレンダリングする必要があります。

0

オフセットを使用してください。

ページセットにリンクを表示してからURLからパラメータを取得し、最終的に正しいオフセットでクエリを構築することができます。

ページネーションリンク:

// Note: $row['TOTAL'] comes from your counting sql (count(*)) 
for ($i = 0; $i< $row['TOTAL']; $i++) { 
echo " <a href='?p=$i'>$i</a> |"; 
} 

あなたのURLに要求されたページを取得します。

$requestedPage = !empty($_GET['p']) ? intval($_GET['p']) : 0; 

は、クエリを作成:

$pagination = 10 * $requestedPage; 
$sql = "SELECT * FROM quotes ORDER BY date DESC limit 10 OFFSET $pagination"; 
0

あなたは(開始に長さを与える必要がありますオフセット)値MySQLのページ分割のためのデータを制限します。 EG:

SELECT * FROM table_name WHERE your_condition LIMIT 0,9 - to fetch first 10 records 

SELECT * FROM table_name WHERE your_condition LIMIT 10,19 - to fetch second set of 10 records 

たとえば、そしてそれはaですduplicate question

関連する問題