Merhaba..
Bu derste Mysql veri tabanındaki verileri php sayfada nasıl listeleyeceğimizi ve kullanacağımızı anlatmaya çalışacağım. Bu işlem veri çekme olarakta isimlendirilebilir. Örneğin sitem veri tabanındaki üyeler tablosu'nun içeriği aşağıdaki gibi olsun.
Veri tabanı ile çalışacağımız için öncelikle veri tabanı bağlantısını yapmamız gerekiyor.
<?php
// baglan.php
$host="localhost";
$user="root";
$pass="";
$db="sitem";
//mysql bağlantı
$baglan=@mysql_pconnect($host,$user,$pass);
//veri tabanına bağlantı
$vt_baglanti=mysql_select_db($db);
//mysql türkçe problemi için
mysql_query("SET NAMES UTF8");
?>
Veri tabanı işlemlerinde yaptığımız gibi yine yukarıdaki baglan.php sayfasını uyeler.php sayfasına include edeceğiz..
<?php include ("baglan.php"); ?>
Mysql veri tabanındaki verileri listelemek için önce verileri seçip ,veri tabannındn çekmemiz gerekiyor. Bunun içinde select * from table cümlesi ile tüm kayıtlara bağlanıp while döngüsü kullanıyoruz. select --> seç * --> herşeyi from table --> tablodan
<?php
include ("baglan.php");
$uyeler=mysql_query("select * from uyeler");
?>
Yukarıdaki cümle ile, üyeler tablosundaki tüm kayıtlar bir dizi halinde $uyeler değişkenine alınmış olur. Burada yıldız yerine sadece istediğimiz alanlarıda yazabiliriz. O zaman sadece seçtiğimiz alan bilgilerini almış oluruz.
<?php
include ("baglan.php");
$uyeler=mysql_query("select adsoyad,yas from uyeler");
?>
Yukarıdaki cümle ile üyeler tablosundaki verilerden sadece asdoyad ve yas alanlarındaki bilgileri almış oluyoruz. Ama biz bu derste tüm üye verilerini kullanacağımız için "*" işaretinni kullanacağız. Dizideki kayıt sayısını ise mysql_num_rows ile öğrenebiliriz.
<?php
include ("baglan.php");
$uyeler=mysql_query("select * from uyeler");
$toplam_uye=mysql_num_rows($uyeler); // kayıt sayısı
?>
Tablodaki toplam kayıt sayısı $toplam_uye değişkenine aktarılmış olur. Sayfada istediğimiz yere yazdırabiliriz.
Kayıtları döngü içerisinde tek tek almak için ise yukarıda yazdığım gibi while döngüsü ve mysql_fetch_array yapısını kullanacağız.
<meta charset="utf-8">
<?php
include ("baglan.php");
$uyeler=mysql_query("select * from uyeler"); // tüm üyelerin bilgileri seçildi
$toplam_uye=mysql_num_rows($uyeler); // tablodaki toplam üye sayısı
echo "<h3>Toplam ".$toplam_uye." Üye</h3>";
while($uye=mysql_fetch_array($uyeler)) {
echo $uye["id"]." ";
echo $uye["adsoyad"]." ";
echo $uye["mail"]." ";
echo $uye["sifre"]." ";
echo $uye["yas"]." ";
echo $uye["resim"]." <br>";
}
?>
mysql_fetch_array ile tablodaki satırlar tek tek $uye dizi değişkenine aktarııyor. while döngüsü içinde olduğu içinde , tüm kayıtlar döngü içerisinde sırayla alınmıi oluyor. PHP dizilerinde dizi içeiğini yazdırmak için $dizi["alan"] yapısı kullanılır. Dolayısıyla bu şekilde her kaydın (satırın,üyenin) bilgilerini tek tek alıp yazdırmış oluyoruz. Kodlar çalıştığında,uyeler.php sayfasının ekran görüntüsü aşağıdaki gibi olacaktır.
Türkçe karakterlerin düzgün görüntülenebilmesi için sayfaya meta etiketi eklemeyi unutmayın... Verileri alabilmeyi öğrendikten sonra, sayfa ve çalışmanıza uygun şekillerde istediğiniz gibi kullanabilirsiniz..
Veri tablosundaki sadece belirleyeceğimiz verileri çekebilmek için sql cümlesine WHERE takısını ekliyoruz.. Örneğin sadece Id'si 15 olan veriye bağlanmak, adı erkan olan kayıtlara bağlanmak gibi ...
Veri tablosunda herhangi bir id'nin bilgilerini çekip yazdırmak istediğimizde where takısı le ID numarasını belirtmemiz gerekir. ID'ler benzersiz alanlardır yani her kayıtta farklı olur. Dolayısıyla silme,güncelleme,proifl sayfası gibi işlemlerde ID bilgisine göre veri çekmek gerekir. Kullanımına bakalım..
<?php
include ("baglan.php");
$uyeler=mysql_query("select * from uyeler where id=34");
// yada
include ("baglan.php");
$id=34;
$uyeler=mysql_query("select * from uyeler where id=".$id);
?>
Yukarıdaki cümle ile, üyeler tablosundaki sadece ID'si 34 olan kayda (YILMAZ ÖZDİL) bağlanılmış olur. Id bilgisi genelde değişkenle gelir. Bu durumda metin birleştirme yapılır. Bağlanılan kaydın bilgileri ise yine while döngüsü ile yazdırılabilir.
ID'SI 34 OLAN KAYDI GETİRME
<?php
include ("baglan.php");
$id=34;
$uyeler=mysql_query("select * from uyeler where id=".$id);
while($uye=mysql_fetch_array($uyeler)) {
echo $uye["id"]." ";
echo $uye["adsoyad"]." ";
echo $uye["mail"]." ";
echo $uye["sifre"]." ";
echo $uye["yas"]." ";
echo $uye["resim"]." <br>";
}
?>
Yukarıda yine sadece YILMAZ ÖZDİL'in (id=34) bilgileri alınmış olur.
Veri tablosunda bir veya birden fazla alanın değerine göre kayıtları filtreleyebiliriz. Örneğin yaşı 100den küçük olan , adı Sabahattin ali olan vs.. bunun için yine where takısı ile değeri belirtmemeiz gerekir. Örneğin yaşı 100'den küçük üyeleri yazdıralım..
YAŞI 100'DEN KÜÇÜK OLAN KAYITLARI GETİRME
<?php
include ("baglan.php");
$uyeler=mysql_query("select * from uyeler where yas<100");
while($uye=mysql_fetch_array($uyeler)) {
echo $uye["id"]." ";
echo $uye["adsoyad"]." ";
echo $uye["mail"]." ";
echo $uye["sifre"]." ";
echo $uye["yas"]." ";
echo $uye["resim"]." <br>";
}
?>
Üyeler tablosunda yaşı 100'den küçük 4 üye olduğu için ekranda 4 kayıt yazılacaktır. Where ile birden fazla şart belirleyebiliriz. Bunun için AND ( && ) ve OR ( || ) operatörülerinden yararlanırız. Örneğin adı CAN YÜCEL yada Sabahattin ALİ olan kayıtları getirmek istersek , SQL cümlemiz ağaşıdaki gibi olmalıdır.
ADI "CAN YÜCEL" VEYA "SABAHATTİN ALİ" OLAN KAYITLAR
<?php
include ("baglan.php");
$uyeler=mysql_query("select * from uyeler where adi='Can YÜCEL' or adi='Sabahattin ALİ' ");
while($uye=mysql_fetch_array($uyeler)) {
echo $uye["id"]." ";
echo $uye["adsoyad"]." ";
echo $uye["mail"]." ";
echo $uye["sifre"]." ";
echo $uye["yas"]." ";
echo $uye["resim"]." <br>";
}
?>
Adı CAN YÜCEL yada Sabahattin ALİ olan 2 üye olduğu için ekranda 2 kayıt yazılacaktır.
Bir örnek daha yapalım , şifresi "leylimley" VE adı Zülfü LİVANELİ olan kayıtları getirelim.
ŞİFRESİ "LEYLİMLEY" VE ADI "ZÜLFÜ LİVANELİ" OLAN KAYITLAR
<?php
include ("baglan.php");
$uyeler=mysql_query("select * from uyeler where adi='Zülfi LİVANELİ' and sifre='leylimley' ");
while($uye=mysql_fetch_array($uyeler)) {
echo $uye["id"]." ";
echo $uye["adsoyad"]." ";
echo $uye["mail"]." ";
echo $uye["sifre"]." ";
echo $uye["yas"]." ";
echo $uye["resim"]." <br>";
}
?>
Bu kez bir VE cümlesi olduğu için belirtilen şartların tümünün sağlanması gerekecektir. Kullancıı Adı ve Şifre işlemlerinde bu yapı kullanılır.
Mysql veri tabanındaki verileri sql cümlesine ekleyeceğimiz "order by" takısıyla belirli bir alana göre sırayalayabiliriz. Order by kullanılmadığı durumlarda sıralama AI (auto ıncrement) seçilen alana göre yapılır. Genelde ID alanı olur. Gelen verilerin aratarak yada azalarak (sondan başa , baştan sona , alfabaetik A-Z yada alfabetik Z-A) sıralanması için ise order by takısından sonra asc veya desc takılarını kullanıyoruz. Asc yada desc belirtilmz ise sıralama aratarak yani baştan sona yapılır.
ASC -- ARTARAK (BAŞTAN SONRA yada ALFABETİK A-Z) İlk eklenen ilk başta görünür..
DESC -- AZALARAK (SONDAN BAŞA yada ALFABETİK Z-A) Son eklenen ilk başta görünür..
Örneklerle farklı veri sıralamalarına bakalım..
DEFAULT SIRALAMA
$uyeler=mysql_query("select * from uyeler");
order by yada asc ve desc takıları belirtilmediği için , üyeler ID'ye göre artarak yani baştan sona şeklinde sıralanır. Yukarıdaki resimde olduğu gibi....
HERHANGİ BİR ALANA GÖRE SIRALAMA
Order by takısıyla verilerin istenen alan baz alınarak sıralanmasını sağlayabiliriz. Sonuna ekleyeceğimiz asc ve desc belirteçleri ile de sıralama yönü ayarlayabiliriz... Bakalım...
$uyeler=mysql_query("select * from uyeler order by id desc");
Veriler , order by id takısından dolayı "id" alanına göre , desc eklendiği için ise azalarak (sondan başa) sıralanır..
$uyeler=mysql_query("select * from uyeler order by adsoyad");
Veriler , order by adsoyad takısından dolayı "adsoyad" alanına göre , asc ve desc belirtilmediği için ise artarak (alfabetik A-Z) sıralanır..
$uyeler=mysql_query("select * from uyeler order by adsoyad desc");
Veriler , order by adsoyad takısından dolayı "adsoyad" alanına göre , desc eklendiği için ise azalarak (alfabetik Z-A) sıralanır..
$uyeler=mysql_query("select * from uyeler order by mail asc");
Veriler , order by mail takısından dolayı "mail" alanına göre , asc eklendiği için ise artarak (alfabetik A-Z) sıralanır..
Görüşmek üzere..
Toplam 33 Makale
Lütfen yorumlarınızda saygılı, yapıcı ve anlaşılır bir dil kullanın.
Küfür, hakaret ya da spam içerikler onaylanmaz.