Böyle yazarsan boş bir konudan başka bi anlamı kalmaz nedir ne işe yarar neler yapilir bunları yazmak lazim. Microsoftta calismiyoruz fonksiyona bakip kimse anlamaz.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Aşşağidaki gibi bir anlatim, konu hakkında hic bilgisi olmayan insanlarin kafasinda bile fikirler doğurabilir.
PHP ile MySQL’den veri okutma konusuna sıra geldiğinde ayrıca öğrenmemiz gereken
mysql_result() MySQL’e gönderilen sorgudan geri gelen bilgileri depolar.Basit anlamda
mysql_query() komurundan sonra bu komutu bilmemiz işimize yarar.Bir örnek ile öğrendiklerimizi sınıyalım.
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?
mysql_connect(“localhost”,”root”) or die (“MySQL’e bağlanamadım”);
mysql_select_db(“deneme2″) or die (“MySQL’de veritabanını bulamadım”);
$tablo=“SELECT * FROM liste “;
$sorgu=mysql_query($tablo);
$sayi=mysql_num_rows($sorgu);
print “<table align=\”center\” border=\”1\”>
<tr>
<td>Adı:</td><td>Soyadı</td><td>username</td><td>sifre</td><td>mail</td>
</tr>”;
$sayac=0;
while($sayac < $sayi){
$degiskenler = array (
1=> @mysql_result($sorgu, $sayac, “ad”),
2=> @mysql_result($sorgu, $sayac, “soyad”),
3=> @mysql_result($sorgu, $sayac, “username”),
4=> @mysql_result($sorgu, $sayac, “sifre”),
5=> @mysql_result($sorgu, $sayac, “mail”)
);
print “<tr> <td>$degiskenler[1]</td><td>$degiskenler[2]</td>
<td>$degiskenler[3]</td><td>$degiskenler[4]</td>
<td>$degiskenler[5]</td>
</tr>”;
$sayac++;
}
?>
Aslına bakarsanız birazcık zor bir örnekle okuma işlemine başladık.Bu script liste tablosunda bulunan bütün değerleri bir tabloya basıyor.Yukarda adından bahsettiğimiz
mysql_resul() komutundan hariç birde
mysql_num_rows() komutunu kulllandık.Bu komut tabloda bulunana satır sayısını verir.Şimdi scriptimizi satır satır açıklayalım.
İlk önce MySQL’imize bağlanıyor ve hangi veritabanında işlem yapacağımızı belirtiyoruz.Daha sonra tablo değişkeninde tablonun bütün değerlerini seçili duruma getiriyoruz.
mysql_query() komutu ile MySQL’e sorgu gönderiyoruz.Daha sonrada
mysql_num_rows() komutu ile MySQL’de ki satır sayısını belirliyoruz.Bundan sonrada 5 sütünlu bir tablonun açıklayıcı satırını print komutu ile yazıyoruz.Bir while döngüsü ile tablomuzun devamını yazdırmak için kaç adet satır yapacağını önceden MySQL’in satır sayısını belirleyen komutun değişkenini yani sayi değişkenini yazıyoruz.Bundan sonra bir array ile tablomuzdaki değerleri değişkenlendiriyoruz.Burada ki püf nokta mysql_resul() komutunun içerisine ilk önce sorgudan dönen sonucu giriyoruz.Daha sonra tablomuzdaki hangi satırın okunacağını belirtiyoruz.Burası while döngüsünde değilde sabit olduğunda 0 sayısını alır yani tablodaki ilk satır değerlerini okuturuz.Ama biz burada while döngüsü kullandığımızdan dolayı sayac değişkeni koyduk.Sayac değişkenide sıfırdan başlayarak tabloda ne kadar satır varsa hepsini okuyacak.En sonunda da hanci sütun değerini okuyacağımızı belirtiyoruz.Bundan sonrası da fasa fiso.
Bu yöntem, Php’nin hızını düşürecektir.Çünkü bütün satırları tek tek okuyarak dizi değişkenlerde ki değişkenlere depoluyor.Bu işin daha kolay bir yöntemi var.Bu yönteme ilerde değineceğiz.
Şimdi tablomuzdan istediğimiz bir değişkenin satırında bulunan değerleri okutacağız.Bu örnek yukardaki örnekten daha basit bir uygulamadır.
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?
mysql_connect(“localhost”,”root”) or die (“MySQL’e bağlanamadım”);
mysql_select_db(“deneme2″) or die (“MySQL’de veritabanını bulamadım”);
$tablo=“SELECT * FROM liste WHERE username=’$kullanici_adi‘ and sifre=’$parola‘”;
$sorgu=mysql_query($tablo);
$degiskenler = array (
1=> @mysql_result($sorgu, $sayac, “ad”),
2=> @mysql_result($sorgu, $sayac, “soyad”),
3=> @mysql_result($sorgu, $sayac, “username”),
4=> @mysql_result($sorgu, $sayac, “sifre”),
5=> @mysql_result($sorgu, $sayac, “mail”)
);
if($degiskenler[3]==“$kullanici_adi” && $degiskenler[4]==“$parola“){
print “Şu anda şifreli alandasınız.”;
}
else{
print “Kullanıcı adı veya şifreniz yanlış”;
}
?>
Burada tablo değişkeninde MySQL’e username ve sifre alanlarının ikisininde doğru olması durumunda o girilen satırın değişkenlerini bize veriyor.Yani bu programa bir form eklerseniz ve bu formda iki değişkenli bir login sayfası yaparsanız girdiğiniz değerler eğer MySQL’de varsa şifreli alana girilecek.Aksi durumda program hata verecektir.Birde burada bişeyi daha belirtmekte yarar olduğunu düşünüyorum.MySQL’e gönderilen sorgudan dönene sonuçları
mysql_reslt() komutu ile alıyoruz.Bu komut, özellikle sorgu dönmediğinde browsera hata mesajı veriyor.Dolayısıyla bu hata mesajının ziyaretçilerimize gözükmesini istemeyiz.Onun için bu komutun başına @ işareti koyuyoruz.Önceden açıkladığımız gibi bu @ işareti program hata verirse browsera hata numarasını çıkarmıyor.
MySQL’de kullanmamızda yarar olduğunu düşündüğüm
mysql_close() komutu vardır.Bu komut MySQL’e sağlamış olduğumuz bağlantıyı keser.PHP ile MySQL’e veritabanı açmamız, tablo oluşturmamızda mümkün.Veritabanı açmamız için gerekli olan kod mysql_create_db() bu komutu MySQL’ bağlandıktan sonra hemen kullanarak yapabilirsiniz.Tabi bunun içerisinede tırnak içerisinde veritabanımızın adını yazmamız gerekiyor.Tablo oluşturmak içinde
mysql_query() komutu işimizi görür.Şimdi örnek bir uygulama ile işimize devam edelim.
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?
mysql_connect(“localhost”,”root”) or die (“MySQL’e bağlanamadım”);
$tablo= “CREATE TABLE tablo(
no int(10) unsigned NOT NULL auto_increment,
adi varchar(12) NOT NULL default ”,
soyadi varchar(12) NOT NULL default ”,
tel_no int(11) NOT NULL default ‘0′,
KEY no (no)
)”;
switch ($veri){
case “veritabani”;
if(mysql_create_db(“deneme3″)){
print “Veritabnı yaratıldı.Şimdi tabloyuda oluşturmak için <a href=’?veri=tablo_olustur’>tıklayın.</a>”;
}else{
print “Veritabanı yaratılamadı.”;
}
break;
case “tablo_olustur”;
@mysql_select_db(“deneme3″);
if(mysql_query($tablo)){
print “Tablonuzda yaratıldı”;
}else{
print “Tablo yaratılamadı”;
}
break;
default:
print ”
<form action=’?veri=veritabani’ method=’post’>
<input type=’submit’ value=’Veritabanını Oluştur’>
</form>”;
}
?>
Bu scripti kaydedip adım adım ilerlediğinizde deneme3 adında bir veritabanı yaratıyor.İçerisinede tablo adında bir de tablo yerleştiriyor.
Önce
MySQL’e bağlanıyoruz.Daha sonra yapacağımız tablonun kodunu tablo değişkenine giriyoruz.Bu tablo kodunda bilmediğimiz bir unsuru açıklayayım.Dikkat ettiyseniz en başta
unsigned not null auto_increment ve sonunda
KEY no (no) yazısı var.Bu
MySQL’e girilen satırları saydırmaya yarar.Yani no diye bir sutun oluşturuyoruz ve MySQL’e her girilen bilgide 1 2 3 diye tabloda kaç adet veri girildiğiniz gösterir.MySQL’den veri silersenizde o eski verileride sayar.Daha sonra bir
switch deyimi ile en sonda bir form butonu koyuyoruz.Veritabanı oluşması için if deyimi ile yararlanıyoruz.Eğer veritabanı oluştu ise diğer aşamaya geçmek için bir linki tıklıyoruz.Bu linkin gösterdiği adreste il önce oluşturduğumuz veritabanına bağlanıyoruz sonra da bir if deyimi ile tablonun oluşturulup oluşturulmadığını sınıyoruz.
İlk örneğimizin hız açısından yanlış hazırlanmış bir örnek olduğunu söylemiştik.Ama bu sizin bu konuyu kavramız açısından güzel bir örnekti.Gerçi bu hız farkını öyle 300 – 500 satırlık bilgi çekerken fazla belirli olmaz.ancak 5000 ve üzeri bilgi çekmelerde hız farkı gözle gürülebilir.Ama siz yinede hızlı çalışan örneklerden yararlanın.
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?
mysql_connect(“localhost”,”root”) or die (“MySQL’e bağlanamadım”);
mysql_select_db(“deneme2″) or die (“MySQL’de veritabanını bulamadım”);
$tablo=“SELECT * FROM liste “;
$sorgu=mysql_query($tablo);
print “<table align=\”center\” border=\”1\”>
<tr>
<td>Adı:</td><td>Soyadı</td><td>username</td><td>sifre</td><td>mail</td>
</tr>”;
while ($degiskenler = mysql_fetch_row($sorgu)):
print “<tr> <td>$degiskenler[0]</td><td>$degiskenler[1]</td>
<td>$degiskenler[2]</td><td>$degiskenler[3]</td>
<td>$degiskenler[4]</td>
</tr>”;
endwhile;
print “</table>”;
?>
Bu örneği gördüğünüz gibi ilk örnekten daha kısa ve daha anlaşılırlı.Yine
MySQL’e bağlanıyoruz ve hangi veritabanında işlem yapacağımızı gösteriyoruz.Daha sonra tablo değişkeninde tablonun hepsini işaretliyoruz.Sonrada sorgu değişkeniyle
MySQL’e sorgu gönderiyoruz.Daha donra tablomuzun açıklama satırını yapıyoruz.Bundan sonra bir döngü ile
mysql_fetch_row() komutu ile tablodaki değişkenlei bir dizi değişkenine depoluyoruz.Gördüğünüz gibi tektek
mysql_result() komutu ile sorgulamadık.Burada
mysql_fetch_row() komutu tabloda bulunan değerleri verdiğiniz izin gereğince dizi değişkenlere aktarır.Burada biz bu komutun yerine
mysql_fetch_array() komutunuda kullanabilirdik.İki komutda aynı görevi görür.
MySQL’den verileri listeleme işi için PHP 4.03 versiyonundan sonra bazı ek komutlar geliştirdi.Bunlardan biride
mysql_fetch_assoc() komutudur.Şimdi bu işi birde bu komutla gerçekleştirelim.
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<?php
mysql_connect (“mehmet”,”root”);
$result = mysql_db_query (“deneme2″,”select * from liste”);
print “<table align=\”center\” border=\”1\”>
<tr>
<td>Adı:</td><td>Soyadı</td><td>username</td><td>sifre</td><td>mail</td>
</tr>”;
while ($degiskenler= mysql_fetch_assoc ($result)) {
print “<tr> <td>$degiskenler[ad]</td><td>$degiskenler[soyad]</td>
<td>$degiskenler[username]</td><td>$degiskenler[sifre]</td>
<td>$degiskenler[mail]</td>
</tr>”;
}
mysql_free_result ($result);
?>
Burada bilmediğimiz komutların ilki
mysql_db_query() komutu tıpkı
mysql_query() komutu gibi
MySQL’e sorgu gönderir.Ama bundaki fark
mysql_select_db() komutunu kullanmadan direkt olarak önce veritabanımızın adını giriyoruz sonrada MySQL komut satırını giriyoruz.While döngüsünde ise
mysql_fetch_assoc() komutunu kullandık.Bu komut diğer dizi değişkenlerinden farkı dizi değişkenlerini sıralarken numaralandırma kullanmıyorda direkt sutun adlarını kullanıyor.Döngüden hemen sonra
mysql_free_result() komutunu kullanmamızın nedeni hafızaya toplanan dizi değişkenlerini hafızadan boşaltmaktır.Bu komutu yukardada kullanmanızda fayda vardır.Tabi bu değişkenleri aynı sayfada bir yerlerde kullanmayacaksanız.
İyi calismalar...
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.