PHP Programlama
Transkript
PHP Programlama
PHP Programlama 3. Bölüm Tolga GÜYER ©2009-2010 İçindekiler 3.1 Neden Veritabanı Kullanırız? 3.2 MySQL Veritabanı Hakkında 3.3 MySQL Veritabanının Yönetimi 3.4 PHP & MySQL 3.5 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı 3.6 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi PHP Programlama - 3. Bölüm Tolga GÜYER 2 Neden Veritabanı Kullanırız? Çünkü verilerimizi düzenli ve kalıcı olarak saklamanın başka yolu yoktur. Bildiğimiz gibi değişkenler ve sabitler, taşıdıkları değerleri programımız çalıştığı sürece saklayabilirler. Çünkü değişken ve sabitlerin veri saklamak için kullandıkları fiziksel ortam, bilgisayarın belleğidir. PHP Programlama - 3. Bölüm Tolga GÜYER 3 Neden Veritabanı Kullanırız? Oysa verilerin kalıcı olarak saklandıkları ortamlar, öncelikle sabit disk ortamlarıdır. Bu donanım birimlerde veri saklayabilmek için, verilerimizi “dosya” adı verilen yazılım öğelerine aktarmamız gerekir. PHP Programlama - 3. Bölüm Tolga GÜYER 4 Neden Veritabanı Kullanırız? Verilerimizi saklayabileceğimiz dosyaları üç kategoride gruplandırabiliriz. Bunlardan ilki, yazılımların kullandıkları kendilerine özgü formatlardaki dosyalardır. İkili (binary) türdeki bu dosyalara örnek olarak doc, pdf, xls gibi dosya biçimleri verilebilir. PHP Programlama - 3. Bölüm Tolga GÜYER 5 Neden Veritabanı Kullanırız? İkinci grupta ise metin-tabanlı (text-based) dosyalar yer alır ki veritabanlarının alternatifi olarak bu dosya türünü düşünebiliriz. Ancak bu tür dosyalarda saklanacak büyük veri yığınlarında istenilen bilgiye ulaşmanın oldukça güçleştiğini göz önünde bulundurursak, veri saklamak için çok da uygun olmadıkları anlaşılacaktır. Üçüncü grupta ise veritabanları yer almaktadır. PHP Programlama - 3. Bölüm Tolga GÜYER 6 Neden Veritabanı Kullanırız? Veritabanları çok büyük veri yığınlarını, istenildiğinde aranan bilgi ya da bilgilere en kısa sürede ulaşılabilecek şekilde tasnif ederler. Bunun için kullandıkları temel veri saklama birimleri, tablolardır. Tablolar, bildiğimiz anlamdaki çizelgelerden çok farklı değildir. PHP Programlama - 3. Bölüm Tolga GÜYER 7 Neden Veritabanı Kullanırız? Örneğin aşağıdaki çizelge, bir veritabanı tablosu olabilir: Sıra No Adı Soyadı Mesleği Cinsiyeti 1 Cüneyt Sancak Yıllık izninin bir kısmını kullanan köşe yazarı Erkek 2 Nilay Ulusoy Son ütücü Kadın 3 Hüseyin Korkmaz Kaplumbağa terbiyecisi PHP Programlama - 3. Bölüm Tolga GÜYER Erkek 8 Neden Veritabanı Kullanırız? Bir veritabanı bir çok tabloyu içerebilir. Her tablonun bir adı vardır. Tablodaki her bir alanın da (sütun) bir adı ve içersine yerleşecek verinin türü gibi özellikleri vardır. PHP Programlama - 3. Bölüm Tolga GÜYER 9 Neden Veritabanı Kullanırız? Bütün bu yapının oluşturulmasına veritabanının tasarımı adı verilir. Bu süreç, doğal olarak, boş bir veritabanının oluşturulması ile başlar. Ardından tablolar ve bu tablolarda yer alacak alanlar ve bu alanların özelliklerinin atanması, dizin oluşturma işlemleri, anahtarların belirlenmesi gibi işlemler gelecektir. PHP Programlama - 3. Bölüm Tolga GÜYER 10 Neden Veritabanı Kullanırız? Veritabanları sadece verilerin tasnif edilmesi için gereken altyapının oluşturulduğu yazılımlar değildir. Veriye en kısa sürede ulaşmak için kullandıkları çeşitli algoritmik yöntemler, veri kapasitesi, veri güvenliği, programlama desteği gibi daha bir çok özellik, bu yazılımlarda standart olarak yer almaktadır. PHP Programlama - 3. Bölüm Tolga GÜYER 11 Neden Veritabanı Kullanırız? Farklı veritabanı yazılımlarını birbirlerinden ayıran farklar da yukarıda sayılan özelliklerinden kaynaklanmaktadır. Örneğin Microsoft Access yazılımı da bütün standart özelliklere sahip bir veritabanı yazılımı olmasına karşın, veri kapasitesi ve güvenliği konularındaki sınırlılıkları nedeniyle çok fazla verinin işlenmesi gerektiği profesyonel uygulamalarda tercih edilmemektedir. PHP Programlama - 3. Bölüm Tolga GÜYER 12 Neden Veritabanı Kullanırız? Bilinen bazı kalburüstü veritabanı yazılımları olarak Oracle, MySQL, Microsoft SQL Server, IBM DB2, dBase ve Paradox sayılabilir. PHP Programlama - 3. Bölüm Tolga GÜYER 13 MySQL Veritabanı Hakkında MySQL Veritabanı yazılımın diğerlerinden ayıran en önemli fark, kuşkusuz ki açık kaynak kodlu ve ücretsiz olmasıdır. Diğer yandan, ücretsiz olarak dağıtılan yazılımların kalitelerinin de düşük olmadığına güzel bir örnek oluşturmaktadır. Şöyle ki genel olarak düşünülenin aksine, MySQL veritabanı sistemi çok büyük veri yığınlarında oldukça iyi performans sergilemektedir. PHP Programlama - 3. Bölüm Tolga GÜYER 14 MySQL Veritabanı Hakkında Yazılımın günümüzde Google ve Yahoo gibi şirketler tarafından kullanıldığını söylersek, sanırız kapasitesi hakkında bir fikir verecektir. PHP Programlama - 3. Bölüm Tolga GÜYER 15 MySQL Veritabanının Yönetimi XAMPP yazılımı bilgisayarınıza birinci bölümde anlatıldığı gibi kurulduysa, MySQL veritabanını yazılımın kontrol panelini kullanarak başlatabilirsiniz. Veritabanına ait yönetim paneline ulaşmak için ise, herhangi bir internet tarayıcısının adres çubuğuna http://localhost/phpmyadmin/ yazmak yeterli olacaktır. PHP Programlama - 3. Bölüm Tolga GÜYER 16 MySQL Veritabanının Yönetimi Ancak öncelikle localhost dizinine ulaşabilmemiz için, Apache sunucusunun da yine XAMPP kontrol panelinden başlatılmış olması gerektiğini hatırlatalım. Karşımıza MySQL localhost adlı, veritabanı yönetimiyle ilgili her türlü işlemi gerçekleştirebileceğimiz ekran gelecektir. İlk olarak bir veritabanı oluşturmakla başlayalım. PHP Programlama - 3. Bölüm Tolga GÜYER 17 MySQL Veritabanının Yönetimi Veritabanı Tanımlama PHP Programlama - 3. Bölüm Tolga GÜYER 18 MySQL Veritabanının Yönetimi (1) numaralı alana oluşturacağımız veritabanının ismini yazalım. Bu isim belirlenirken, standart değişken isimlendirme kuralları geçerli olacaktır. (2) numaralı alandan ise oluşturacağımız veritabanında yer alacak bilgilere uygun bir karakter kodlama tablosu seçilir. Türkçe için seçebileceğimiz en uygun karakter tablosu “utf8_turkish_ci” olacaktır. PHP Programlama - 3. Bölüm Tolga GÜYER 19 MySQL Veritabanının Yönetimi Oluştur butonuna bastığımızda veritabanı oluşturulur. İkinci aşama olarak ilk tablomuzu oluşturmalıyız. Her veritabanı, en az bir tablo içermek zorundadır. PHP Programlama - 3. Bölüm Tolga GÜYER 20 MySQL Veritabanının Yönetimi Tablo Oluşturma PHP Programlama - 3. Bölüm Tolga GÜYER 21 MySQL Veritabanının Yönetimi (1) numaralı alana oluşturacağımız tablonun ismini yazalım. Bu isim belirlenirken de standart değişken isimlendirme kuralları geçerli olacaktır. (2) numaralı alana ise oluşturacağımız tabloda yer alacak alanların sayısını yazalım. PHP Programlama - 3. Bölüm Tolga GÜYER 22 MySQL Veritabanının Yönetimi Git butonuna bastığımızda tablomuz oluşturulur ve her bir alanla ilgili özellikleri belirleyebileceğimiz ekranla karşılaşırız. Bu özelliklerden şu an için gereksinim duyduğumuz kadarını belirleyelim. PHP Programlama - 3. Bölüm Tolga GÜYER 23 MySQL Veritabanının Yönetimi Alanların Özellikleri PHP Programlama - 3. Bölüm Tolga GÜYER 24 MySQL Veritabanının Yönetimi PHP Programlama - 3. Bölüm Tolga GÜYER 25 MySQL Veritabanının Yönetimi (1) numaralı bölüme tanımladığımız alanın ismi yazılır. Bu isimler yine değişken isimlendirme kurallarına uyularak verilir. (2) numaralı bölümde tanımlanan alana ait veri türü seçilir. (3) numaralı bölümde ise seçilen veri türü için maksimum uzunluk değeri girilir. PHP Programlama - 3. Bölüm Tolga GÜYER 26 MySQL Veritabanının Yönetimi (4) numaralı bölüm, alana ait indeks türünün seçileceği bölümdür. Her tabloda en az bir “birincil anahtar” (primary key) alanı bulunmak zorundadır. Biz bu alanı sıra numarasının saklandığı alan olarak belirledik. “Index” özelliği alanı arama işlemlerinde hızlı ulaşım için indeksler. “Full Text” özelliği ise alana tam metin indeksi özelliği vermek için kullanılır. PHP Programlama - 3. Bölüm Tolga GÜYER 27 MySQL Veritabanının Yönetimi Daha sonra veritabanımızla ilgili herhangi bir işlem yapmamız gerektiğinde, phpmyadmin panelinin sol tarafından veritabanımız seçmemiz yeterli olacaktır. Bu yapıldığında, sağ bölümde veritabanımızla ilgili olarak gerçekleştirebileceğimiz bütün işlemleri içeren görsel tasarımlı bir ekran gelecektir. PHP Programlama - 3. Bölüm Tolga GÜYER 28 MySQL Veritabanının Yönetimi Benzer şekilde tablolarımızdaki her türlü güncellemeyi yine panelin sol tarafında veritabanımız seçili iken veritabanı adının altında yer alan tablo isimlerine tıklayarak yapabiliriz. PHP Programlama - 3. Bölüm Tolga GÜYER 29 MySQL Veritabanının Yönetimi Genel olarak, Veritabanı => Tablo => Alan hiyerarşik yapısını düşündüğümüzde, phpmyadmin panelini kullanarak ayarlarını güncellemek istediğimiz nesnelere daha rahat ulaşabiliriz. PHP Programlama - 3. Bölüm Tolga GÜYER 30 PHP & MySQL MySQL ile Bağlantı Kurma PHP programı içersinden, daha önceden oluşturduğumuz bir MySQL veritabanına, geçerli kullanıcı olan root kullanıcısı ile şifresiz olarak erişim örnekteki gibi sağlanabilir. PHP Programlama - 3. Bölüm Tolga GÜYER 31 PHP & MySQL <?php $snc1 = mysql_connect("localhost","root",""); $snc2 = mysql_select_db("adres_defteri"); if ($snc1 and $snc2) { echo "Bağlantı kuruldu ve veritabanı seçildi."; } else { echo "Sorun var!"; } ?> PHP Programlama - 3. Bölüm Tolga GÜYER 32 PHP & MySQL Burada $snc1 ve $snc1 değişkenlerinin her ikisinin de True değerini aldığı durumda, MySQL ile bağlantı kurulabilmiş ve adres_defteri adlı veritabanı seçilebilmiş demektir. Aksi durum bu iki işlemden birisinde problem var anlamına gelecektir. PHP Programlama - 3. Bölüm Tolga GÜYER 33 PHP & MySQL Biraz daha profesyonel tarzda bir bağlantı kurma kodu yazalım: <?php define("MyServer","localhost"); define("MyDatabase","adres_defteri"); define("MyUser","root"); define("MyPassword",""); function sqlConnect() { $snc1=mysql_connect(MyServer,MyUser,MyPassword); $snc2 = mysql_select_db(MyDatabase); $sncDeger = $snc1 and $snc2; return $sncDeger; } PHP Programlama - 3. Bölüm Tolga GÜYER 34 PHP & MySQL Devamı if (sqlConnect()) { echo "Bağlantı kuruldu ve veritabanı seçildi."; } else { echo "Sorun var!"; } ?> PHP Programlama - 3. Bölüm Tolga GÜYER 35 PHP & MySQL Büyük programlarda genellikle sabit ve fonksiyon tanımlamaları ayrı dosyalarda tutulur. Böylece bu kodların her programda tekrarlanmasına da gerek kalmamış olur. Bu dosyaların içerikleri include ya da require fonksiyonları kullanılarak okunur. PHP Programlama - 3. Bölüm Tolga GÜYER 36 PHP & MySQL Örneğin; <?php require("tanimlar.php"); require("fonksiyonlar.php"); sqlConnect(); ?> kodunun çalışabilmesi için sistemde, <?php define("MyServer","localhost"); define("MyDatabase","basvuru"); define("MyUser","root"); define("MyPassword",""); ?> ve, PHP Programlama - 3. Bölüm Tolga GÜYER 37 PHP & MySQL <?php function sqlConnect() { $snc1 = mysql_connect(MyServer,MyUser,MyPassword); $snc2 = mysql_select_db(MyDatabase); mysql_query("SET NAMES 'latin5'"); $sncDeger = $snc1 and $snc2; return $sncDeger; } ?> kodlarını içeren dosyaların da bulunması gerekir. PHP Programlama - 3. Bölüm Tolga GÜYER 38 PHP & MySQL Temel Veritabanı İşlemleri Veritabanlarının kullanım amacı, veri saklamak ve istenildiğinde bunlar üzerinde işlem yapmaktır. Bu işlemler ayrıntıya inildikçe çok fazla çeşitlilik gösterse de, temel olarak verilerimiz üzerinde gerçekleştirdiğimiz ortak işlemler… PHP Programlama - 3. Bölüm Tolga GÜYER 39 PHP & MySQL • • • • Kaydetme Arama Güncelleme Silme şeklinde sıralanabilir. PHP Programlama - 3. Bölüm Tolga GÜYER 40 PHP & MySQL Bu tür işlemlerin kullanılan veritabanı ya da programlama dilinden bağımsız olarak standart yöntemlerle gerçekleştirilebilmeleri amacıyla SQL (Structured Query Language) adlı dil geliştirilmiştir. Diğer bir deyişle SQL dilinin amacı, bütün veritabanlarının bütün programlama dilleri ile aynı dili konuşmalarını sağlamaktır. PHP Programlama - 3. Bölüm Tolga GÜYER 41 PHP & MySQL Bu kesimde gerçekleştireceğimiz PHP ve MySQL arasındaki iletişimlerde de SQL cümlelerini kullanacağız. PHP Programlama - 3. Bölüm Tolga GÜYER 42 PHP & MySQL Insert (Kayıt Girme) Veritabanının bir tablosuna veri eklemek için kullandığımız SQL cümlesinin genel yapısı aşağıdaki gibidir: INSERT INTO <tablo adı> (<alan adları> VALUES (<değerler>) PHP Programlama - 3. Bölüm Tolga GÜYER 43 PHP & MySQL Alan adları aynen veritabanında tanımlandığı biçimleri ile yazılmalıdır ve birbirlerinden virgül işreti ile ayrılırlar. Değerler ise karşılık gelen alan adları ile aynı sırada yazılırlar ve yine birbirlerinden virgül işreti ile ayrılırlar. Değerler yazılırken dikkat edilmesi gereken diğer bir husus da, veritabanında yerleştikleri alanın veri türü ile uyuşmalarıdır. PHP Programlama - 3. Bölüm Tolga GÜYER 44 PHP & MySQL “ogrenci1” adlı, aşağıdaki yapıda tanımlanmış bir veritabanımızın bulunduğunu varsayalım: siraNo ad soyad eposta 1 … … … 2 … … … … … … … PHP Programlama - 3. Bölüm Tolga GÜYER 45 PHP & MySQL Aşağıdaki program, bu veritabanına bir kayıt girdisi yapacaktır: <?php mysql_connect("localhost","root" , ""); mysql_select_db("ogrenci1"); mysql_query("INSERT INTO anatablo (ad , soyad , eposta) VALUES ('Tolga' , 'Güyer' , '[email protected]')"); ?> PHP Programlama - 3. Bölüm Tolga GÜYER 46 PHP & MySQL Programda, veritabanına sabit veriler aktarılmaktadır. Bunun yerine kullanıcı tarafından girilecek verilerin girilmesini sağlayabilir misiniz? PHP Programlama - 3. Bölüm Tolga GÜYER 47 PHP & MySQL Şimdi biraz daha karmaşık bir örnek geliştirelim. Bu defa veritabanımızın aşağıdaki gibi olsun: numara ad soyad vize final gecme harf basari … … … … … … PHP Programlama - 3. Bölüm Tolga GÜYER … … 48 PHP & MySQL Bu durumda öğrenciye ait numara, ad, soyad, vize ve final notları kullanıcı tarafından giriliyor. Geçme notu, vize notunun %40’ı ve final notunun %60’ı toplanarak elde ediliyor. Harf notu ise referans değer tablosuna göre yine program tarafından atanıyor. PHP Programlama - 3. Bölüm Tolga GÜYER 49 PHP & MySQL Başarı durumu, geçme notuna göre hesaplanmaktadır. Eğer geçme notu 50 ve üzerinde ise bu alana geçti, aksi halde kaldı bilgisi otomatik olarak girilmektedir. PHP Programlama - 3. Bölüm Tolga GÜYER 50 PHP & MySQL Sonuç olarak, kullanıcı tarafından girilen beş değer, programımız tarafından hesaplanan üç değerle birlikte veritabanımızın tablosuna bir kayıt girdisi olarak eklenmektedir. PHP Programlama - 3. Bölüm Tolga GÜYER 51 PHP & MySQL <form action="" method="post"> <table width="503" border="1"> <tr> <td width="169" bgcolor="#FFFFCC">Numara :</td> <td width="318" bgcolor="#33FFFF"><input size="10" type="text" name="numara"></td></tr> <tr> <td bgcolor="#FFFFCC">Ad :</td> <td bgcolor="#33FFFF"><input size="20" type="text" name="ad"></td></tr> <tr> <td bgcolor="#FFFFCC">Soyad :</td> <td bgcolor="#33FFFF"><input size="20" type="text" name="soyad"></td></tr> PHP Programlama - 3. Bölüm Tolga GÜYER 52 PHP & MySQL Devamı <tr> <td bgcolor="#FFFFCC">Vize :</td> <td bgcolor="#33FFFF"><input size="3" type="text" name="vize"></td></tr> <tr> <td bgcolor="#FFFFCC">Final :</td> <td bgcolor="#33FFFF"><input size="3" type="text" name="final"></td></tr> <tr> <td colspan="2" bgcolor="#FFCC99"><input name="dugme" type="submit" value="Hesapla & Kaydet"></td></tr> </table> </form> PHP Programlama - 3. Bölüm Tolga GÜYER 53 PHP & MySQL Devamı <?php function sqlConnect() { $snc1 = mysql_connect("localhost","root" , ""); $snc2 = mysql_select_db("ogrenci2"); $sncDeger = $snc1 and $snc2; return $sncDeger;} function gecmeNotuHesapla($v, $f){ return (2*$v+3*$f)/5;} function harfNotuHesapla($Not){ if ($Not<=39) {$harf = "FF"; $basari=0;} elseif ($Not<=49){$harf = "DC"; $basari=0;} elseif ($Not<=59){$harf = "CC"; $basari=1;} elseif ($Not<=69){$harf = "CB"; $basari=1;} elseif ($Not<=79){$harf = "BB"; $basari=1;} elseif ($Not<=89){$harf = "BA"; $basari=1;} elseif ($Not<=100){$harf = "AA"; $basari=1;} return $harf;} PHP Programlama - 3. Bölüm Tolga GÜYER 54 PHP & MySQL Devamı function basariDurumu($Not){ if ($Not<=49) {$basari=0;} else {$basari=1;} return $basari;} if(isset($_POST["dugme"])){ if (sqlConnect()){ echo "<p>Bağlantı başarılı..."; $numara = $_POST['numara']; $ad = $_POST['ad']; $soyad = $_POST['soyad']; $vize = (int)$_POST['vize']; $final = (int)$_POST['final']; $gecme = number_format(gecmeNotuHesapla($vize, $final),2); $harf = harfNotuHesapla($gecme); PHP Programlama - 3. Bölüm Tolga GÜYER 55 PHP & MySQL Devamı if (basariDurumu($gecme)==1) {$basari_durumu="Geçti";} else {$basari_durumu="Kaldi";} $sonuc=mysql_query("INSERT INTO anatablo (numara, ad , soyad , vize, final, gecme, harf, basari) VALUES ('$numara', '$ad' , '$soyad' , '$vize' , '$final' , '$gecme' , '$harf' , '$basari_durumu')"); if ($sonuc){ echo "<p>Geçme Notu.......", $gecme; echo "<p>Harf Notu........", $harf; echo "<p>Başarı Durumu....", $basari_durumu; echo "<p>Bilgiler veritabanına eklenmiştir...";} else{echo "Bilgiler eklenemedi...";} } else { echo "Bağlantıda sorun var...“;} } ?> PHP Programlama - 3. Bölüm Tolga GÜYER 56 PHP & MySQL Select (Kayıt Okuma) Veritabanının bir tablosunda yer alan verileri okumak için kullandığımız SQL cümlesinin genel yapısı aşağıdaki gibidir: SELECT <alan adları> FROM <tablo adı> PHP Programlama - 3. Bölüm Tolga GÜYER 57 PHP & MySQL Alan adları aynen veritabanında tanımlandığı biçimleri ile yazılmalıdır ve birbirlerinden virgül işreti ile ayrılırlar. Eğer veritabanından bütün alanların içerdiği değerleri çekmek istiyorsak alan adları yerine ALL ya da * ifadesi kullanılır. PHP Programlama - 3. Bölüm Tolga GÜYER 58 PHP & MySQL Bir önceki örneğimizde kullandığımız “ogrenci2” veritabanındaki kayıtları okuyarak ekranda listeleyecek bir örnek uygulama geliştirelim. PHP Programlama - 3. Bölüm Tolga GÜYER 59 PHP & MySQL <?php function sqlConnect(){ $snc1 = mysql_connect("localhost","root" , ""); $snc2 = mysql_select_db("ogrenci2"); $sncDeger = $snc1 and $snc2; return $sncDeger;} if (sqlConnect()){ $sonuclar = mysql_query("SELECT numara,ad,soyad FROM anatablo"); while ($row=mysql_fetch_array($sonuclar)){ echo $row['numara']," ",$row['ad']," ", $row['soyad'],"<br>"; } } ?> PHP Programlama - 3. Bölüm Tolga GÜYER 60 PHP & MySQL Burada anatablo’dan her bir öğrenciye ait numara, ad ve soyad bilgileri çekilmiştir. Sorgulama sonucunda elde edilen kayıt kümesi (record set), $sonuçlar adlı bir değişkende saklanmıştır. while döngüsü bu veri kümesini tarayarak her bir kaydın ekrana yazılmasını sağlamaktadır. PHP Programlama - 3. Bölüm Tolga GÜYER 61 PHP & MySQL Where (Kayıt Süzme) Bu kesimde SELECT cümlesinin koşullu kullanımını göreceğiz. Bu kullanımda, belirli bir koşulu sağlayan verilerin süzülmesi sağlanmaktadır. PHP Programlama - 3. Bölüm Tolga GÜYER 62 PHP & MySQL Genel yapısı aşağıdaki gibidir: SELECT <alan adları> FROM <tablo adı> WHERE <koşul> Koşul, alanlar üzerine tanımlı Boolean bir ifade şeklinde belirlenir. PHP Programlama - 3. Bölüm Tolga GÜYER 63 PHP & MySQL Yine önceki örneğimizde kullandığımız “ogrenci2” veritabanını kullanan bir örnek geliştirelim. Ancak bu defa, çektiğimiz verileri kullanıcının tercihine göre geçenler ya da kalanlar biçiminde süzecek bir tasarım yapalım. PHP Programlama - 3. Bölüm Tolga GÜYER 64 PHP & MySQL <?php function sqlConnect(){ $snc1 = mysql_connect("localhost","root" , ""); $snc2 = mysql_select_db("ogrenci2"); $sncDeger = $snc1 and $snc2; return $sncDeger;} if (sqlConnect()){ $basari_durumu = $_POST['filtre']; $sonuclar = mysql_query("SELECT numara,ad,soyad FROM anatablo WHERE basari='$basari_durumu'"); while ($row=mysql_fetch_array($sonuclar)){ echo $row['numara']," ",$row['ad']," ", $row['soyad'],"<br>"; } } ?> PHP Programlama - 3. Bölüm Tolga GÜYER 65 PHP & MySQL Order By (Sıralı Kayıt Süzme) WHERE koşulu ORDER BY deyimi ile birlikte kullanıldığında, çekilen kayıt kümesini istenilen alan ya da alanlara göre sıralı olarak oluşturur. PHP Programlama - 3. Bölüm Tolga GÜYER 66 PHP & MySQL Genel yapısı aşağıdaki gibidir: SELECT <alan adları> FROM <tablo adı> ORDER BY <alan(lar)> ASC|DSC Artan sıralama isteniyorsa ASC, azalan sıralama için ise DSC ifadesi kullanılır. PHP Programlama - 3. Bölüm Tolga GÜYER 67 PHP & MySQL Bu defaki örneğimizde, tablomuzdaki verileri öğrenci adına göre artan sırada listeleyelim. PHP Programlama - 3. Bölüm Tolga GÜYER 68 PHP & MySQL <?php function sqlConnect(){ $snc1 = mysql_connect("localhost","root" , ""); $snc2 = mysql_select_db("ogrenci2"); $sncDeger = $snc1 and $snc2; return $sncDeger;} if (sqlConnect()){ $sonuclar = mysql_query("SELECT numara,ad,soyad FROM anatablo ORDER BY ad ASC"); while ($row=mysql_fetch_array($sonuclar)){ echo $row['numara']," ",$row['ad']," ", $row['soyad'],"<br>"; } } ?> PHP Programlama - 3. Bölüm Tolga GÜYER 69 PHP & MySQL Update (Kayıt Güncelleme) Veri güncellemek için kullandığımız SQL cümlesinin genel yapısı aşağıdaki gibidir: UPDATE <tablo adı> SET <alan1>=<değer>, <alan2>=<değer>, … WHERE <koşul> PHP Programlama - 3. Bölüm Tolga GÜYER 70 PHP & MySQL Bu durumda, koşul cümlemizi sağlayan kayıt kümesindeki alanlar üzerinde güncelleme işlemi gerçekleştirilecektir. PHP Programlama - 3. Bölüm Tolga GÜYER 71 PHP & MySQL <?php $baglanti=mysql_connect("localhost","root",""); if (!$baglanti){ die('Bağlanılamadı: ' . mysql_error());} mysql_select_db("veritabanim", $baglanti); mysql_query("UPDATE Kisiler SET Yas = '36‘ WHERE Adi = 'Murtaza' AND Soyadi = 'Dalkılıç'"); mysql_close($baglanti); ?> Bu örnekte, “veritabanim” adlı veritabanının “Kisiler” tablosunda yer alan Murtaza Dalkılıç adlı yaş bilgisi 36 olarak güncellenmiştir. PHP Programlama - 3. Bölüm Tolga GÜYER 72 PHP & MySQL Delete (Kayıt Silme) Veri silmek için kullandığımız SQL cümlesinin genel yapısı aşağıdaki gibidir: DELETE FROM <tablo adı> WHERE <koşul> PHP Programlama - 3. Bölüm Tolga GÜYER 73 PHP & MySQL Bu durumda, kayıt kümesinde koşul cümlemizi sağlayan alanları içeren satırlar tablomuzdan silineceklerdir. PHP Programlama - 3. Bölüm Tolga GÜYER 74 PHP & MySQL <?php $baglanti=mysql_connect("localhost","root",""); if (!$baglanti){ die('Bağlanılamadı: ' . mysql_error()); } mysql_select_db("veritabanim", $baglanti); mysql_query(“DELETE FROM Kisiler WHERE Soyadi = 'Dalkılıç'"); mysql_close($baglanti); ?> Bu örnekte, “veritabanim” adlı veritabanının “Kisiler” tablosunda yer alan ve soyadı Dalkılıç olan bütün kayıtlar silinecektir. PHP Programlama - 3. Bölüm Tolga GÜYER 75 PHP & MySQL Dâhili MySQL Fonksiyonları Bu kesimde, PHP içersinden MySQL veritabanı üzerinde gerçekleştirilecek işlemlerde kullanılan dahili fonksiyonlar hakkında bilgi verilecektir. PHP Programlama - 3. Bölüm Tolga GÜYER 76 PHP & MySQL MySQL Fonksiyonları Fonksiyon mysql_affected_rows() İşlevi Bir önceki MySQL işleminden etkilenen satırların sayısını verir mysql_change_user() Anlık MySQL bağlantısının kullanıcısın değiştirir. Kullanımı tavsiye edilmez. mysql_client_encoding() Anlık bağlantının karakter kümesinin ismini gönderir mysql_close() Anlık MySQL bağlantısını kapatır mysql_connect() MySQL bağlantısını kurar mysql_create_db() Yeni bir MySQL veritabanı oluşturur. Kullanımı tavsiye edilmez. Yerine mysql_query() önerilir mysql_data_seek() Kayıt işaretçisini konumlandırır PHP Programlama - 3. Bölüm Tolga GÜYER 77 PHP & MySQL MySQL Fonksiyonları Fonksiyon mysql_db_name() İşlevi mysql_list_dbs() den bir veritabanı ismi alır mysql_db_query() Veritabanına bir MySQL sorgusu gönderir. Kullanımı tavsiye edilmez. Yerine mysql_select_db() ve mysql_query() önerilir mysql_drop_db() Bir MySQL veritabanını siler. Kullanımı tavsiye edilmez. Yerine mysql_query() önerilir mysql_errno() En son MySQL işleminin ürettiği hata mesajının numarasını gönderir mysql_fetch_array() Kayıt kümesinden bir satırı ilişkilendirilmiş ve/veya sayısal bir dizi olarak gönderir PHP Programlama - 3. Bölüm Tolga GÜYER 78 PHP & MySQL MySQL Fonksiyonları Fonksiyon mysql_fetch_array() İşlevi Kayıt kümesinden bir satırı ilişkilendirilmiş ve/veya sayısal bir dizi olarak gönderir mysql_fetch_assoc() Kayıt kümesinden bir satırı ilişkilendirilmiş bir dizi olarak gönderir mysql_fetch_field() Kayıt kümesinden bir alan bilgisini nesne olarak gönderir mysql_fetch_lengths() Sonuç satırındaki her alanın içerik uzunluklarını gönderir mysql_fetch_object() Kayıt kümesinden bir satırı nesne olarak gönderir mysql_fetch_row() Kayıt kümesinden bir satırı sayısal bir dizi olarak gönderir PHP Programlama - 3. Bölüm Tolga GÜYER 79 PHP & MySQL MySQL Fonksiyonları Fonksiyon mysql_field_flags() İşlevi Kayıt kümesinden bir alanla ilişkilendirilmiş bayrak değerlerini gönderir mysql_field_len() Bir kayıt kümesindeki bir alanda yer alan maksimum uzunluğu gönderir mysql_field_name() Bir kayıt kümesindeki belirli bir alanın adını gönderir mysql_field_seek() Kayıt işaretçisini belirli bir alana konumlandırır mysql_field_table() Belirli bir alanı içeren tablonun adını gönderir mysql_field_flags() Kayıt kümesinden bir alanla ilişkilendirilmiş bayrak değerlerini gönderir PHP Programlama - 3. Bölüm Tolga GÜYER 80 PHP & MySQL MySQL Fonksiyonları Fonksiyon mysql_field_type() İşlevi Kayıt kümesinde yer alan belirli bir alanın veri türünü gönderir mysql_free_result() Boş sonuç belleğini verir mysql_get_client_info() MySQL istemci bilgisini verir mysql_get_host_info() MySQL ana bilgisayar bilgisini verir mysql_get_proto_info() MySQL protokol bilgisini verir mysql_get_server_info() MySQL sunucu bilgisini verir mysql_info() En son sorgulama bilgisini verir mysql_insert_id() En son INSERT işlemi ile gerçekleştirilen AUTO_INCREMENT ID (otomatik artan sayı) bilgisini verir PHP Programlama - 3. Bölüm Tolga GÜYER 81 PHP & MySQL MySQL Fonksiyonları Fonksiyon mysql_list_dbs() İşlevi MySQL sunucuda bulunan veritabanı listesini verir mysql_list_fields() MySQL tablo alanlarını listeler. Kullanımı tavsiye edilmez. Yerine mysql_query() önerilir mysql_list_processes() MySQL işlemlerini listeler mysql_list_tables() MySQL tablolarını listeler. Kullanımı tavsiye edilmez. Yerine mysql_query() önerilir mysql_num_fields() Bir kayıt kümesindeki alanların (sütunların) sayısını gönderir mysql_num_rows() Bir kayıt kümesindeki satırların sayısını gönderir PHP Programlama - 3. Bölüm Tolga GÜYER 82 PHP & MySQL MySQL Fonksiyonları Fonksiyon mysql_pconnect() İşlevi Sürekli bir MySQL bağlantısı başlatır mysql_ping() Bir sunucu bağlantısı denetimi gerçekletiri (ping) ve eğer bağlantı yoksa tekrar bağlantı kurar mysql_query() MySQL veritabanı üzerinde bir sorgu çalıştırır mysql_real_escape_string() SQL cümlesinde kullanılmak üzere bir string alır mysql_result() Bir kayıt kümesindeki bir alanın değerini verir mysql_select_db() Etkin MySQL veritabanını belirler PHP Programlama - 3. Bölüm Tolga GÜYER 83 PHP & MySQL MySQL Fonksiyonları Fonksiyon mysql_stat() İşlevi MySQL sunucusunun anlık sistem durumunu verir mysql_tablename() Bir alana ait tablo adını verir. Kullanımı tavsiye edilmez. Yerine mysql_query() önerilir mysql_thread_id() Anlık çalıştırılan prosedür (thread) kimlik (ID) bilgisini verir mysql_unbuffered_query() MySQL veritabanı üzerinde bir sorgu çalıştırır (verileri çekmez, tampon bellek kullanır) PHP Programlama - 3. Bölüm Tolga GÜYER 84 PHP & MySQL Veritabanı-bağlantılı Sayfa Tazeleme Sayfamız üzerinde yer alan nesnelerin, veritabanından gelen bilgiler kullanılarak doldurulması işlemine verilen addır. PHP Programlama - 3. Bölüm Tolga GÜYER 85 PHP & MySQL Bu nesneler açılan kutular (combobox) ya da liste kutuları (listbox) olabileceği gibi, gazetelerin web sayfalarında olduğu gibi resim alanları bile bu şekilde güncel tutulabilir. Böylelikle oluşturulan web sitesinin dinamik bir yapıda olması sağlanmış olur. PHP Programlama - 3. Bölüm Tolga GÜYER 86 PHP & MySQL Bu kesimde, sayfa tazeleme için bir Javascript kodunun kullanılacağı sayfaveritabanı bağlantısı tekniği, bir örnek üzerinden anlatılacaktır. Öncelikle, sayfa tazeleme işlemimin gerçekleştirecek Javascript kodumuzu yazalım. PHP Programlama - 3. Bölüm Tolga GÜYER 87 PHP & MySQL <SCRIPT LANGUAGE="JavaScript"> function frmYenile() { document.form1.method='POST'; document.form1.submit(); } </SCRIPT> Burada kırmızı ile işaretlenen form1 ifadesi, kullandığımız HTML formunun adı olacaktır. Şimdi HTML formumuzu tasarlayalım. PHP Programlama - 3. Bölüm Tolga GÜYER 88 PHP & MySQL <form name="form1" action="" method="post"> <p>Adı : <?php echo "<input size=\"20\" type=\"text\" name=\"ad\" value=\"$_POST[ad]\"></p>"; ?> <p>Soyadı : <?php echo "<input size=\"20\" type=\"text\" name=\"soyad\" value=\"$_POST[soyad]\"></p>"; ?> <p>Personel No : <select size="1" name="per_no" onchange="frmYenile();"> <?php sqlConnect(); $sonuclar = mysql_query("SELECT pernum FROM personel"); $secenekler="<option value=\"-1\" selected=\"selected\">Seçiniz</option>"; PHP Programlama - 3. Bölüm Tolga GÜYER 89 PHP & MySQL Devamı while ($row=mysql_fetch_array($sonuclar)){ $secenekler .= "<option value=".$row['pernum']."></option>\n"; } echo ($secenekler); ?> </select> <p><input name="dugme" type="submit" value="Veritabanına Ekle"></p> </form> PHP Programlama - 3. Bölüm Tolga GÜYER 90 PHP & MySQL Örneğimizde dikkat edilmesi gereken noktalardan ilki, ad ve soyad alanlarında value parametresinin kullanımdır. Bunun amacı, sayfa tazelendiğinde bu alanların kullanıcı tarafından önceden girilmiş olan değerlerini kaybetmemelerini sağlamaktır. PHP Programlama - 3. Bölüm Tolga GÜYER 91 PHP & MySQL İkinci nokta ise, bir açılan kutu olarak tasarlanan personel numarası alanıdır. Bu alana ait seçenekler, doğrudan veritabanında yer alan personel tablosundan çekilmektedir. Alandan herhangi bir seçim yapıldığı anda frmYenile() kodu, sayfayı tazelemektedir. PHP Programlama - 3. Bölüm Tolga GÜYER 92 PHP & MySQL Bunun sebebi, örnek uygulamalarımızda da olduğu gibi, bu alana bağlı olarak başka bir alanda gerçekleştirilebilecek herhangi bir değişikliğin geçerli olmasını sağlamaktır. PHP Programlama - 3. Bölüm Tolga GÜYER 93 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Şimdi, MySQL veritabanını kullanan bir ikinci el otomobil satış uygulaması geliştireceğiz. PHP Programlama - 3. Bölüm Tolga GÜYER 94 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı <?php // Otomobil markaları ve seçilen markanın modelleri veritabanında ilgili tablodan geliyor. // Kullanılan Veritabanı (otomobil) // Tablolar: // otomobil_bilgileri (no(*), marka, model, renk, yil, ytip, klima, cdcalar, sunroof, fiyat) // marka_model (no(*), marka, model) function sqlConnect() { $snc1 = mysql_connect("localhost","root",""); $snc2 = mysql_select_db("otomobil"); mysql_query("SET NAMES 'latin5'"); // Türkçe harfleri içeren karakter setine geçiliyor. $sncDeger = $snc1 and $snc2; return $sncDeger; } ?> PHP Programlama - 3. Bölüm Tolga GÜYER 95 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı <SCRIPT LANGUAGE="JavaScript"> function frmYenile() { document.otogir.method='POST'; document.otogir.submit(); } </SCRIPT> <form name="otogir" action="" method="post"> <table width="503" border="1"> <tr> <td width="169" bgcolor="#FFFFCC">Marka :</td> <td width="318" bgcolor="#33FFFF"> <select size="1" name="marka" onchange="frmYenile();"> PHP Programlama - 3. Bölüm Tolga GÜYER 96 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı <?php sqlConnect(); if (isset($_POST['marka'])) { $sonuc = mysql_query("SELECT marka FROM marka_model WHERE marka='".$_POST['marka']."'"); while ($row=mysql_fetch_array($sonuc)) { $marka = $row['marka']; } echo "<option value=\"$_POST[marka]\" selected=\"selected\">$marka</option>"; PHP Programlama - 3. Bölüm Tolga GÜYER 97 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı $sonuclar = mysql_query("SELECT marka FROM marka_model WHERE marka<>'".$_POST['marka']."' GROUP BY marka"); $secenekler=""; while ($row=mysql_fetch_array($sonuclar)) { $secenekler .= "<option value=".$row['marka'].">".$row['marka']."</option> \n"; } } else { $sonuclar = mysql_query("SELECT marka FROM marka_model GROUP BY marka"); PHP Programlama - 3. Bölüm Tolga GÜYER 98 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı $secenekler="<option value=\"-1\" selected=\"selected\">== S E Ç İ N İ Z ==</option>"; while ($row=mysql_fetch_array($sonuclar)) { $secenekler .= "<option value=".$row['marka'].">".$row['marka']."</option> \n"; } } echo ($secenekler); ?> </select> </td> </tr> PHP Programlama - 3. Bölüm Tolga GÜYER 99 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı <tr> <td width="169" bgcolor="#FFFFCC">Model :</td> <td width="318" bgcolor="#33FFFF"> <select size="1" name="model"> <option value="-1" selected="selected">== S E Ç İ N İ Z ==</option> <?php $sonuclar = mysql_query("SELECT model FROM marka_model WHERE marka='".$_POST['marka']."'"); $secenekler=""; while ($row=mysql_fetch_array($sonuclar)) { $secenekler .= "<option value=".$row['model'].">".$row['model']."</option> \n“; } echo ($secenekler); ?> PHP Programlama - 3. Bölüm Tolga GÜYER 100 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı </select> </td> </tr> <tr> <td bgcolor="#FFFFCC">Yýl :</td> <td bgcolor="#33FFFF"> <select size="1" name="yil"> <option value="-1" selected="selected">== S E Ç İ N İ Z ==</option> <?php $secenekler=""; for ($y=1980;$y<=2009;$y++) { $secenekler .= "<option value=".$y.">".$y."</option>\n"; } echo $secenekler; ?> </select></td></tr> PHP Programlama - 3. Bölüm Tolga GÜYER 101 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı <tr> <td bgcolor="#FFFFCC">Renk :</td> <td bgcolor="#33FFFF"> <select size="1" name="renk"> <option value="-1" selected="selected">== S E Ç İ N İ Z ==</option> <option value="Kırmızı">Kırmızı</option> <option value="Beyaz">Beyaz</option> <option value="Gri">Gri</option> <option value="Siyah">Siyah</option> </select> </td> </tr> <tr> <td bgcolor="#FFFFCC">Yakıt Tipi :</td> <td bgcolor="#33FFFF"> PHP Programlama - 3. Bölüm Tolga GÜYER 102 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı <input type="radio" name="ytip" value="benzin">Benzinli <input type="radio" name="ytip" value="dizel">Dizel <input type="radio" name="ytip" value="lpg">LPG </td> </tr> <tr> <td bgcolor="#FFFFCC">Donanım :</td> <td bgcolor="#33FFFF"> <input type="checkbox" name="klima">Klima <input type="checkbox" name="cdcalar">CD Çalar <input type="checkbox" name="sunroof">SunRoof </td> </tr> <tr> PHP Programlama - 3. Bölüm Tolga GÜYER 103 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı <td bgcolor="#FFFFCC">Fiyat :</td> <td bgcolor="#33FFFF"><input size="20" type="text" name="fiyat"></td> </tr> <tr> <td colspan="2" bgcolor="#FFCC99"><input name="dugme" type="submit" value="KAYDET"></td> </tr> </table> </form> <?php if(isset($_POST["dugme"])){ if (sqlConnect()){ echo "<p>Bağlantı Kuruldu..."; $renk = $_POST['renk']; $marka = $_POST['marka']; PHP Programlama - 3. Bölüm Tolga GÜYER 104 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı $model = $_POST['marka']; $yil = (int)$_POST['yil']; $ytip = $_POST['ytip']; $klima = $_POST['klima']; $cdcalar = $_POST['cdcalar']; $sunroof = $_POST['sunroof']; $fiyat = (double)$_POST['fiyat']; if (mysql_query("INSERT INTO otomobil_bilgileri (marka, model, renk, yil, ytip, klima, cdcalar, sunroof, fiyat) VALUES ('$marka', '$model', '$renk' , $yil , '$ytip' , '$klima' , '$cdcalar' , '$sunroof' , $fiyat)")) { echo "<p>Bilgiler veritabanına eklenmiştir..."; } PHP Programlama - 3. Bölüm Tolga GÜYER 105 Öğrendiklerimizi Uygulayalım: İkinci El Otomobil Satışı Devamı else { echo "Bilgiler eklenemedi...";} } else { echo "Bağlantı Kurulamadı..."; } } ?> PHP Programlama - 3. Bölüm Tolga GÜYER 106 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi Bu uygulamada, MySQL veritabanını kullanan bir öğrenci bilgileri girişi uygulaması geliştirilmiştir. Uygulamada ayrıca, veritabanı-bağlantılı sayfa tazeleme tekniği de kullanılmıştır. PHP Programlama - 3. Bölüm Tolga GÜYER 107 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi <?php // Kullanılan Veritabanı (ogrenci) // Tablolar: // ogrtablo (ogrno(*), ad, soyad, gyil, fkod, bkod, bsira) // fakulte_bolum (kayit_no(*), f_kod, f_ad, b_kod, b_ad) ?> <body> <SCRIPT LANGUAGE="JavaScript"> function frmYenile() { document.ogr.method='POST'; document.ogr.submit(); } </SCRIPT> PHP Programlama - 3. Bölüm Tolga GÜYER 108 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi Devamı <form name="ogr" action="" method="post"> <p>Adı : <?php echo "<input size=\"20\" type=\"text\" name=\"ad\" value=\"$_POST[ad]\"></p>"; ?> <p>Soyadı : <?php echo "<input size=\"20\" type=\"text\" name=\"soyad\" value=\"$_POST[soyad]\"></p>"; ?> <p>Giriş Yılı : <?php echo "<input size=\"4\" type=\"text\" name=\"gyil\" value=\"$_POST[gyil]\"></p>"; ?> <p>Fakülte : <select size="1" name="fk_ad" onchange="frmYenile();"> <?php sqlConnect(); if (isset($_POST['fk_ad'])){ PHP Programlama - 3. Bölüm Tolga GÜYER 109 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi Devamı $sonuc = mysql_query("SELECT f_ad FROM fakulte_bolum WHERE f_kod=".$_POST['fk_ad']); while ($row=mysql_fetch_array($sonuc)) { $fakulte_adi = $row['f_ad']; } echo "<option value=\"$_POST[fk_ad]\" selected=\"selected\">$fakulte_adi</option>"; $sonuclar = mysql_query("SELECT f_kod,f_ad FROM fakulte_bolum WHERE f_kod<>".$_POST['fk_ad']." GROUP BY f_ad"); $secenekler=""; PHP Programlama - 3. Bölüm Tolga GÜYER 110 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi Devamı while ($row=mysql_fetch_array($sonuclar)) { $secenekler .= "<option value=".$row['f_kod'].">".$row['f_ad']."</option>\ n"; } } else { $sonuclar = mysql_query("SELECT f_kod,f_ad FROM fakulte_bolum GROUP BY f_ad"); $secenekler="<option value=\"-1\" selected=\"selected\">Seçiniz</option>“; PHP Programlama - 3. Bölüm Tolga GÜYER 111 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi Devamı while ($row=mysql_fetch_array($sonuclar)) { $secenekler .= "<option value=".$row['f_kod'].">".$row['f_ad']."</option>\ n"; } } echo ($secenekler); ?> </select> <p>Bölüm : <select size="1" name="bkod"> <option value="-1" selected="selected">Seçiniz</option> PHP Programlama - 3. Bölüm Tolga GÜYER 112 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi Devamı <?php $sonuclar = mysql_query("SELECT b_kod,b_ad FROM fakulte_bolum WHERE f_kod=".(int)$_POST['fk_ad']); $secenekler=""; while ($row=mysql_fetch_array($sonuclar)) { $secenekler .= "<option value=".(string)$row['b_kod'].">".(string)$row['b_ ad']."</option>\n"; } echo ($secenekler); ?> </select> PHP Programlama - 3. Bölüm Tolga GÜYER 113 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi Devamı <p><input name="dugme" type="submit" value="Veritabanına Ekle"></p> </form> <?php function sqlConnect(){ $snc1 = mysql_connect("localhost","root",""); $snc2 = mysql_select_db("ogrenci"); mysql_query("SET NAMES 'latin5'"); // Türkçe harfleri içeren karakter setine geçiliyor. $sncDeger = $snc1 and $snc2; return $sncDeger;} function siraNoAl($fkod,$bkod,$gyil){ $sonuc = mysql_query("SELECT bsira FROM ogrtablo WHERE fkod=".$fkod." AND bkod=".$bkod." AND gyil=".$gyil." ORDER BY bsira DESC"); PHP Programlama - 3. Bölüm Tolga GÜYER 114 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi Devamı if (mysql_num_rows($sonuc)==0) { return 1;} else { $sonuc=mysql_fetch_array($sonuc); return (int)$sonuc['bsira']+1; } } function ogrenciNoOlustur($g,$f,$b,$s){ switch (strlen($s)){ case 1: $sira="00".$s; break; case 2: $sira="0".$s; break; case 3: $sira=$s; break; } PHP Programlama - 3. Bölüm Tolga GÜYER 115 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi Devamı switch (strlen($f)){ case 1: $fk="0".$f; break; case 2: $fk=$f; break; } switch (strlen($b)){ case 1: $bk="0".$b; break; case 2: $bk=$b; break; } return substr($g,2,2).$fk.$bk.$sira; } if(isset($_POST["dugme"])){ PHP Programlama - 3. Bölüm Tolga GÜYER 116 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi Devamı if (sqlConnect()){ $ad = $_POST['ad']; $soyad = $_POST['soyad']; $gyil = $_POST['gyil']; $fkod = $_POST['fk_ad']; $bkod = $_POST['bkod']; $bsira = siraNoAl($fkod,$bkod,$gyil); $ogrno = ogrenciNoOlustur($gyil,$fkod,$bkod,$bsira); echo "<p>Öğrenci numarası oluşturuldu: "; echo $ogrno; mysql_query("INSERT INTO ogrtablo (ogrno, ad, soyad, gyil, fkod, bkod, bsira) VALUES ('$ogrno', '$ad', '$soyad' ,'$gyil', '$fkod', '$bkod', '$bsira')"); PHP Programlama - 3. Bölüm Tolga GÜYER 117 Öğrendiklerimizi Uygulayalım: Öğrenci Bilgileri Girişi Devamı echo "<p>Bilgiler veritabanına eklenmiştir..."; } else { echo "Bağlantı Kurulamadı..."; } } ?> PHP Programlama - 3. Bölüm Tolga GÜYER 118
Benzer belgeler
PHP`de MySQL kullanımı ve temel işlemler
SQL sorguları genelde bazı kalıplardan oluşur. Belirli bir sorguyu filtrelemek için
WHERE kalıbını kullanırız. Aynı if gibidir. Belirli bir sorgudan etkilenecek olan
kayıtlardan bazılarını seçeriz....