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:

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.

 

Ö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.