Bu bölüme kadar anlatılanlarla tüm okuyucular ilk form denemelerini ve daha fazlasını yapabilecek kadar bilgiye sahip oldular. Anlatılanların hepsini bir örnek üzerinde pekiştirerek ilk Web formu hazırlamak için daha önceki örneklerde değinilen kullanicilar adındaki ad, soyad, e-posta ve cinsiyet bilgilerinin depolandığı tabloyu kullanılacak. Önceki bölümlerde kullanıcıdan adım ve soyadını alarak ekrana yazmak için kullanılan PHP dosyası. Bu sayfa çok önemli ve mutlaka dikkatlice inceleyiniz.
<? if ($gonderim) { echo ("Merhaba... Adınız : $ad, soyadınız da :$soyad"); } else { ?> <form action="form.php" method="post"> Ad :<input type="text" name="ad" size="6" maxlength="16"> Soyad :<input type="text" name="soyad" size="6" maxlength="16"> <input type="submit" name="gonderim" value="Gönder"> </form> <? } ?>
şeklindeydi. Bu formdan sadece ad ve soyad bilgileri alınıyordu. E-posta ve cinsiyet bilgilerim eklemek ve üzerinde görsel bir iki değişiklik yapmak için aşağıdaki hale dönüştürülür. Aşağıdaki kodda halen MySQLle ilgili en ufak bir komut yok, sadece formdan alınan bilginin doğruluğunu denemek için ekrana echo komutuyla PHP değişkenlerinin değerleri gönderiliyor.
<? if ($gonderim) { echo ("Merhaba... Adınız : $ad, soyadınız da :$soyad Cinsiyet : $cinsiyet, E-posta : $eposta") ; } else { ?> <form action="form.php" method="post"> Ad :<input type="text" name="ad" size="16" maxlength="16"><br> Soyad :<input type="text" name="soyad"size="16" maxlength="16"><br> E-posta :<input type="text" name="eposta" size="50" maxlength="50"> <br> Cinsiyet :e<input type="radio" name="cinsiyet" value="e"> k<input type="radio" name="cinsiyet" value="k"> <br><br> <input type="submit" name="gonderim" value="Gönder"> </form> <? } ?>
Yukarıdaki basit bilgi formundaki bilgiyi MySQLe kayıt etmek için tek yapılması gereken mysql_query() komutu içeren bir satır eklemek olacaktır. Bunun için echo komutunun altındaki satıra MySQL veritabanı sunucusuna bağlantı için gereken komutlar ve sorgu cümleciklerinin eklenmesi yeterlidir.
mysql_connect("localhost","root","şifre") ; mysql_select_db("baslangicdb"); mysql_query("insert into kullanicilar, (kullaniciid, ad, soyad, eposta, cinsiyet) values (null,$ad, $soyad, $eposta, $cinsiyet)") ;
Yukarındaki komutlarla önce MySQL veritabanı yazılımına root kullanıcı adı ve şifre şifresiyle bağlanılır. Daha sonra tüm sorguların gönderileceği baslangicdb veritabanı mysql_select_dbs komutuyla seçilir. Veri girmek için gerekli olan insert sorgusu da mysql_query() komutuyla gönderildiğinde, veri girişi tamamlanmış olur. Olası kodlama hatalarını fark edebilmek için, en alta aşağıdaki hata denetleme satırının yazılması faydalı olabilir.
if (mysql_error()) { echo ("MySQL hatası oluştu. Hata: ") ; echo mysql_error() ; }
Bazı durumlarda veritabanına bağlantı kullanıcı adı veya şifre yanlışlığı üzerinden gerçekleşmez. Bu durumda bağlantı gerçekleşmediği mesajını kullanıcı istenilen bir mesajla değiştirmek mümkündür.
@mysql_connect("localhost","root","şifre") or die("MySQLe ulaşamadım...");
@mysql_select_db("baslangicdb") or die("Veritabanına ulaşamadım...");
Yapılması gereken şey mysql_connect ve mysql_select_db komutlarının basma hata oluşsa bile hata mesajı göstermemeleri için @ işareti konulur. Bağlantının gerçekleşmediği durumda PHPnin alternatif bir yol izleyerek çalıştıracağı komut or kalıbıyla belirtilir. Hata mesajı vererek kullanıcının uyarılması ve PHP dosyasının çalıştırılmasına son vermek için daha önceden de anlatılan die() komutu kullanılır. Form, bu değişiklik ve hata kontrol kalıplarının yerleştirilmesinden sonra
<? if ($gonderim) { @mysql_connect("localhost","root","şifre") or die("MySQLe ulaşamadım..."); @mysql_select_db("baslangicdb") or die("Veritabanına ulaşamadım..."); echo ("Merhaba... Adınız : $ad, soyadınız da : $soyad Cinsiyet : $cinsiyet, E-posta : $eposta") ; mysql_query("insert into kullanicilar (kullaniciid, ad, soyad, eposta, cinsiyet) values (null,$ad, $soyad, $eposta, $cinsiyet)") ; if (mysql_error()) { echo ("MySQL hatası oluştu. Hata: "); echo mysql_error(); } } else { ?> <form action="form.php" method="post"> Ad:<input type="text" name="ad" size="16" maxlength="16"><br> Soyad:<input type="text" name="soyad" size="16" maxlength="16"><br> E-posta:<input type="text" name="eposta" size="16"maxlength="16"> <br> Cinsiyet :e<input type="radio" name="cinsiyet" value="e"> k<input type="radio" name="cinsiyet" value="k"> <br><br> <input type="submit" name="gonderim" value="Gönder"> </form> <? } ?>
şekline dönüşür. Çoğunlukla bir Web sitesinde veritabanı bağlantılarının tüm PHP dosyalarında kullanılacağı varsayılır. PHP dosya sayısı artınca, MySQL veritabanının kullanıcı adı şifresinin değiştirildiği durumda tüm PHP dosyalarına teker teker girilerek kullanıcı adı ve şifre bilgilerinin değiştirilmesi gerekebilir. Bu yüzden PHPde veritabanı bağlantıları ve diğer tüm dosyalarda ortak olabilecek komutların bir dosyada toplanması kullanışlı olabilir. Yukarıdaki formda yer alan
@mysql_connect("localhost","root","sifre") or die("MySQLe ulaşamadım..."); @mysql_select_db("baslangicdb") or die("Veritabanına ulaşamadım...");
satırları kitaportakkoy.php dosyası içine yazılarak değişiklik durumunda tek dosyadan tüm şifre ve diğer bilgileri değiştirebilmek için forma
include("kitaportakkoy.php");
satırıyla dahil edilir, include komutu giderek kalabalıklaşan Web yazılımı projelerinde PHP kodlarının kolay ve anlamlı parçalar halinde yönetilebilmesinde oldukça önemli rol oynar. Basit forma biraz daha etkileşim katmak için formu dolduran kullanıcıya, MySQL tarafından veri girişi esnasında ona atanan otomatik sıra numarasını da yazabilmek mümkündür. Bunun için koda
$kullaniciid = mysql_insert_id(); echo ("<br>Sizin veritabanındaki sıra numaranız :$kullaniciid") ;
satırları eklenerek en son
<? if ($gonderim) { include ("kitaportakkoy.php") ; echo ("Merhaba... Adınız : $ad, soyadınız da :$soyad Cinsiyet : $cinsiyet, E-posta : $eposta"); mysql_query("insert into kullanicilar (kullaniciid, ad, soyad, eposta, cinsiyet) values (null,$ad, $soyad, $eposta, $cinsiyet)") ; if (mysql_error()) { echo ("MySQL hatası oluştu. Hata: "); echo mysql_error() ; } $kullaniciid = mysql_insert_id() ; echo ("<br>Sizin veritabanındaki sıra numaranız : $kullaniciid") ; } else { ?> <form action="form.php" method="post"> Ad:<input type="text" name="ad" size="16" maxlength="16"><br> Soyad:<input type="text" name="soyad" size="16" maxlength="16"><br> E-posta :<input type="text" name="eposta" size="16" maxlength="16"> <br> Cinsiyet :e<input type="radio" name="cinsiyet" value="e"> k<input type="radio" name="cinsiyet" value="k"> <br><br> <input type="submit" name="gonderim" value="Gönder"> </form> <? } ?>
haline getirilir. Veritabanı bağlantılarında bir sorun olması durumunda hata mesajının değiştirilmesi için die komutu kullanılabilir. Daha profesyonel bir görünüm için hata mesajını include() komutu yardımıyla bir dosyaya da yönlendirebilmek mümkün. MySQLe bağlantı komutları PHPde aslında birer değişkenle de eşleştirilebilir. Bağlantı kurulup kurulmadığını anlamak için, bu değişkenlerin aldıkları değerlerin denetlenmesiyle hata mesajı ya da farklı tepkiler üretebilmek mümkündür.
<? $sunucu = @mysql_connect("localhost","root","sifre"); $veritabani = @mysql_select_db("baslangicdb"); if (($sunucu < 1) or ($veritabani < 1)) { include ("sunucuhatasikoy.php") ; exit; } ?>
Yukarıdaki PHP kodu kitaportakkoy.php dosyası içerisine yerleştirildiğinde hata oluşması durumunda PHPyi sunucuhatasikoy.php dosyasını çağırmaya yönlendirecektir. Bu dosya istenilen biçimde bir hata mesajını barındıracak şekilde kullanıma bağlı olarak düzenlenebilir.
|
Php Veri Kayıt Örneği (Basit Form) mysql kayıt yapmak ... Form Yöntemi Kullanarak Mysqlye Veri Kaydı Girme Hakkında