php / mysql pagination

2 Cevap

Ben MySQL veritabanı 58 kayıtları ile bir tablo var. Benim veritabanına bağlanmak ve tüm kayıtları alınamadı başardı ve php komut dosyası kullanarak her sayfaları görüntülemek için bağlantıları ile 5 sayfa yaptı.

web sayfası gibi görünecektir:

name    number
john    1232343456
tony    9878768544
jack    3454562345
joe     1232343456
jane    2343454567
andy    2344560987
marcy   9873459876
sean    8374623534
mark    9898787675
nancy   8374650493

1 2 3 4 5

Bu 58 kayıtların ilk sayfası ve altındaki bu 5 numara sonraki 10 kayıtları görüntüler her sayfaya bağlantılar vardır. Ben tüm bu var. ama ne yapmak istediğinizi bu şekilde bağlantıları göstermek olduğunu:

1-10  11-20  21-30  31-40  41-50  51-58

not: i 58 kayıtları var, çünkü son bağlantı yerine 60, 58 kadar gösterecektir.

Ben kaç kayıtları bağlı olarak, bu bağlantıyı oluşturmak için döngü kullanılan bu yana, bağlantı benim tablodaki kayıtların sayısına göre değişecektir. I bu nasıl yapabilirim?

Teşekkürler.

EDIT: ilk sayfa zaten görüntülüyor beri, 1-10 bir bağlantı olmayacaktır. Aynı diğer sayfaları için de geçerlidir. görüntüleniyor ne olursa olsun sayfa, bu bağlantı bir bağlantı olmayacaktır.

EDIT2: Bu bu bağlantılar için benim kod

$limit=10;
if($totalrecords > $limit )
{
  echo "<table align = 'center' width='50%'><tr>";
  // Display the page links at center.  Current page will not be a link.
  echo "<td align=center width='30%'>";
  $i=0;
  $l=1;

  for($i=0;$i < $totalrecords;$i=$i+$limit)
  {
    if($i <> $current)
    {
      echo " <a href='$page_name?start=$i'>$l</a> ";
    }
    else
    {
      echo "$l";
    }
    $l=$l+1;   // Current page is not displayed as link.
  }
  echo "</td></tr></table>";
}

: Bu kod, her sayfa bağlantıları olarak görüntülemek

1  2  3  4  5

2 Cevap

Böyle bir şey yardımcı olacaktır:

<?php

$results_per_page = 10;
$results_count = 58;

foreach(
  array_chunk(
    (array)range(1, $results_count),
    $results_per_page
  ) 
  as $page_number => $results
){

  $begin = array_slice($results, 0, 1);
  $end = array_slice($results, -1, 1);

  echo "<a href=\"?page={$page_number}\">",
    $begin[0],"-",$end[0],
  "</a>\n"; 
}

?>

Output

<a href="?page=0">1-10</a>
<a href="?page=1">11-20</a>
<a href="?page=2">21-30</a>
<a href="?page=3">31-40</a>
<a href="?page=4">41-50</a>
<a href="?page=5">51-58</a>

Peki, gerçekten kod zaten bir şey bağlıdır, ancak algoritma bu gibi bir şey olacaktır:

  1. Toplam kayıtların sayısını alın
  2. Sayfalama boyutuna göre toplam kayıtlar miktar bölün (bu durumda 10)
  3. Kalan (veya modülü) kullanın böylece son son sayfası olarak görünür.

Bazı kod sonrası olsaydı daha iyi olurdu.

Bağlantıları böyle bir şey olurdu

<a href="?page=5">50-58</a>

Ben soru üzerine nokta eksik olduğumu düşünüyorum.