E-DERSANE.com - PhP Offline Dersleri

Temel PHP ve MySQL Kullanımı

PHP, HTML'le rahatça kaynaşabilmesi ve MySQL ile ODBC gibi hiçbir geçide ihtiyaç duymadan konuşabilmesi sayesinde, veritabanlarını internet üzerinden erişilebilir kılmak isteyen kullanıcılar tarafından her geçen gün daha fazla kullanılmaktadır. Bu yazıda, PHP ile MySQL'in beraber kullanımını inceleyecek, temel SQL komutlarını kullanarak ufak bir program yazacağız. Programımızda kullanacağımız veritabanı için gerekli yapıyı, phpMyAdmin programını kullanıyorsanız, aşağıda yer alan kodu kopyalayıp bu programın SQL komutlarının yazıldığı kutuya yapıştırarak kolayca kurabilirsiniz. Eğer MySQL'e komut satırından erişiyorsanız, bir aşağıda yer alan komutları sırasıyla uygulamanız gerekiyor. Veritabanını yaratmak için gereken SQL satırı aşağıdaki gibidir :

CREATE TABLE table1 (

id int(10) unsigned DEFAULT '0' NOT NULL auto_increment,

ad varchar(50) NOT NULL,

mail varchar(100) NOT NULL,

msj varchar(255) NOT NULL,

tarih date DEFAULT '0000-00-00' NOT NULL,

saat time DEFAULT '00:00:00' NOT NULL,

PRIMARY KEY (id),

KEY id (id),

UNIQUE id_2 (id)

);

Eğer veritabanını komut satırından kullanıyorsanız, aşağıdaki işlemleri yapmalısınız :

mysql> create database pot01;

mysql> use pot01;

mysql> create table table1 (id int(10) not null auto_increment,

mysql> ad varchar(50) not null,

mysql> mail varchar(100) not null,

mysql> tarih date default '0000-00-00' not null,

mysql> saat time default '00:00:00' not null,

mysql> primary key (id), key id (id), UNIQUE id_2 (id)

mysql> );

mysql> quit;

Kısaca kullandığım komutları açıklayayım : create database veritabanı_adı: Kullanımı çok basit. Sonuna veritabanı ismini ve noktalı virgülü ekliyorsunuz. Mysql'de çalıştırmak istediğiniz her komutun sonuna noktalı virgül eklemelisiniz. use veritabani_adi: Kullanacağımız veritabanını seçiyoruz. quit: MySQL istemcisinden çıkış için. MySQL sunucusu ile karıştırmayın, Quit ile istemciden çıkmanızın sunucunun işleyişi ile bir alakası yoktur.

Artık PHP ve HTML kodlarımızı yazmaya başlayabiliriz. Buradaki kodların hepsini içeren ZIP dosyasını mysqlkullanim.zip <http://www.php.org.tr/kodlar/mysqlkullanim.zip> indirebilirsiniz. Daha az karışık olması için kayıt ekleme, kayıt silme, kayıt listeleme, kayıt görüntüleme ve kayıt düzeltme bölümlerini ayrı ayrı PHP sayfalarında yapmayı uygun gördüm. Daha sonra bunları tek sayfada toplamayı da göstereceğim. İlk olarak algoritmayı açıklayacağım. Aşağıda yazılanların tümünü okumak veya yapmak zorunda değilsiniz. Siz işinize yarayacak kısmı seçin. Kodları mümkün olduğu kadar basit tutuyorum, süslemesi sizin yaratıcılığınıza kalmıştır. Öncelikle HTML ile hazırlanmış kayıt girişi için kullanılacak bir formumuz olacak. (Ben çok basit bir örnek vereceğim. Siz bunu isterseniz Frontpage veya benzeri bir programla süsleyebilirsiniz.) Daha sonra formdan yollanan değişkenleri MySQL'de hazırladığımız veritabanındaki tabloya kaydeden bir PHP sayfası hazırlayacağız. Numarasını gönderdiğimiz kaydı silen PHP kodlarını yazacağız. Numarasını gönderdiğimiz kaydı görüntüleyen php kodlarını yazacağız. Tüm kayıtları alt alta listeleyen PHP kodlarını yazacağız. Son olarak, numarasını gönderdiğimiz kayıt üzerinde düzeltme (değiştirme) yapan php kodlarını yazacağız. Not: Siyah yazilar HTML kodları, kırmızı yazılar ise php kodlarıdır. Turuncu yazılar php içinden HTML çıktısı vermek için kullanılmıştır. Yeşil yazılar ise işlem görmeyecek satırlardır, sadece açıklama için kullanılmışlardır. Yeşil satırları çıkartabilirsiniz..

1.Adım -- Bütün işlemler için HTML Formu.

Aşağıdaki dosyayı "form.htm" olarak kaydedin. <!-- form.htm in basi --> <html> <body> <!-- kaydet tusuna basinca girilen ad mail ve mesaj degiskenlerini ekle.PHP'ye yollar --> <FORM METHOD="post" ACTION="ekle.PHP"> <p>ad:<input type="text" name="ad" size="20"></p> <p>mail:<input type="text" name="mail" size="20"></p> <p>mesaj:<textarea rows="4" name="mesaj" cols="26"> </textarea></p> <p><input type="submit" value="Kaydet" name="kaydet"></p> </FORM> <br> <br> <!-- sil'e basinca silinecek kayit nosunu sil.PHP'ye yollar --> <FORM METHOD="post" ACTION="sil.PHP"> <p>Kayit Nosu:<input type="text" name="kayno" size="20"> <input type="submit" value="Sil" name="Sil"></p> </FORM> <br> <br> <!-- goster'e basinca goruntulenecek kayit nosunu goster.PHP'ye yollar --> <FORM METHOD="post" ACTION="goster.PHP"> <p>Kayit Nosu:<input type="text" name="kayno" size="20"> <input type="submit" value="goster" name="goster"></p> </FORM> <br> <br> <!-- degis'e basinca goruntulenecek kayit nosunu degistir.PHP'ye yollar --> <FORM METHOD="post" ACTION="degistir.PHP"> <input type="hidden" name="kayit" value="0"> <p>Kayit Nosu:<input type="text" name="kayno" size="20"> <input type="submit" value="degis" name="degis"></p> </FORM> <br> <br> <!-- listele'ye basinca list.PHP'yi çalistirir --> <FORM METHOD="post" ACTION="list.PHP"> <input type="submit" value="listele" name="listele"></p> </FORM> </body></html> <!-- form.htm 'in sonu -->Gördüğünüz gibi bu form sayesinde kaydet tuşuna bastığımızda ad, mail ve mesaj adlı değişkenlerin içerisine atanan değerler ekle.php isimli sayfaya yollanacaktır. Sil, göster veya değiştir tuşuna bastığımızda ise sil.php, göster.php veya değiştir.php isimli sayfalara düğmelerin yanlarına yazdığımız kayıt nosu yollanacaktır. Bundan sonra yapacağımız PHP sayfaları bu HTML kodu ile aynı klasörde olmalıdır. Eğer farklı bir klasörden çalıştıracaksanız yol belirtmelisiniz.

2. Adım… ekle.php Sayfasının Hazırlanması

Bu sayfadaki kodlar MySQL'de oluşturduğumuz veritabanına bağlanıp, form.htm'den yollanan değişkenlere tarih ve zaman değerlerini de ekleyerek kaydetmektir. <!-- ekle.php'nin basi --> <html> <?php $tarih = date(ymd); $saat = date(His); /* localdeki mysql sunucunun rootuna sifresiz baglanilir, hata varsa hata msji çikar */ mysql_connect("localhost","root","") or die ("Veritabanina baglanamadi"); /* database1 seçilir */ @mysql_select_db("database1") or die("Veritabani bulunamadi"); /* hata msji verdirmenin baska bir yolu da if komutunu kullanmaktir. If komutu yaninda parantez içindeki olay hatasiz olursa kayit tamam yazilir , hata çikarsa else'ten sonraki {} parantezleri içindeki islemler gerçeklesir. */ if (mysql_query("INSERT INTO table1 (ad, mail, msj, tarih, saat) VALUES ('$ad', '$mail', '$mesaj', $tarih, $saat) ")) { echo "kayit tamam..."; } else { echo "kayit yapilamadi."; } ?> <br> Tekrar forma dönmek için <a href="form.htm">tiklayiniz..</a> </html> <!-- ekle.php'nin sonu -->

3. Adım sil.php Sayfasının Hazırlanması

Bu sayfadaki kodlar ile mysql'de oluşturduğumuz database'e baglanip, form.htm'den yollanan değişkenle belirtilen kaydı siliyoruz. <!-- sil.php'nin basi --> <html> <?php MYSQL_CONNECT("localhost","root","") OR DIE ("Veritabanina baglanamadi"); @mysql_select_db("database1") or die("Veritabani bulunamadi"); if (MYSQL_QUERY("DELETE FROM table1 WHERE kayno=$kayno")) { echo "kayit silindi..."; } else { echo "kayit silinemedi…"; } ?> <br> Tekrar forma dönmek için <a href="form.htm">tiklayiniz..</a> </html> <!-- sil.php'nin sonu -->

4. Adım… goster.php Sayfasının Hazırlanması

Bu sayfadaki kodlar mysql'deki oluşturduğumuz database'e bağlanıp, form.htm'den yollanan numaralı kaydı gösterir. Eğer o numaralı kayıt yoksa boş sayfa gelir. <!-- goster.php'nin basi --> <html> <?php MYSQL_CONNECT("localhost","root","") OR DIE ("Veritabanina baglanamadi"); @mysql_select_db("database1") or die("Veritabani bulunamadi"); /* Burada bundan önceki php` lerden farklı olarak sql komutunu bir değişkene atayarak kullandım. $result ile başlayan satırda $strSQL yazılı yere tırnak içinde aynı şeyleri yazabilirsiniz. */ $strSQL = "SELECT * FROM table1 where kayno=$kayno"; $result = mysql_db_query("database1",$strSQL); while ($row = mysql_fetch_array($result)) { /* echo komutu html sayfasına çıktı yollamak için kullanılır. echo "ilk string" . "ikinci string" şeklinde yazarsanız HTML sayfasının kaldığı yerden itibaren (ilk string)(ikinci string) yazar. Yani nokta karakteri birleştirme işlemini yapar. $row['ad'] komutu da tablodaki ad alanında bulunan değeri almaya yarar. (tabii kayıt nosu bir önceki form.htm sayfasından yollanan kayıt nosuyla aynı olan kaydın..) eger kayıt nosu aynı olan iki kayıt olsaydı while döngüsü iki kayıt için ayrı ayrı çalışacaktı. */ echo "Isim: " . $row['ad'] . "<br>"; echo "Mail: " . $row['mail'] . "<br>"; echo "Mesaj: " . $row['msj'] . "<br>"; echo "Tarih: " . $row['tarih'] . "<br>"; echo "Saat: " . $row['saat'] . "<br>"; echo "<br>"; } ?> <br> Tekrar forma dönmek için <a href="form.htm">tiklayiniz..</a> </html> <!-- goster.php'nin sonu -->

5. Adım… list.php Sayfasının Hazırlanması

Bu sayfadaki kodlar mysql'deki olusturdugumuz database'e baglanip, tüm kayitlari listeler. goster.php den tek farki --where kayno=$kayno- sartinin olmamasidir.. <!-- list.php'nin basi --> <html> <?php MYSQL_CONNECT("localhost","root","") OR DIE ("Veritabanina baglanamadi"); @mysql_select_db("database1") or die("Veritabani bulunamadi"); $strSQL = "SELECT * FROM table1"; $result = mysql_db_query("database1",$strSQL); /* while den sonraki {} parantezleri içerisindeki kodlar kaç tane kayit varsa o kadar kere isletilecek. */ while ($row = mysql_fetch_array($result)) { echo "Isim: " . $row['ad'] . "<br>"; echo "Mail: " . $row['mail'] . "<br>"; echo "Mesaj: " . $row['msj'] . "<br>"; echo "Tarih: " . $row['tarih'] . "<br>"; echo "Saat: " . $row['saat'] . "<br>"; echo "<br>"; } ?> <br> Tekrar forma dönmek için <a href="form.htm">tiklayiniz..</a> </html> <!-- list.php'nin sonu -->

6. Adım… degistir.php Sayfasının Hazırlanması

Bu sayfadaki kodlar mysql'deki oluşturduğumuz database'e bağlanıp, form.htm'den yollanan numaralı kaydı gösterir. Ama goster.php'den farklı olarak değerleri bir form içinde getirir. Değiştirmek istediğiniz değerleri değiştirip değiştir tuşuna bastığınızda gene kendi kendini çağırır. En başta olan if terimi sayesinde gönderilen güncellemesi mi yoksa kaydı listelemesi mi gerekir anlar.. <!-- degistir.php'nin basi --> <html> <?php MYSQL_CONNECT("localhost","root","") OR DIE ("Veritabanina baglanamadi"); @mysql_select_db("database1") or die("Veritabani bulunamadi"); /* form.htm den kayit degiskeni 0 olarak yollanir. Böylece if'ten else kadar olan kodlar islem görmez. Ama else'ten sonraki kaydet dügmesine bastigimizda kayit degiskenine 1 degeri atanir. If'ten else'e kadar olan kodlar islem görür, else'ten sonrakiler görmez. */ if ($kayit=="1") { $tarih=date(ymd); $saat=date(His); mysql_query("update table1 set ad='$ad' where kayno=$kayno") or die ("Veri Tabani Güncellenemedi"); } else /* Buradan sonra dikkat etmeniz gereken yer açilan ilk { parantezinden sonra bir kez daha { parantezinin açildigidir. Ikinci kez açilan parantez while döngüsüne aittir. Daha sonra kapanan } parantezi de en son açilan paranteze yani gene while döngüsüne aittir. En sondaki kapaparantez ise else'ten sonra açilan paranteze aittir. */ { /* else sartinin parantezi */ $strSQL = "SELECT * FROM table1 where kayno=$kayno"; $result = mysql_db_query("database1",$strSQL); while ($row = mysql_fetch_array($result)) { /* while döngüsünün parantezi */ ?> <FORM METHOD="post" ACTION="degistir.php"> <input type="hidden" name="kayit" value="1"> /* Aralarda degiskenleri kullanabilmek için php moduna girilip çikiliyor.. */ <input type="hidden" name="kayno" value="<? echo($kayno) ?>"> <p>ad:<input type="text" name="ad" size="20" value="<?php echo($row['ad']) ?>"></p> <p>mail:<input type="text" name="mail" size="20" value="<?php echo($row['mail']) ?>"></p> <p>mesaj:<textarea rows="4" name="mesaj" cols="26"> <?php echo($row['msj']) ?></textarea></p> <p><input type="submit" value="Kaydet" name="kaydet"></p> </form> <br><br> <? } /* while döngüsünün parantezi */ } /* else sartinin parantezi */ ?> <br> Tekrar forma dönmek için <a href="form.htm">tiklayiniz..</a> </html> <!-- degistir.php'nin sonu -->

Copyright © 2001- www.E-Dersane.com - Offline Dersler. All Rights Reserved. PhP Offline Dersleri bolumunde yayinlanan bütün metin ve makaleler GPL lisansli olup ayrintili bilgi için GNU.org adresine bakiniz. |