şurada konuya değinilmiş ama ben olsam daha sade şekilde şöyle yapardım:
// sayfa başına kayıt
$perpage = 10;
// kacinci sayfa istendi? SQL injection vs. kontrol etmek lazım :)
if( intval($_GET['sayfa']) )
$page = $_GET['sayfa'];
else
$page = 1;
// o sayfada gösterilecek verileri al
$SQL = "SELECT * FROM comments
LEFT JOIN users ON comments.user_id = users.user_id
WHERE comments.file_id = '" . intval($_GET['id']) . "'
ORDER BY comments.added
LIMIT ".$perpage*($page-1).", ".$perpage; // BU SATIRA DIKKAT!
$comments_query = mysql_query ($SQL);
// vs.
// vs.
// vs.
Dikkat yazdigim satırı LIMIT kullanımını kurcalarsan anlarsın nasıl çalıştığını. Örn; $page = 1 geldiyse
LIMIT $perpage*($page-1).", ".$perpage formülünün çıktısı
LIMIT 0, 10 olacaktır (sıfırıncı kayıttan başla 10 tane al)
$page = 3 geldiyse çıktı
LIMIT 20, 10 -> 20. kayıttan başla 10 tane al.. gibi
Ayrica en altta sayfa 1 . 2 . 3 vs gostermek için;
// toplam kayit sayisini bul -> $t_rec
$SQL = "SELECT COUNT(*) FROM comments
LEFT JOIN users ON comments.user_id = users.user_id
WHERE comments.file_id = '" . intval($_GET['id']) . "'";
list($t_rec) = mysql_fetch_row( mysql_query($SQL) );
// bu kontrolü ozellestirebilirsin
for($i=1; $i<=ceil($t_rec/$perpage); $i++) {
echo "<a href='?sayfa=$i'>$i</a> | ";
}
Burada da toplam potansiyel gösterimi olabilecek kayıtı COUNT(*) ile buluyoruz. Atıyorum 54 geldiyse bu 6 sayfa eder, o yüzden kayıt sayısı/sayfa başına değilde ceil($t_rec/$perpage) ile bölüyoruz. (Yukarıya yuvarlayıp.) Sonra da 1'den 6'ya kadar tek tek istediğin formatta yazdırıyorsun.
Umarım yardımcı olabilmişimdir.