Yazdır 16 Haziran 2010 Çarşamba (Hit: 76432)

Kayıt Listeleme (PHP)

Bu dersimizde veritabanından alınan kayıtları web sayfasında listelemeye çalışacağız. Bunun için sırasıya şu işlemleri yapacağız:

  • Veritabanı bağlantısı yapılacak
  • Kullanılacak karakter seti belirtilecek
  • Listelenecek kayıtları ifade eden SQL sorgusu çalıştırılarak kayıtlar çekilecek
  • Çekilen kayıtlar kümesinden her kayıt tek tek çekilerek sayfaya yazdırılacak

Yukarıdaki maddeler aslında bir bakıma programımızın algoritmasıdır. Bu işlemleri gerçekleştirmek için bazı yeni fonksiyonlar kullacağız. Bunlar şunlardır:

 

1) SQL Sorgularını Çalıştırma (mysql_guery)

SQL sorgularını çalıştırmak için mysql_guery($sorgu); fonksiyonu kullanılır. Yazılan SQL sorgusuna göre geriye dönen değer farklı olabilir. Örneğin yazılan sorgu; karakter setini belirtme gibi bir bildirim ise, kayıt girme, güncelleme yada silme gibi bir işlem ise geriye, işlemin gerçekleşip gerçekleşmediğini ifade eden true yada false değeri döner. Eğer ki bir listeleme sorgusu yapılmış ise geriye listelenen kayıtlar döner. Dönen kayıtlar aşağıdaki gibi bir değişkene ($sonuc) atanır.

$sonuc=mysql_query($sorgu);

 

2) Çekilen Kayıtları Alma

mysql_query ile çekilen kayıtların atandığı değişkenden ($sonuc) kayıtları tek tek almak için 4 farklı fonksiyon kullanılır. Bu fonksiyonlardan dönen değerler aşağıdaki gibi bir değişkene ($kayit) atanır.

  • $kayit=mysql_fetch_assoc($sonuc);  >$sonuc değişkenindeki kayıtlar kümesinden bir kayıt çeker. Geriye bir dizi döner. Yani $kayit değişkeni bir dizi değişkendir. Bu dizide veritabanındaki kayıtların bilgileri saklanır. Bu bilgilere ulaşmak için dizi indisi olarak sadece alan adları kullanılır.
    Örneğin; öğrenci adını ekrana yazdırmak için echo $kayit["adi"]; komutu kullanılır.
     
  • $kayit=mysql_fetch_row($sonuc); > $sonuc değişkenindeki kayıtlar kümesinden bir kayıt çeker. Geriye bir dizi döner. Bu dizide veritabanındaki kayıtların bilgileri saklanır. Bu bilgilere ulaşmak için dizi indisi olarak sadece 0,1,2,3,... şeklindeki sayılar kullanılır. Tablodaki birinci alana karşılık 0, ikinci alana karşılık 1, ....... kullanılır.
    Örneğin; ikinci alan olan öğrenci adını ekrana yazdırmak için echo $kayit[1]; komutu kullanılır.
     
  • $kayit=mysql_fetch_array($sonuc); > $sonuc değişkenindeki kayıtlar kümesinden bir kayıt çeker. Geriye bir dizi döner. Bu dizide veritabanındaki kayıtların bilgileri saklanır. Bu bilgilere ulaşmak için dizi indisi olarak hem alan adları hem de 0,1,2,3,... şeklindeki sayılar kullanılılır. Tablodaki birinci alana karşılık 0, ikinci alana karşılık 1, ....... kullanılır.
    Örneğin; ikinci alan olan öğrenci adını ekrana yazdırmak için echo $kayit["adi"]; komutu yada echo $kayit[1]; komutu kullanılır.
     
  • $kayit=mysql_fetch_object($sonuc); > $sonuc değişkenindeki kayıtlar kümesinden bir kayıt çeker. Geriye bir nesne döner. Bu nesnede veritabanındaki kayıtların bilgileri saklanır. Bu bilgilere ulaşmak için alan adları kullanılır.
    Örneğin; öğrenci adını ekrana yazdırmak için echo $kayit->ogrenci_adi; komutu kullanılır.

 

Örnek: Veritabanındaki öğrencilerden bir kaçının bilgilerini ekranda gösterelim.

<html>
   <head>
      <title>Kayıt Listeleme</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   </head>
   <body>
   <?php
	$sunucu="localhost";
	$kullanici="root";
	$sifre="0320";
	$veritabani="okul";

   if (@mysql_connect($sunucu,$kullanici,$sifre)==false){
      $mesaj="<b>Hata</b>: Bağlantı başarısız!<br>";
      $mesaj.="<b>Hata açıklaması</b>: ".mysql_error();
      die($mesaj);
   }

   if (@mysql_select_db($veritabani)==false){
      $mesaj="<b>Hata</b>: $veritabani veritabanı seçilemedi!<br>";
      $mesaj.="<b>Hata açıklaması</b>: ".mysql_error();
      die($mesaj);
   }
	
	// kullanılacak karakter seti bildiriliyor
	mysql_query("set names utf8"); 
	
	// tüm kayıtlar veritabanından çekiliyor
	$sonuc=mysql_query("select * from ogrenciler");
	
	//Çekilen öğrenciler 4 farklı yöntem ile ekrana yazdırılacak
	// ----------------1---------------------
	$kayit=mysql_fetch_assoc($sonuc);
	echo $kayit["ogrenci_no"],"-",$kayit["adi"]," ",$kayit["soyadi"],"-",$kayit["cinsiyeti"],"-",$kayit["sinif_kodu"],"<br>";
	
	// ----------------2---------------------
	$kayit=mysql_fetch_row($sonuc);
	echo $kayit[0],"-",$kayit[1]," ",$kayit[2],"-",$kayit[3],"-",$kayit[4],"<br>";
	
	// ----------------3---------------------
	$kayit=mysql_fetch_array($sonuc);
	echo $kayit["ogrenci_no"],"-",$kayit["adi"]," ",$kayit["soyadi"],"-",$kayit["cinsiyeti"],"-",$kayit["sinif_kodu"],"<br>";
	echo $kayit[0],"-",$kayit[1]," ",$kayit[2],"-",$kayit[3],"-",$kayit[4],"<br>";
	
	// ----------------4---------------------
	$kayit=mysql_fetch_object($sonuc);
	echo $kayit->ogrenci_no,"-",$kayit->adi," ",$kayit->soyadi,"-",$kayit->cinsiyeti,"-",$kayit->sinif_kodu,"<br>";
   ?>
</body>
</html>

Dikkat ederseniz her mysql_fetch olayında bir sonraki kayıt çekilmektedir. Eğer bunu bir döngü içinde yaparsak tüm kayıtları ekranda gösterbiliriz. Döngü olarak for döngüsü kullanırsanız öncelikle kayıt sayısının bulup, döngüyü kayıt sayısına kara döndürmelisiniz. yada while döngüsünü kullanıp koşul olarak kayıt çekilebildiği sürece dön ifadesini kullanmalısınız. Çoğu zaman bu işlem while döngüsü ile yapılır.

Örneklerimizde, kayıtları çekmek için indis olarak hem alan adlarını hem de sayıları destekleyen mysql_fetch_array fonksiyonunu kullanacağız.

 

Örnek: Veritabanındaki tüm öğrencileri ekranda listeleyelim. Örneğimizde hem for hem de while döngüsünü kullanacağız.

<html>
   <head>
      <title>Kayıt Listeleme</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   </head>
   <body>
   <?php
	$sunucu="localhost";
	$kullanici="root";
	$sifre="0320";
	$veritabani="okul";

   if (@mysql_connect($sunucu,$kullanici,$sifre)==false){
      $mesaj="<b>Hata</b>: Bağlantı başarısız!<br>";
      $mesaj.="<b>Hata açıklaması</b>: ".mysql_error();
      die($mesaj);
   }

   if (@mysql_select_db($veritabani)==false){
      $mesaj="<b>Hata</b>: $veritabani veritabanı seçilemedi!<br>";
      $mesaj.="<b>Hata açıklaması</b>: ".mysql_error();
      die($mesaj);
   }
	
	// burada for döngüsü kullanılıyor
	mysql_query("set names utf8"); 
	$sonuc=mysql_query("select * from ogrenciler");
	$kayit_sayisi=mysql_num_rows($sonuc);
	for ($i=1;$i<=$kayit_sayisi;$i++){
		$kayit=mysql_fetch_array($sonuc);
		echo $kayit["ogrenci_no"],"-",$kayit["adi"]," ",$kayit["soyadi"],"-",$kayit["cinsiyeti"],"-",$kayit["sinif_kodu"];
		echo "<br>-------------------------------<br>";
	}
	
	echo "<hr>";
	
	// burada while döngüsü kullanılıyor
	mysql_query("set names utf8"); 
	$sonuc=mysql_query("select * from ogrenciler");
	while($kayit=mysql_fetch_array($sonuc)){
		echo $kayit["ogrenci_no"],"-",$kayit["adi"]," ",$kayit["soyadi"],"-",$kayit["cinsiyeti"],"-",$kayit["sinif_kodu"];
		echo "<br>-------------------------------<br>";
	}
   ?>
</body>
</html>

Yapılan sorgudan kaç tane kayıt döndüğünü bulmak için mysql_num_rows($sonuc); fonksiyonu kullanılır.


Bu site meslek liselerinde bilişim bölümü web programcılığı dalında okutulan internet programcılığı dersine yardımcı olması için tasarlanmıştır. İletişim için iletisim@phpdefteri.com
Apache PHP MySQL PhpMyAdmin EasyPHP Xampp AppServ Wamp W3School

www.phpdefteri.com © 2010