Php ile Basitçe Mysql Sayfalama Kod Örneği

Mysql veritabanını PHP ile listelerken sayfalama yapmak istiyorsanız bu örnek işinizi görecektir. Bu sayfalama scripti hem çalışma mantığını hemde basitçe sayfalama yapmanızı sağlar.

Öncelikle veritabanımızı oluşturalım;

CREATE TABLE `kullanicilar` (
	`kullanici_no` int(10) NOT NULL auto_increment,
	`kullanici_adi` varchar(20) NOT NULL default '',
	`adi` varchar(20) NOT NULL default '',
	`soyadi` varchar(20) NOT NULL default '',
		PRIMARY KEY (`kullanici_adi`),
		UNIQUE KEY `kullanici_no` (`kullanici_no`)
) TYPE=MyISAM AUTO_INCREMENT=18 ;

Bir kaç veri girişi yapalım;

INSERT INTO `kullanicilar` VALUES (1, 'myavruturk', 'Mehmet', 'Yavrutürk');
INSERT INTO `kullanicilar` VALUES (2, 'Musti', 'Mustafa', 'Kaya');
INSERT INTO `kullanicilar` VALUES (3, 'ali10', 'ali', 'veli');
INSERT INTO `kullanicilar` VALUES (4, 'ali11', 'ali', 'velix');
INSERT INTO `kullanicilar` VALUES (5, 'ali12', 'ali', 'velix');
INSERT INTO `kullanicilar` VALUES (6, 'ali13', 'ali', 'velix');
INSERT INTO `kullanicilar` VALUES (14, 'hardim', 'muhammed', 'kaya');

Php ile sayfalama scriptimizi oluşturalım;

<?php
// VERİTABANI BİLGİLERİ
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "123";
$dbname = "sayfalama";
//****************************************************************
// ########## MYSQL Bağlantı Ayarları ############################
$veri_yolu = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die("<center><br>MySQL Bağlantı Hatası!</center>");
mysql_select_db("$dbname", $veri_yolu) or die("<br><center>Veri Tabanı Bulunamıyor!</center>");
//****************************************************************
// sayfa değişkenine değer atatmamışsa 1'e eşitliyoruz
if (!isset($_GET['sayfa'])) {
    $sayfa = 1;
} else {
    $sayfa = $_GET['sayfa'];
}
//****************************************************************
// sayfa başına kaç kayıt listelenecek
$kacar = 2;
//****************************************************************
// Geçerli sayfadan itibaren kaç kayıt kaldığını buluyoruz
$kactan = (($sayfa * $kacar) - $kacar);
//****************************************************************
// $kactan ve $kacar değişkenlerimizin aldığı değerlere göre bilgileri veritabanından alıyoruz
$sonuc = mysql_query("SELECT * FROM kullanicilar LIMIT $kactan, $kacar");
//****************************************************************
// Sayfa Başında Tablo Başlıklarını hazırlıyoruz
echo "<table align=\"center\" width=\"700\" border=\"1\" bordercolor=\"FFFFFF\" cellspacing=\"2\" cellpadding=\"2\"><tr bordercolor=\"6699FF\" bgcolor=\"6699FF\"><td width=\"60\" height=\"25\">Sıra No</td><td width=\"180\">Kullanıcı Adı</td><td width=\"180\">Adı</td><td width=\"180\">Soyadı</td></tr>";
//****************************************************************
$sirano = 1; // herkaydın sıra numarası için sırano değişkeni oluşturuyoruz
//****************************************************************
// Kayıtlarımızı ekranda gösteriyoruz
while ($sorgu_verisi = mysql_fetch_array($sonuc)) {
    echo " <tr bordercolor=\"6699FF\"><td height=\"25\">$sirano</td><td>$sorgu_verisi[kullanici_adi]</td><td>$sorgu_verisi[adi]</td><td>$sorgu_verisi[soyadi]</td>";
    $sirano++;
}
echo "</tr></table>";
//****************************************************************
// Toplam kayıt sayısını veritabanından alıyoruz
$toplam_kayit = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM kullanicilar"),
    0);
//****************************************************************
// ceil() fonksiyonumuz ile toplam sayfa adedini buluyoruz
$toplam_sayfa = ceil($toplam_kayit / $kacar);
//****************************************************************
echo "<table width=\"700\" border=\"1\" bordercolor=\"FFFFFF\" align=\"center\" cellpadding=\"2\" cellspacing=\"2\"><tr class=\"tablobaslik\" bordercolor=\"000000\">";
//****************************************************************
// Önceki Kayıtların Gösterileceği Linkimiz
echo "<td width=\"100\">";
if ($sayfa > 1) {
    $prev = ($sayfa - 1);
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?sayfa=$prev\"> Önceki Sayfa</a>";
} else {
    echo "Önceki Sayfa";
}
for ($i = 1; $i <= $toplam_sayfa; $i++) {
    if (($sayfa) == $i) {
        echo "</td><td> Aktif Sayfa: ";
        echo "<b> $i </b>";
    } else {
        echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?sayfa=$i\"></a> ";
    }
    echo "</td>";
}
// Sonraki Kayıtlarımızın Gösterileceği Linkimiz
echo "<td width=\"100\">";
if ($sayfa < $toplam_sayfa) {
    $next = ($sayfa + 1);
    echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?sayfa=$next\"> Sonraki Sayfa</a></td>";
} else {
    echo "Sonraki Sayfa";
}
echo "</td>";
echo "<td>Toplam Kayıt : <b>$toplam_kayit</b> </td>";
echo "<td>Toplam Sayfa : <b>$toplam_sayfa </b></td>";
echo "</tr></table>";
?>


Etiketler: Sayfalama mysql

11 yorum

  • Yorumunuz en az 30 karakter olmalıdır. (0)
    Tüm Yorumlar
    • turgut

      Bu kısım da sayfa ortasında 3 erli alt alta ürünlerin sayfalandığı kısım buradaki sorunum ne kadar ürünüm varsa bu marka altındaki olması gerektiği gibi bu sayfada çıkıyor fakat sorun şu ki ne kadar varsa hepsi alt alta uzayıp gidiyor yani bunu her sayfada yine yan yana 3erli ve alt alta toplam 10 ya da 20 ürün şeklinde sayfalamak mümkün mü yani 1-2-3 son şeklinde bu kodu inceleyip yapmam gerekenleri yapıp yardımcı olacak birileri var mı teşekkürler.

       

      <td colspan="2" valign="top">&nbsp; <font size="4" color="#FFFFFF">&nbsp;<?=$sorgu['baslik'];?></font>
      <br>
      <table width="154" border="0" bgcolor="#FFFFFF" cellpadding="4" cellspacing="4">
      	<tr>
      		<?php $paket=mysql_query("SELECT * from urun where kid='".$kid."'"); if(mysql_num_rows($paket)==0)  print "<br/> <center> <font color='#ff0000'>Bu kategoriye daha önce ürün eklenmemiş.</font> </center>"; while($p=mysql_fetch_array($paket)){ if($satir%3==0){echo " </tr> <tr>";}; ?>
      		<td colspan="3" valign="top" style="border-right:solid 1px #CCC; border-bottom:solid 1px #CCC;">
      		<table width="190" border="0">
      			<tr>
      				<td width="184" height="24" align="center" background="images/header_07.png">
      				<font color="#ffffff" size="2" face="Arial, Helvetica, sans-serif">
      				<a class="dd4" href="urun.php?id=<?=$p['id']?>"><?=substr($p[baslik],0,13)?></a>..
      				</font></td>
      			</tr>
      			<tr>
      				<td align="center"><a href="urun.php?id=<?=$p['id']?>">
      				<img src="admin/uresim/<?=$p[resim]?>_b.jpg" width="180" height="180" border="0" /></a>
      				</td>
      			</tr>
      			<tr>
      				<td align="center"><font color="#990000" size="2">Fiyatı :</font>
      				<font size="2" color="#339921"><?=$p['fiyat']?> TL</font> </td>
      			</tr>
      			<tr>
      				<td height="23" align="center" background="images/geri.jpg" style="border:solid 1px #CCC;">
      				<a href="urun.php?id=<?=$p['id']?>">Detaylar</a> </td>
      			</tr>
      		</table>
      		<?php $satir++;}?> </td>
      		<!-- /SONU -->
      	</tr>
      </table>

       

      Yanıtla

      Master Admin Yorum: 382 Forum Mesaj: 295

      Merhaba, bahsettiğiniz şeyi ul li tag'leriyle yapabilirsiniz. Ul li çoklu sütun destesi sunar ve sınırı siz belirlersiniz.

      ul li ile listeyi iki sütunda sıralama

      başka bir örnek

      Bir listede çoklu sütun kullanma

    • niyazi

      Kodlar çalışıyor yanlız  her sayfada sırano kaldığı yerden devam etmiyor yani sayfa1 de sırano 1 sırano 2 , diğer sayfada sıra no 1 sıra no 2 , bunu kaldığı yerden nasıl devam ettiririz.

      Yanıtla

    • Ezgi

      el emeği göz nuru olmuş bizim için ders olmuş:)

      Yanıtla

    • Muharrem
      Kodlar gayet güzel bir şekilde çalışıyor. Paylaşım için teşekkür ediyorum.

      Benim bir sorum olacak. "Önceki sayfa" ve "Sonraki sayfa" linklerinin ortasında sayfa numaralı linkleri nasıl ekleyebilirim. Bir örnekle açıklamam gerekirse: 

      "Önceki sayfa 1 2 3 4 5 6 7 8 Sonraki sayfa"

      Umarım açıklayıcı olmuştur. 

      Yanıtla

      Master Admin Yorum: 382 Forum Mesaj: 295
      59. satırı alttaki gibi değiştirirseniz istediğiniz sonucu alırsınız.

      echo "<a href=\"".$_SERVER['PHP_SELF']."?sayfa=$i\">$i</a>";
    • MasterWeb
      Kodlarınız hatalı kontrol edmenızı rıca edıyorum....

      Yanıtla

    • ahmed
      kodlar hatali hocam yaww! isset ile sayfa degiskeni bastan nerden geliyor ki kontrol ettirmissin :)

      Yanıtla

      Master Admin Yorum: 382 Forum Mesaj: 295
      Ahmet bey, ilk sayfa yüklemesinde bu kısım dediğiniz gibi pek anlamlı gözükmüyor fakat sayfalama yapıldığında ve sayfa numaralarından birine tıklandığında o değişken değer alacak ve isset kontrolü o zaman gerekli olacak....
    • murat
      bu kodlar hatali yaw

      Yanıtla

    • kattal
      Çok teşekkür ederim çalışıyor.

      Yanıtla

Yorum Yaz

İlginizi çekebilir...
Sitede Ara
  • AÖF AKTS Nedir Nasıl Hesaplanır?
    Ben aof okudum ilk yılım yıllık sistemdi onu kac kredi olduğunu nasil öğrenebilirim ...
  • Kredili Sistemde Ders Geçmek İçin Kaç Almalısınız?
    Benim 1sinifim ilk donem iyi gecti ikinci donem derslerden kaldim 2.yilimda mi kaldigim dersleri mi ver...
  • PHP Array | Dizi İçinde Tekrar Eden Elemanların Sayısını Alma
    Sen kralsın kardeşim :) 5 saattir bunu arıyordum...
  • Türkiye'de Hangi Burçtan Kaç Kişi Var?
    Çok güzel ve doğru ki muhtemelen akrep olduğum içindir. :)...
  • Jako Beslenme Diyeti - Afrika Gri Papağanı neler yer, hangi gıdalar zararlıdır
    harika bir çalışma teşekkürler...
  • Windows 7 ve Vista Tüm Dil Paketleri - SP1 SP2 RTM x86 32bit x64 64bit
    Teşekkürler çok yardımcı oldu ...
  • Genel İşletme 1. Dönem Vize Soruları
    soru 3 şıklarında yanlışlık vardır tüketim ve hizmet aynı kapasitede yer alıp ikisi de cevap kabul edil...