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: 387 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: 387 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: 387 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
  • medal of honor spearhead kurulum hatası...
    iyiymiş ama birazı eksik olmuş bu...
  • Sevimli Komik ve İlginç Kedi Resimleri
    aaaaaaaaaaaaa çok şirinlerrrrr...
  • Saç dökülmesinin nedenleri ve Ahmet Maranki Karışımı
    Saçlarım da dökülme var açılmalar da olmaya başladı doktora gittim testler yaptırdım ama hiçbir sorun ç...
  • CS 1.5 ve CS 1.6 İçin Sağlam Bir CFG (cengaver.cfg)
    güzel bir cfg tavsiye ediyorum...
  • Soyut Kavramlara Örnekler
    Abi somut yazsaydın da yine olmazdı. ...
  • Evcil Kuş Hastalıkları ve Tedavi Yöntemleri
    Merhaba, geçmiş olsun bu durumda kendi başınıza tedavi uygulamanız zor olsa da kırık çıkık için tıklayı...
  • Finansal Yönetim Ders Notları | 1-7
    gerçekten emeğinize sağlık çok güzel bir anlatım olmuş....