PHP İle Sayfalama Yapma

15 Ağu 2008 | Etiketler:, , ,

Uzun bir aradan sonra nihayet yeni bir yazı yazıp, sizlerle paylaşma fırsatı buldum. Hemen konuya geçecek olursak PHP ile ilgilenmeye yeni başlayanların sık karşılaştığı bir sorun olan sayfalama tekniği. Google‘ dan aşina olduğumuz bu teknik, özellikle forumların ülkemizde yaygınlaşmasıyla heryerde görünür hale geldi. Çok fazla veri içeren tabloların ekrana sunumunda kullanıcıya büyük kolaylık sağlayan bu tekniği bir örnekle anlamaya çalışalım.

İlk olarak phpMyAdmin’de  id, başlık ve metin alanları bulunan basit bir tablo yaratıyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE `veriler` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `baslik` varchar(100) NOT NULL,
  `metin` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
 
-- 
-- Tablo döküm verisi `veriler`
-- 
 
INSERT INTO `veriler` VALUES (1, 'selam', 'selam selam');
INSERT INTO `veriler` VALUES (2, 'merhaba', 'merhaba merhaba');
INSERT INTO `veriler` VALUES (3, 'naber', 'naber naber');
INSERT INTO `veriler` VALUES (4, 'iyidir', 'iyidir iyidir');
INSERT INTO `veriler` VALUES (5, 'görüşürüz', 'görüşürüz görüşürüz');
INSERT INTO `veriler` VALUES (6, 'tamam', 'tamam tamam');

Tablomuzu oluşturduktan sonra aşağıdaki örneği inceleyerek basit bir sayfalamanın nasıl yapıldığını görebilirsiniz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?
 
  $db_host = "localhost"; // Genelde localhost
  $db_kullanici = "root"; // Veritabanı kullanıcı adı
  $db_sifre = "******";   // Veritabanı şifresi
  $db_adi = "deneme";     // Veritabanı adı
 
  $baglanti=mysql_connect($db_host, $db_kullanici, $db_sifre);
  mysql_select_db($db_adi);
 
  if(mysql_errno())
  {
    echo 'Veritabanına bağlanılamıyor ...';
    exit;
  }
 
  if (empty($sayfa)) { // İlk açılışta sayfayı 1 yapıyoruz.
  $sayfa=1;
  }
  $sayfa=$sayfa-1;
  $kayit=5; // Her sayfada kaç kayıt olacağını belirtiyoruz.
  $baslangic=$sayfa*$kayit; 
  $bitis=$baslangic+$kayit;
 
  $sorgu=mysql_query ("SELECT * FROM veriler LIMIT $baslangic, $bitis");
  echo "<div id='sonuclar' style='width:500px;'>
  <h3>Veriler</h3>";
  while ($dizi=mysql_fetch_array($sorgu)) { // Bu bölümde verileri sıralıyoruz.
  echo "<b>$dizi[baslik]</b>
  <br />$dizi[metin]<br /><hr>";
  }
  echo "</div>";
 
  $sorgu2=mysql_query ("SELECT * FROM veriler");
  $say=mysql_num_rows($sorgu2); // Toplam kayıt sayısını buluyoruz.
 
  $j=1;
  for ($i=0; $i<$say; $i=$i+$kayit) { // Döngü sayfada gösterilecek veri sayısı kadar artıyor.
  echo "<a href='index.php?sayfa=$j'>$j</a> ";
  $j++;
  }
 
  mysql_close($baglanti);    
?>

Örneği indirmek için

Konu hakkında soru, görüş ve önerilerinizi ısrarla bekliyorum. :)

Paylaş:
  • Twitter
  • FriendFeed
  • Print
  • del.icio.us
  • Digg
  • Facebook
  • Google Bookmarks
  • Mixx
  • LinkedIn
  • StumbleUpon
  • Technorati
  • Reddit
  • email
  • RSS
  • PDF
  1. 90alper90
    19 Ağu 2008 at 19:48

    Arşivime katmam gerekiyor bunu.Çok güzel olmuş gerçekten, tebrik ederim.RSS ile hemen abone oluyorum bloğunuza.Başarılar dilerim.

  2. 21 Ağu 2008 at 03:26

    Bloguma aldığım ilk yorumun olumlu olması beni gerçekten sevindirdi. Senin için faydalı olduysa ne mutlu bana…

  3. Göksel Gökçe
    09 May 2009 at 14:49

    ikinci sayfaya geçmiyor.

  4. webteam
    14 May 2009 at 03:17

    on numara olmus basit sadece ve kullanıslı

  5. Facebook User
    29 Haz 2009 at 19:17

    @Göksel eklemeden önce birkaç kez kontrol etmiştim. Tekrar bi bak istersen

  6. 21 Eyl 2009 at 05:14

    arkadaş sayfalama güzel apch çalışıyor ama host çalişmiyor ikinci sayfa atlamiyor.. çalıştıran var allah rizasi için bana göndersein… email adresim : bayburtweb@hotmail.com

  7. 21 Eyl 2009 at 13:12

    @Yakup Çalışmayan PHP dosyasının içeriğini yazar mısın buraya.

  8. msb
    07 Oca 2010 at 15:29

    gerçekten güzel bir çalışma icra edilmiş fakat kodun tek eksiği şu sayfalama gayet başarılı fakat 5 veri ilk sayfada gösteriliyor fakat 5 ten büyük veriler için 5 ten sonraki kısımları 2. sayfada göstermesi gerekirken tekrar başa dönüyor ve ilk sayfadaki gibi ilk 5 veriyi gösteriyor bu kısmıda düzeltirseniz kodunuz gayet başarılı olacaktır…

    Saygılarımla msb iyi çalışmalar

Switch to our mobile site