plazma - amatör bilgisayar kültürü

PHP : Hypertext Preprocessor - Bölüm 3 - Plazma

Emir 'Skate' Akaydın

1. Giriş

Yazı dizimizin üçüncü bölümünde lafı hiç uzatmadan öğrendiklerimizi faydalı bir veritabanı uygulaması örneği hazırlamak için kullanacağız. Bu söz konusu örnek basit bir telefon rehberi. Dökümanın okunurluğunu arttırmak için görselleri oldukça zayıf bir uygulama olarak tasarlandı. Sizler uygulamanın arayüzünü kendi HTML bilginizle geliştirebilirsiniz.

Not 1: Bu sayıda yer alan örnekler PHP 5 ile hazırlanmıştır.

Not 2: Örneklerde yer alan host ismi, kullanıcı adı, şifre gibi bilgileri (localhost, root, boş şifre) kendi çalışma ortamınıza göre düzenlemeniz gerekmektedir.

Şekil 1.

2. Bir Veritabanı Uygulaması Nasıl Hazırlanır?

Daha önce de bahsettiğimiz gibi, PHP'de uygulama geliştirebilmek için notepad ya da benzeri bir text editörü yeterlidir. Ancak işin içine veritabanı girdiği zaman, kullanacağımız veritabanını yöneteceğimiz araçlar ya da konsol komutları da projemizin bir parçası haline gelir. Ancak kullanacağımız veri tabanları SQL altyapısına sahip olacağı için ve SQL de oldukça gelişmiş bir dil olduğundan, veritabanı araçları ya da konsol komutlarının yapacağı hemen herşey SQL komutlarıyla da yapılabilir. Her veritabanının bu konuda istisnaları bulunmaktadır. Ancak bizim ilk adımda yapmamız gereken şey bir veritabanı yaratmak ki her SQL tabanlı veritabanı bu iş için "CREATE" komutunu desteklemektedir.

3. Temel SQL Komutları

SQL dili ileri seviye olarak işlendiğinde çok fazla detaya sahip olan bir dildir. Ancak başlangıç aşamasında kullanılan standart komutları ele alacak olursak da bir o kadar kolaydır. Bunun en temel sebebi SQL dilinin ingilizce okunurluğunun çok yüksek oluşudur. SQL, insanların konuşma diline en yakın dillerden birisidir.

Şimdi temel SQL komutlarının en basite indirgenmiş tanımlarını ve kullanım örneklerini görelim.

Aşağıdaki 4 komut (SELECT, INSERT, UPDATE, DELETE), SQL dilinde tablolar ile çalışırken kullanacağınız 4 temel komuttur. Bunlar SQL dilinin olmazsa olmazları şeklinde ifade edilebilirler.

SELECT : Bir ya da birden fazla tablodan kayıt seçmeye yarar.

SELECT * FROM tablo1

INSERT : Bir tabloya veri girişi yapmaya yarar.

INSERT INTO tablo1 (alan1, alan2) VALUES ('deger 1', 'deger 2')

UPDATE : Mevcut bir ya da birden fazla kaydı güncellemeye yarar.

UPDATE tablo1 SET alan1 = 'yeni deger 1', alan2 = 'yeni deger 2' WHERE alan1 = 'deger 1'

DELETE : Mevcut bir ya da birden fazla kaydı silmeye yarar.

DELETE FROM tablo1 WHERE alan1 = 'deger 1'

İlk aşamada öğrenmemiz gereken diğer 2 komut ise veritabanı, tablo v.b. yaratmada / yok etmede kullanılan CREATE ve DROP komutlarıdır.

CREATE : Veritabanı ve tablo oluşturmakta kullanılır.

CREATE DATABASE veritabani1

CREATE TABLE tablo1

DROP : Mevcut veritabanı ve tabloları yok etmekte kullanılır.

DROP DATABASE veritabani1

DROP TABLE tablo1

4. Veritabanı Tasarımı

Veritabanı tasarımı tüm veritabanı uygulamalarının en kritik noktasıdır. Tasarımdaki bir hata uygulamanın performansını çok kötü etkileyebileceği gibi, projeyi sil baştan hazırlama ihtiyacı doğuracak noktalara kadar ilerleyebilir. Bu nedenle bu konunun çok detaylı işlenmesi gerekmektedir. Örnekler ilerledikçe bu noktaya da zaman zaman değineceğiz. Ancak asıl konumuzun PHP olması nedeniyle ve ilk örneğimizin tek tablodan oluşan, standart bir excel sayfasından pek farkı bulunmayan türden bir yapısı olduğu için detaylara henüz değinmeyeceğiz.

Öncelikle düşünmemiz gereken noktalar şunlar.

  • Ortaya çıkarmak istediğimiz uygulama ne tür bilgiler içerecek?

  • Bu bilgilerin girişi nasıl sağlanacak?

  • Veritabanındaki veriler ne boyutlara ulaşabilecek? Eğer büyük boyutlara ulaşması söz konusu ise hız arttırımı için ne tür optimizasyonlar gerekecek?

  • Veritabanı üzerinde ne tür sorgulamalar yapılacak, hangi raporlar üretilecek?

  • Kullanıcıların yetki mekanizması nasıl işleyecek?

  • Veritabanı güvenliği projemizde ne kadar ön planda olacak? Ne tür tedbirler almamız gerekecek?

Bu maddeler daha da uzatılabilir. Ancak ilk örneğimizde bu maddelerin birçoğunu atlamak için uygulamamızın şifresiz ve tek bir kullanıcı ile kullanılacağını varsayıyoruz. Veritabanındaki bilgiler de telefon rehberinden ibaret olacak ve şu an için bir güvenlik kaygımız yok.

Şimdi ilk soruların yanıtlarını bulalım.

Ortaya çıkarmak istediğimiz uygulama ne tür bilgiler içerecek? Bu bir telefon rehberi uygulaması olacağı için isim, soyad, şirket, telefon kriterleri ilk akla gelen kriterler. Buna bir de numaranın iş mi özel mi olmasıyla ilgili bir tip kriteri ekleyebiliriz. Ayrıca veritabanlarının genel bir kuralı olarak bir kayıda kolayca erişmemizi sağlayacak bir numara (id) vermemiz gerekir. Bu numara her kayıt için özel olmalıdır ki kayıda erişmek istediğimizde "ismi Ahmet, soyadı Kara, telefonu +90 212 222 33 44 olan iş tipindeki kayıt" demekle uğraşmayalım ve kısaca "3 numaralı kayıt" diyebilelim. Bu durumda rehber tablomuzu şu şekilde modelleyebiliriz.

rehber

-> id

-> isim

-> soyad

-> şirket

-> telefon

-> tip

Buradaki "id" alanının otomatik olarak artması için bu alanı birincil anahtar (PRIMARY KEY) olarak tanımlayabiliriz. Bu durumda biz id alanına bir değer vermesek bile o her kayıt için otomatik olarak artacaktır. Örneğin boş bir tabloya ilk kayıt girildiğinde id 1 olacakken, ikinci kayıt için 2, üçüncü kayıt için 3 değerini alacaktır. Bu kayıtlar silinseler bile id alanı son kaldığı değerden 4, 5, 6, ... şeklinde artmaya devam edecektir.

5. Veritabanını Yaratmak

Artık nasıl bir veritabanı yaratmak istediğimizi biliyoruz. Öncelikle anlaşılması gereken bir nokta var. Tasarlamış olduğumuz tablo veritabanının kendisi değildir. Veritabanı bu tablo ve daha birçok tablo, görünüm (view), yordam (prosedür) v.b. elementleri içeren bir kavramdır. Kısacası bizim öncelikle bir veritabanı yaratmamız ve daha sonra bu veritabanının altına rehber tablomuzu oluşturmamız gerekiyor. Öncelikle veritabanımıza bir isim bulalım. Plazma dergisine ait bir uygulama olacağı için veritabanımızı "plazma_rehber" olarak isimlendirmeyi uygun görüyorum. Tablo ismi içinse "rehber" oldukça uygun. MySQL kullanacağımızı düşünürsek en ideal yöntemlerden biri "phpMyAdmin" isimli MySQL yönetimi için hazırlanmış açık kaynak kodlu projeyi kullanmak olacaktır. Alternatif olarak MySQL'in yeni versiyonlarında gelen gelişmiş MySQL araçlarını da kullanmamız iyi bir alternatif seçenektir. Ancak bu araçlarla yaşayabileceğiniz sorunları göz önüne alarak ve de PHP bilgilerimizi daha da kuvvetlendirmek adına veritabanımızı sadece PHP dilini kullanarak oluşturacağız.

Veritabanını ve tablomuzu oluştururken izlememiz gereken en düzgün adımlar şunlardır.

  1. MySQL'e bağlan.

  2. Yaratmak istediğimiz veritabanı daha önceden yaratılmışsa yok et.

  3. Veritabanını yarat.

  4. Bu veritabanını seç. Bu seçimden sonra çalıştıracağımız komutlar artık bu veritabanı üzerinde çalışacaktır.

  5. İstediğimiz tabloyu yarat.

Bu 5 adım bize tertemiz bir veritabanı sunacatır. Unutmayın ki bu işlemi ilk kurulumda ya da baştan kurulumda yapmanız gerekmektedir. Özellikle 2. adım mevcut veritabanları açısından çok tehlikelidir. Bu adımda tüm veritabanı içersindeki tüm kayıtlarla silimektedir. Alternatif olarak 2. ve 3. adımlar atlanabilir ve yalnızca yeniden yaratılmak istenilen tablolar silindikten sonra bu tablolar yaratılarak veritabanının geri kalan yapısı korunmuş olur.

Şimdi bu 5 adımı uygulayan PHP programını görelim.

veritabani_olustur.php:

<?php
// Tanimlar
$mysqlHost = "localhost";
$mysqlKullaniciIsmi = "root";
$mysqlSifre = "";
$veritabaniIsmi = "plazma_rehber";
$tabloIsmi = "rehber";

// MySQL'e baglanti yap
mysql_connect($mysqlHost,
              $mysqlKullaniciIsmi,
              $mysqlSifre)
    or die(mysql_error());
echo "-> mysql'e baglanti yapildi.<br>";

// Daha onceden yaratilmis ayni isimde
// bir veritabani var ise oncekini sil
$sql = "DROP DATABASE IF EXISTS ".$veritabaniIsmi;
mysql_query($sql) or die(mysql_error());
echo "-> ".$veritabaniIsmi.
     " veritabani yok edildi.<br>";

// Veritabanini yarat
$sql = "CREATE DATABASE ".$veritabaniIsmi;
mysql_query($sql) or die(mysql_error());
echo "-> ".$veritabaniIsmi.
     " veritabani yaratıldı.<br>";

// Yaratilan veritabanina baglanti yap
mysql_select_db($veritabaniIsmi)
    or die(mysql_error());
echo "-> ".$veritabaniIsmi.
     " veritabanina baglanildi.<br>";

// Veritabani uzerinde rehber isimli
// bir tablo olustur
$sql = "CREATE TABLE ".$tabloIsmi." (
        id INT NOT NULL AUTO_INCREMENT,
        isim VARCHAR(30) NOT NULL,
        soyad VARCHAR(30) NOT NULL,
        sirket VARCHAR(100) NOT NULL,
        telefon VARCHAR(25) NOT NULL,
        tip INT NOT NULL DEFAULT 0,
        PRIMARY KEY (id)
        )";
mysql_query($sql) or die(mysql_error());
echo "-> ".$tabloIsmi.
     " tablosu yaratildi.<br>";
?>

6. Veritabanı Bağlantısı

Bu konunun üzerinde geçen sayıda yeterince durmuştuk. Bu yüzden yeniden bir açıklama yapmayı gerekli görmüyorum. Geçen sayıdaki örneğin biraz geliştirilmiş hali aşağıda yer almaktadır. Bu dosya veritabanıyla işlem gerçekleştirecek her dosyanın başında içerik olarak yer alacaktır.

veritabani_baglantisi.php:

<?php
class MySQLBaglantisi {
    private $sunucu;
    private $kullaniciAdi;
    private $sifre;
    private $veritabaniAdi;

    public function __construct($_sunucu, 
                                $_kullaniciAdi,
                                $_sifre,
                                $_veritabaniAdi)
    {
        $this->sunucu = $_sunucu;
        $this->kullaniciAdi = $_kullaniciAdi;
        $this->sifre = $_sifre;
        $this->veritabaniAdi = $_veritabaniAdi;
    }

    public function Baglan()
    {
        // MySQL'e baglanti yap
        mysql_connect($this->sunucu,
                      $this->kullaniciAdi,
                      $this->sifre)
            or die(mysql_error());

        // Yaratilan veritabanina baglanti yap
        mysql_select_db($this->veritabaniAdi)
            or die(mysql_error());

        // Turkce karakter seti ayarlari
        mysql_query("SET NAMES 'latin5'
               COLLATE 'latin5_turkish_ci'");
        mysql_query("SET CHARACTER SET latin5");
        mysql_query("SET COLLATION_CONNECTION =
               'latin5_turkish_ci'");
    }
}

$baglanti = new MySQLBaglantisi("localhost",
                                "root",
                                "",
                                "plazma_rehber");
$baglanti->Baglan();
?>

7. Arayüz ve Arkaplan Dosyaları

Bu görmüş olduğumuz iki dosya, bu programın arkaplanında çalışacak, doğrudan ekrana çıktı vermeyecek ya da çıktı verme amacıyla tasarlanmamış dosyalardır. Bu dosyalar programın veritabanını oluşturmak ve programın veritabanına bağlanmak gibi görevler üstlenirler. "veritabani_olustur.php" dosyasının tek başına ve bir kereye mahsus çalıştırılması gerekmektedir. Bu işlem, dosyayı web sunucusunun altında ulaşılabilir bir klasöre koyduktan sonra web tarayıcısından bu dosyanın adresi yazılıp, dosya çağırılarak yapılabileceği gibi, konsol ekranından PHP'nin exesine parametre olarak dosyanın sürücü adresi verilerek de yapılması mümkündür.

"veritabani_baglantisi.php" dosyasını ise bu şekilde kullanmayacağız. Bu dosyayı arayüz ve arkaplanda çalışan PHP dosyaları kullanacaklar. Burada arayüz ve arkaplan dosyaları diye bahsedilen dosyalar işletim sisteminde aynı seviyede çalışan dosyalardır. Buradaki arkaplan kelimesinin kullanımı; ekrana çıktı vermeyen, yalnızca işlem gerçekleştiren dosyalar anlamına gelmektedir.

PHP dosyaları dinamik bir yapıda çalışmazlar. Yani PHP dosyası bir kere yüklendikten sonra arayüzle etkileşimli bir biçimde (bir linke, bir düğmeye tıklamak v.b.) PHP komutları çalıştıramaz, veritabanına sorgu gönderemezler. Bu işlemleri gerçekleştirmek için başka bir PHP dosyası çağırmaları gerekmektedir. Duruma bağlı olarak farklı parametrelerle kendi dosyasını da çağırabilir. Örnek olarak bir kaydı silmek için "sil" linkine tıkladığımızda "sil.php" dosyası çağrılarak kayıt silinebilir. "sil.php" dosyası ekrana hiçbir çıktı vermeyebilir. Yani tek görevi belirlenen kayıt ya da kayıtları silmek olabilir. Dosya işlemini gerçekleştirdikten sonra ekrana bir mesaj yazabileceği gibi, bunu da yapmadan kendini çağıran PHP dosyasına ya da başka bir dosyaya yönlenebilir. Bunun en tipik örneği kayıtların listelendiği dosyanın kayıt silme dosyasını çağırması ve bu dosyanın işlemi gerçekleştirdikten sonra yeniden kayıt listeleme sayfasına dönmesidir.

Bizim yapmak istediğimiz işlemler şunlardır.

  1. Kayıtları listelemek.

  2. Yeni kayıt girmek.

  3. Mevcut kayıtları düzenlemek.

  4. Mevcut kayıtları silmek.

Kayıtları listelemek için bir dosyaya ihtiyacımız olacağı kesindir. Bu dosya "listele.php" isimli ilk arayüzlü dosyamız olsun.

Yeni kayıt girmek ve kayıtları düzenlemek aynı form kullanılarak yapılabilecek işlemlerdir. Yeni bir kayıt olduğunda form boş gelirken, düzenleme durumunda form düzenlenecek kaydın bilgileriyle gelebilir. Bu bizi birbirine benzer iki ayrı form dosyasıyla uğraşmaktan kurtarır. Bu işlemlerin yapılabileceği formun yer alacağı dosyayı ise, ikinci arayüz dosyamız olan "form.php" ismini verelim.

Form onaylandığında yeni kayıt girişi ya da değişikliklerin kaydedilmesi işlemini yapacak bir arkaplan dosyasına ihtiyaç duyacağız. Bu dosya işlem bittikten sonra bizi "listele.php" sayfasına geri döndürecek. Bu dosyaya "kaydet.php" ismini verebiliriz.

Son olarak da kayıt silmemize yarayacak "sil.php" dosyasına ihtiyaç duyacağız. Bu dosya da "kaydet.php"ye benzer bir işleyişte çalışacak. İşlemini yerine getirip, bizi "listele.php"ye döndürecek.

Özetleyecek olursak ihtiyacımız olan tüm dosyaları şu şekilde listeleyebiliriz.

  1. veritabani_olustur.php : Bir kereye mahsus kullanılacak ve veritabanını yaratacak.

  2. veritabani_baglantisi.php : Tüm arayüz ve arkaplan dosyalarınca ortak olarak kullanılacak olan veritabanı bağlantısı sağlayan dosya.

  3. listele.php : Veritabanındaki kayıtları listeleyecek. Ayrıca bu dosyada yeni kayıt girişi, kayıtların düzenlenmesi ve silinmesi için linkler yer alacak.

  4. form.php : Yeni kayıt girişi ve mevcut kayıtların düzenlenmesi için gerekli formu içerecek ve form onaylandığında "kaydet.php"ye yönlendirme yapılacak.

  5. kaydet.php : Eğer formdan gelen kayıt yeni bir kayıt ise veritabanına yeni kayıt girişi yapılacak. Eğer mevcut bir kayıt bilgileri gelmiş ise kayıt yeni değerlere göre güncellenecek. Her iki durumda da "listele.php"ye geri dönülecek.

  6. sil.php : İstenilen kayıt silinecek ve "listele.php"ye geri dönülecek.

8. Kaynak Kodlar

listele.php:

<?php
    // Veritabani baglantisini yap
    require "veritabani_baglantisi.php";
?>
<html>
<head>
<title>Plazma #6 - Rehber</title>
<meta http-equiv="Content-Type"
      content="text/html;
      charset=iso-8859-9">
</head>
<body>
<a href="form.php">Yeni Kayıt</a><br><br>
<table border=1>
<tr>
    <td>Isim</td>
    <td>Soyad</td>
    <td>Sirket</td>
    <td>Telefon</td>
    <td>Tip</td>
    <td> </td>
</tr>
<?php
$tablo = mysql_query("SELECT *
                      FROM rehber
                      ORDER BY isim, soyad");
while($satir = mysql_fetch_array($tablo))
{
?>
<tr>
    <td><?php echo $satir["isim"]; ?> </td>
    <td><?php echo $satir["soyad"]; ?> </td>
    <td><?php echo $satir["sirket"]; ?> </td>
    <td><?php echo $satir["telefon"]; ?> </td>
    <td><?php
        if($satir["tip"] == "0")
            echo "Is";
        else
            echo "Ozel";
        ?></td>
    <td>
        <a href="form.php?id=<?php echo $satir["id"]; ?>">
        Duzenle</a> |
        <a href="sil.php?id=<?php echo $satir["id"]; ?>"
        onclick="return confirm('Emin misiniz?')">
        Sil</a>
    </td>
</tr>
<?php
}
?>
</table>
</body>
</html>

form.php:

<?php
    // Veritabani baglantisini yap
    require "veritabani_baglantisi.php";

    // URL'den gelen degiskenleri al
    $id = $_GET["id"];

    // Eger id bos degilse degerleri oku
    if($id != "")
    {
        $tablo =
        mysql_query("SELECT *
                     FROM rehber
                     WHERE id = ".$id);
        $satir = mysql_fetch_array($tablo);
        $isim = $satir["isim"];
        $soyad = $satir["soyad"];
        $sirket = $satir["sirket"];
        $telefon = $satir["telefon"];
        $tip = $satir["tip"];
    }
    else
    {
        $isim = "";
        $soyad = "";
        $sirket = "";
        $telefon = "";
        $tip = "0";
    }
?>
<html>
<head>
<title>Plazma #6 - Rehber</title>
<meta http-equiv="Content-Type"
      content="text/html;
      charset=iso-8859-9">
</head>
<body>
<form name="rehberform"
      method="post"
      action="kaydet.php">
<table border=1 cellpadding=5>
<tr>
    <td>Isim</td>
    <td>
        <input name="isim"
               type="text" 
               value="<?php echo $isim; ?>">
    </td>
</tr>
<tr>
    <td>Soyad</td>
    <td>
        <input name="soyad"
               type="text" 
               value="<?php echo $soyad; ?>">
    </td>
</tr>
<tr>
    <td>Sirket</td>
    <td>
        <input name="sirket"
               type="text" 
               value="<?php echo $sirket; ?>">
    </td>
</tr>
<tr>
    <td>Telefon</td>
    <td>
        <input name="telefon"
               type="text" 
               value="<?php echo $telefon; ?>">
    </td>
</tr>
<tr>
    <td>Tip</td>
    <td>
        <select name="tip">
            <option value="0"
            <?php if($tip=="0")
                    echo "selected"; ?>>
            Is</option>
            <option value="1"
            <?php if($tip=="1")
                    echo "selected"; ?>>
            Ozel</option>
        </select>
    </td>
</tr>
<tr>
    <td>
        <input name="id"
               type="hidden"
               value="<?php echo $id; ?>">
    </td>
    <td>
        <input name="onayla"
               type="submit"
               value="Onayla">
    </td>
</tr>
</table>
</form>
</body>
</html>

kaydet.php:

<?php
    // Veritabani baglantisini yap
    require "veritabani_baglantisi.php";

    // Formdan gelen degiskenleri al
    $id = $_POST["id"];
    $isim = $_POST["isim"];
    $soyad = $_POST["soyad"];
    $sirket = $_POST["sirket"];
    $telefon = $_POST["telefon"];
    $tip = $_POST["tip"];

    // Eger id bos ise yeni kayit gir
    if($id == "")
    {
        mysql_query("INSERT INTO rehber
                     (isim, soyad, sirket,
                      telefon, tip)
                     VALUES
                     ('".$isim."', '".$soyad."',
                      '".$sirket."', '".$telefon."',
                      '".$tip."')");
    }
    else
    {
        mysql_query("UPDATE rehber
                     SET isim = '".$isim."',
                         soyad = '".$soyad."',
                         sirket = '".$sirket."',
                         telefon = '".$telefon."',
                         tip = '".$tip."'
                     WHERE id = ".$id);
    }

    // Listeleme sayfasina git
    header("location:listele.php");
?>

sil.php:

<?php
    // Veritabani baglantisini yap
    require "veritabani_baglantisi.php";

    // URL'den gelen degiskenleri al
    $id = $_GET["id"];

    // Kaydi sil
    if($id != "")
    {
        mysql_query("DELETE FROM rehber
                     WHERE id = ".$id);
    }

    // Listeleme sayfasina git
    header("location:listele.php");
?>

9. Programın Görünüm ve Kullanımı

Tüm dosyaları hazırlayıp, web sunucusunun erişebileceği bir klasörde topladıktan sonra web tarayıcınızı açıp, adres çubuğuna "listele.php"nin yer aldığı adresi yazın. Örnek: http://localhost/plazma/sayi6/listele.php

Karşınıza çıkacak ekran şu şekilde olmalıdır.

Şekil 2.

Eğer bu ekran yerine hata mesajı alırsanız veritabanı bağlantı parametrelerini ve veritabanının düzgün yaratılıp yaratılmadığını kontrol ediniz.

Bu ekranda henüz bir kayıt görememekteyiz. Yapabileceğimiz tek şey "Yeni Kayıt" linkini kullanarak bir kayıt girmek. Linki tıkladığımızda aşağıdaki gibi bir form ekrana gelecektir. Bu formu doldurup onaylayarak yeni kayıtlar girebiliriz.

Şekil 3.

Yukardaki örnekteki gibi birkaç kayıt girdikten sonra liste aşağıdakine benzer bir biçimde gözükecektir.

Şekil 4.

Artık görebileceğiniz gibi her bir kaydı düzenleme ve silme olanağına sahibiz. Örnek olarak en alttaki kaydın "Düzenle" linkine tıkladığımızda karşımıza bu kaydın bilgileriyle dolu bir form çıkacaktır.

Şekil 5.

İstediğimiz değişiklikleri yaptıktan sonra bu formu onaylayarak değişiklikleri uygulayabiliriz.

Son olarak ise liste sayfasında "Sil" linkine tıklayarak tıkladığımız satırdaki kaydı silebiliriz. Burada ufak bir JavaScript kontrolü bizim yanlışlıkla bu linke tıklayıp kaza eseri bir kaydı silmemizi engellemek için aşağıdaki gibi bir uyarı çıkaracaktır.

Şekil 6.

Tamam'ı tıklamamız durumunda kayıt silinecek, aksi taktirde işlem gerçekleşmeyecektir.

10. Bu Bölümün Değerlendirmesi

Şekil 7.

Sonunda, önceki bölümlerde öğrenmiş olduğumuz temel bilgileri kullanarak "işe yarar" bir uygulama yapmayı becerdik. Bu örnek elbette ki en basit veritabanı uygulamalarından biridir ve yapısal olarak da çok fazla geliştirilebilir, düzenlenebilir. Ancak yalın, anlaşılır bir kod yapısını korumak için bu şekilde bir başlangıç yaptık. Bu örneği iyice sindirmeniz, ilerki bölümlerde karşınıza çıkacak program yapılarını rahat anlayabilmeniz için çok faydalı olacaktır.

11. Ev Ödevleri

İlk ödevlerinizi verelim. Bu örnekte isim, soyad, şirket, telefon ve tip kriterlerini kullandık. Bu örneği iyice inceleyip anladıktan sonra;

  1. Örneğe adres ve email kriterlerini eklemeyi deneyin.

  2. Form sayfasına gelindiğinde eğer yeni kayıt girişiyse sayfanın başına "Yeni Kayıt", eğer mevcut bir kayıt düzenleniyorsa başlık olarak "Kayıt Düzenleme" yazdırın.

  3. Yeni kayıt girişinde şirket alanına McDonald's yazdığınızda kaydın niye girilmediğinin sebebini bulun ve çözüm arayın. (Hayır, program fast food'a gıcık değil :))

Gelecek sayıda bu soruların yanıtlarını bulabilirsiniz. Görüşmek üzere.

emir (at) akaydin (nokta) com

plazma - (2006 - 2011)