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:
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);
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.
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