0
php-mysql i̇lişkisi
böylece, mysql ile bir veritabanı dosyası oluşturma işlemi bitmiş oldu. bir php programı yazarak bu veritabanındaki kayıtları okutabiliriz. bunu yapmadan önce yine hızlı şekilde php-mysql ilişkisinini sağlayan fonksiyonlara gözatalım.
php programlarımızda veritabanından yararlanabilmek için programın önce web sunucusu aracılığıyla veritabanı dosyası ile bağlantı kurması gerekir. başka bir deyişle, php progrdıbının veri ile arasında bir yol açması gerekir. mysql açısından ise bu bağlantı, veri sunucusunda yeni bir oturum açılması anldıbına gelir. i̇ki program arasındaki bu ilişkiyi php'nin mysql_connect() fonksiyonu yapar. bu fonksiyonun alabileceği üç parametre vardır:
$veri_yolu = mysql_connect ("localhost" , "root" , "parola" );
burada "localhost" yerine mysql progrdıbının parçası olarak çalıştığı sunucunun adı yazılır. "root" bu mysql sunucusunda açılacak oturumun kimin adına açılacağını belirter. "root" kelimesi, sunucunun yönetici olarak oturum açılacağı anldıbına gelir: "parola" kelimesinin yerine de mysql'i kurarken belirlediğimiz bir kullanıcı parolası varsa, onu yazarız. bu komutta yer alan $veri_yolu değişkeni, açılacak veri yolunun, php ile mysql veritabanı sunucusu arasındaki bağın tanıtıcı işareti olacaktır. bu bağlantı kurulduktan sonra, açtığımız veri yolundan gelecek bilgiler ve veritabanına gidecek bilgiler bu değişken aracılığıyla gerçekleşecektir. veri sunucusu ile veri yolu bağlantısı kurulursa, bu değişken değer tutar hale gelir; bağlantı kurulamazsa bu değişken boş kalır. mysql_connect() fonksiyonunun başarılı olup olmadığını bu değişkenin durumunu sınayarak anlayabiliriz. örneğin:
$veri_yolu =mysql_connect("kara-murat", "root");
if ( ! $veri_yolu) die ("mysql ile veri bağlantısı kurulamıyor!);
burada veri sunucusunun bulunduğu web sunucusunun adının "kara-murat" olduğuna, ve ooturumun "root" yetkileriyle açıldığına dikkat edin. i̇kinci satırdaki if deyimi, $veri_yolu değişkeninin değer içerip içermediğine bakıyor ve değişkende bir değer yoksa, bağlantı kurma girişini durdurarak, ziyaretçiye hata mesajı gönderiyor.
bağlantı başarıyla kurulduktan sonra php programı, bu yoldan, veritabanı sunucusuna, hangi veritabanı dosyasından yararlanmak istediğini bildirmelidir. buna veritabanı dosyası seçme işlemi denir ve mysql_select_db() fonksiyonu ile yapılır:
mysql_select_db( "veritabanın_adı" , $veri_yolu ) or die ("veritabanı açılamıyor!".mysql_error() );
bu fonksiyonun başarıyla icra edilip edilmediği fonksiyondan dönen değerin true/doğru veya false/yanlış olmasından anlarız. bu değer false ise bu deyimin die() bölümü icra edilecek ve browser penceresine veritabanının açılamadığı mesajıyla birlikte mysql'in hata mesajı da gönderilecektir. php'nin mysql veritabanını seçememesi çoğu zaman kullanıcı yetkilerinin internet ziyaretçilerini kapsayacak şekimde düzenlenmemiş olmasından kaynaklanır. bu durum gerçek web sunucusunda ortaya çıkarsa, web sunucusu yönetimine başvurmak gerekir.
şimdi bu anlattıklarımızı biraraya getiren kolay bir php programıyla biraz önce oluşturduğumuz "veri" adlı veritabanından bir birinci kişiye ait verileri "okutarak, html sayfamızda kullanalım. aşağıdaki programı, veri_01.php adıyla kaydedelim:
<?php
$veri_yolu = mysql_connect("kara-murat", "root");
if ( ! $veri_yolu ) die ("mysql ile veri bağlantısı kurulamıyor!");
mysql_select_db("veri" , $veri_yolu)
or die ("veritabanına ulaşılamıyor!" . mysql_error() );
$sonuc = mysql_query("select * from calisanlar",$veri_yolu);
printf("adı: %s<br>n", mysql_result($sonuc,0,"adi"));
printf("soyadı: %s<br>n", mysql_result($sonuc,0,"soyadi"));
printf("adresi: %s<br>n", mysql_result($sonuc,0,"adres"));
printf("görevi: %s<br>n", mysql_result($sonuc,0,"pozisyon"));
?>
burada, mysql_connect() fonksiyonu ile "kara-murat" isimli sunucuda root adına mysql sunucu ile bağ kurduktan sonra mysql_select_db() fonksiyonu ile bu bağı kullanarak veri isimli veritabanından veri çekeceğimizi bildiriyoruz. daha sonra mysql_query() fonksiyonu ile bu veritabanındaki “calisanlar” isimli tablodan “herşeyi” seçiyoruz ve seçilenleri $sonuc dizi-değişkeninde topluyoruz. $sonuc değişkenin değerlerini görüntülemek için php'nin özel bir fonksiyonu olan mysql_result() fonksiyonu kullanıyoruz. burada metin biçimlendirmekte yararlandığımız printf() fonksiyonunu daha önce tanımıştık.
mysql_query() fonksiyonu, php'nin sql dilini kullahnarak veritabanı işlemleri yapmasını sağlayan başlıca aracıdır. yukarıda kısaca değindiğimiz bütün sql komutlarıyla yazacağımız bütün "query" deyimlerini bu fonksiyon ile icra ettireceğiz. mysql_result() ise sql değil, data manipulation language (dml) denen başka bir veri-biçimlendirme dilinin inceliklerinden yararlanmamızı sağlar. burada $sonuç değişkeninde veritabanı kayıt biçiminde tutulan verileri php'nin ve dolayısıyla html'in anlayacağı biçime çeviren bu fonksiyondur.
şimdi bu programı biraz geliştirilim ve daha önce kendi kendine bilgi veren form örneğimizi buraya uygulayalım; ancak bu kez, ziyaretçimizin vereceği bilgileri veritabanına ekleyelim; ve kendi adının veritabanına eklendiğini sayfadaki tabloyu güncelleyerek bildirelim. önce şu programı, veri_02.php adıyla kaydedelim:
<?php
// form doldurulduktan sonra program buradan başlıyor
if ( isset ( $http_post_vars )) {
$veri_yolu = mysql_connect("server", "root");
if ( ! $veri_yolu ) die ("mysql ile veri bağlantısı kurulamıyor!");
mysql_select_db("veri" , $veri_yolu) or die ("veritabanına ulaşılamıyor!" . mysql_error() );
$ekle = mysql_query("insert into calisanlar ( adi , soyadi , adres , pozisyon ) values ('$adi', '$soyadi', '$adres', '$pozisyon' )", $veri_yolu );
echo ("
<html>
<head>
<title>php'de veritabanı</title>
<meta http-equiv='content-type' content='text/html; charset=iso-8859-9'>
<meta http-equiv='content-type' content='text/html; charset=windows-1254'>
");
$sonuc = mysql_query("select * from calisanlar", $veri_yolu);
echo ("
<table>
<tr>
<td><b>uzmanın adı</b></td>
<td><b>çalıştığı yer</b></td>
<td><b>görevi</b></td>
</tr>
n");
while ($satir = mysql_fetch_row($sonuc)) {
printf("<tr><td>%s %s</td><td>%s</td></td><td>%s</td></tr>n", $satir[1], $satir[2], $satir[3], $satir[4]);
}
echo ("
</table>n
<p><b>teşekkür ederiz.</b></p>
<a href='index.php'>ana sayfaya dönmek için tıklayınız</a>
");
}
// program ilk kez açılıyorsa buradan başlayacak
else {
echo ("
<html>
<head>
<title>php'de veritabanı</title>
<meta http-equiv='content-type' content='text/html; charset=iso-8859-9'>
<meta http-equiv='content-type' content='text/html; charset=windows-1254'>
</head>
<body>
<p><b>mevcut üyelerimiz</b></p>
");
$veri_yolu = mysql_connect("server", "root");
mysql_select_db("veri", $veri_yolu);
$sonuc = mysql_query("select * from calisanlar", $veri_yolu);
echo ("<table>
<tr>
<td><b>uzmanın adı</b></td>
<td><b>çalıştığı yer</b></td>
<td><b>görevi</b></td>
</tr>
n");
while ($satir = mysql_fetch_row($sonuc)) {
printf("<tr><td>%s %s</td><td>%s</td></td><td>%s</td></tr>n", $satir[1], $satir[2], $satir[3], $satir[4]);
}
echo ("
</table>n
<p></p>
<p><b>siz de aramıza katılmak ister misiniz?</b></p>
<form action='$php_self' method='post'>
<table>
<tr><td>adınız: </td><td><input type='text' name='adi'></td></tr>
<tr><td>soyadınız: </td><td><input type='text' name='soyadi'></td></tr>
<tr><td>i̇ş yeriniz: </td><td><input type='text' name='adres'></td></tr>
<tr><tdalign='left'>göreviniz: </td><td><input type='text' name='pozisyon'></td></tr>
<tr><td align='center'><input type='submit' value='defteri imzala!'></td><td align='center'><input type='reset' value='tümünü sil!'></td></tr>
</table>
</form>
</body>
</html>
");
}
?>
program, ilk kez çalıştığında, çalışmaya ikinci yarısındaki else() deyiminden itibaren icra ediliyor; ziyaretçilerimize mevcut üyelerimizin listesini veriyor ve üye olmak isteyip istemediğini soruyor. arzu edenin üye olabilmesi için gerekli form'u da sunuyoruz.
Tümünü Göster