Veri giriş formu yapmak Veri giriş formu yapmak Bu işlem için DW'da iki seçeneğimiz var; bunlardan ilki formlarımızı kendimiz tasarlayıp daha sonra bu formun hangi veritabanı tablosuna hangi bilgiyi gireceğini belirtmek. İkinci seçenek ise DW'ın içerisindeki bir sihirbaz aracı ile bu form yaratma işlemini de DW'ın üzerine yıkmak. Ben ilk yöntemi yani el ile kayıt girme formları nasıl yapılıyor onun üzerinde duracağım. Diğerinin bundan çok da bir farkı yok zaten. Evet başlıyoruz; Bu işlem için DW'da iki seçeneğimiz var; bunlardan ilki formlarımızı kendimiz tasarlayıp daha sonra bu formun hangi veritabanı tablosuna hangi bilgiyi gireceğini belirtmek. İkinci seçenek ise DW'ın içerisindeki bir sihirbaz aracı ile bu form yaratma işlemini de DW'ın üzerine yıkmak. Ben ilk yöntemi yani el ile kayıt girme formları nasıl yapılıyor onun üzerinde duracağım. Diğerinin bundan çok da bir farkı yok zaten. Evet başlıyoruz; Önceki makalelerde kullandığımız Blog veritabanını kullanarak bu makale anlatımına devam edeceğim. Sitemiz dosyalar bölümünden sizde ilgili veritabanını indirip sisteminizde örnek çalışmalara eşlik edebilirsiniz. Bu örneğimizde "makaleler" tablosuna yeni bir makale girme işlemini yapacağız. İlk basamak olarak yeni bir doküman oluşturup sitemiz altında uygun bir yere uygun bir isimle kaydediyoruz. www.dersmax.com Veri giriş formu yapmak 1 Veri giriş formu yapmak Önce formu yapalım Insert panel altındaki "Forms" sekmesi altından nasıl form yaratıp form bileşenleri ekleyeceğimizi görmüştük. Şimdi bu bilgiler ışığında şekildeki gibi bir form yaratıyoruz Kayıt giriş işlemleri için kullanacağımız form Bu formu oluşturmak için neler yaptık kısaca bir özet geçelim. Öncelikle bir "Form" ekledik ve Properties paneli vasıtası ile "Name" bölümüne "makale_ekle_form" yazıp "Method" kısmında ise "POST" olarak seçili olmasına özen gösterdik. "Action" kısmına bir şey yazmadık. Ardından şekildeki gibi bir tablo yaratıp biraz CSS ile tabloyu biçimlendirdikten sonra "makale_baslik" adında bir "Text field" yani metin alanı ekledik. Bunu takiben "makale_ozet" ve "makale_detay" isimli iki adet "Textarea" form bileşeni ekleyip kategorileri seçebilmemize olanak sağlayacak bir "List menu" yarattık ve adını "makale_kategori" olarak belirledik. Son olarak "Value" değeri "Ekle" olan bir "Submit button" ekleyerek formumuzu yaratmış olduk. Burada dikkatinizi çektiği üzere "makale_kategori" isimli liste menümüz için herhangi bir seçenek eklemedik. Çünkü veritabanından bir kayıt dizisi (recordset) ile çektirdiğimiz kategori bilgilerini yazdırarak dinamik bir liste menü yaratacağız. Öncelikle veritabanındaki kategorileri çeken basit bir kayıt dizisi yaratıyoruz. Kategorileri çektiren bir kayıt dizisi tanımlıyoruz Ardından eklediğimiz liste menümüzün üzerine bir kez tıklayarak onu seçiyor ve Properties panelinden "Dynamic..." düğmesine tıklıyoruz ve bu liste menüsünü dinamik bir menü haline getirmeye başlıyoruz. Liste menüsünü seçip Properties panelinden Dynamic düğmesine tıklıyoruz Açılan dinamik liste menü iletişim penceresinden "Menu" kısmında biraz önce eklediğimiz liste menünün seçili olduğuna dikkat ediyoruz. "Static options" bölümüne isterseniz "Label" değeri "Bir kategori seçiniz" olan boş değerli bir statik seçenek ekleyebilirsiniz fakat şart değil. "Options from Recordset" seçeneğinden ise biraz önce kategoriler için tanımladığınız kayıt dizisini seçiyor ve "Value" kısmı için "id", "Label" kısmı için "baslik" alanlarını seçerek "Select value equal to" seçeneğini boş bırakarak dinamik menümüzü yapılandırmış oluyoruz. Bu yaptığımız yapılandırma çerçevesinde kategoriler için tanımladığımız kayıt dizesi ile veritabanımızdaki kategoriler bir liste menüsünün içerisine yazdırılacak ve makale ekleme işlemi sırasında listeden bir kategoriyi rahatlıkla seçmemize olanak tanıyacaktır. Dinamik liste menüsü iletişim penceresi Bu tür dinamik form öğelerini yarattığınız veri giriş ve güncelleme formlarında kullanarak güçlü ve esnek yönetim işlemleri gerçekleştirebilirsiniz. Insert / Application Objects / Dynamic Data menüsü ya da Insert panel altındaki "Application" sekmesi altında yer alan "Dynamic Data" düğmesi ile hangi dinamik objelere ulaşabildiğinizi görebilir ve kullanabilirsiniz. Dinamik objeler ile formlarınızı zenginleştirebilirsiniz. Veri giriş formumuz hazır olduğuna göre bu forma girilen verileri veritabanına girme işlemine başlayabiliriz. Bilgilerin veritabanına girişi işlemi Şimdi eğer açık değilse Window / Server Behaviors CTRL+F9 menüsü ile Server Behaviors panelini açıyor ve (+) işaretine tıklayarak açılan menüden "Insert Record" seçeneğine tıklıyoruz. Server Behaviors menüsünden Insert Record seçeneğine tıklıyoruz Açılan kayıt girişi iletişim penceresinden ilgili yapılandırmaları yaparak kayıt girişi işlemlerini yapabiliriz. www.dersmax.com Veri giriş formu yapmak 2 Veri giriş formu yapmak Kayıt ekleme iletişim penceresi Submit values from: Bu açılır menüden bilgi girişini yaptıracağımız formu seçiyoruz. Sayfada birden fazla form olduğu durumlarda daha çok anlam kazanan bu menüden hangi formu seçtiğimize dikkat etmeliyiz. Connection: Hangi veritabanı bağlantısını kullanarak veri girişinin yapılacağını seçiyoruz. Columns: Veri girişi yaptığımız ilgili tablonun alanlarını gösteren bu listeden bir alan seçip listenin altında yer alan "Value" menüsünden sayfadaki form elemanlarından bu veritabanı alanına girilecek veriyi içeren elemanı seçiyoruz. "Submit as" seçeneği ise girilen veritürünü belirtiyor. Sayı (integer), metin (Text) ya da tarih (date) gibi seçeneklerden alana uygun olanı seçiyoruz. After inserting go to: bölümüne veri giriş işlemi tamamlandıktan sonra kullanıcının yönlendirileceği sayfayı giriyoruz (Örn. islem_basarili.php gibi). Veri giriş işlemi için ilgili ayarlar bu şekilde yaptıktan sonra "OK" diyerek işlemi sonlandırabiliriz. İşlemi bitirdiğimizde formumuz açık mavi bir biçimde işaretlenerek dinamik veri girişinin yapıldığı bir form olduğu vurgulanacaktır. Bu aşamadan sonra hiçbir form elemanına müdahale etmemeye özen gösteriniz. Zira veri giriş işlemleri değişen parametreler doğrultusunda sekteye uğrayabilir. İşlem tamamlandıktan sonra formun DW içerisindeki görünümü Teorik olarak tarih alanına kaydın eklendiği andaki tarihi girmemiz gerekiyor. Bu işlemi bir metin alanı (text field) ya da gizli alan (hidden field) içerisine o anki tarih zaman bilgisini yazdırarak veritabanına girilmesini sağlayabilirsiniz. Özellikle site yöneticilerinin inisiyatifinde olmayan veri girişlerinde (forum mesajı ve yorum gibi) kullanıcılarınızın formu eksiksiz olarak doldurmaları veya alanlara doğru bilgiler girip girmediklerini kontrol etmemiz gerekmektedir. Peki form geçerlilik kontrollerini nasıl yapacağız. Bunun için DW içerisinde Behaviors paneli altında yer alan "Validate Form" özelliğini kullanacağız. Behaviors panel menüsünden Validate Form seçeneğine tıklıyoruz Açılan form geçerleme iletişim penceresinden ilgili form elemanlarını seçerek girilme zorunluluğu olanları "Required" olarak işaretliyoruz. Aynı şekilde "Accept" kısmında yer alan veri türlerinden birini seçerek de tür kontrolü yapabilmemiz mümkün. Form geçerleme iletişim penceresi Bu işlemi daha ayrıntılı olarak yapan eklentileri sitemiz dosya arşivinden temin edebilirsiniz. Fakat yeri gelmişken bir noktaya açıklık kavuşturmakta fayda var; bu tür girdi kontrol işlemleri sadece kullanıcı tarafında kontrol yaparlar. Fakat ziyaretçinin tarayıcısı JavaScript çalıştırmıyor ise ya da JavaScript çalıştırma özelliğini devre dışı bıraktı ise bu tür form geçerleme işlemleri çalışmayacaktır. Bir diğer ihtimal de kötü niyetli kullanıcıların bu engeli oldukça kolay aşabilecekleri gerçeğidir. Her ne olursa olsun bu tür veri geçerliliği kontrolleri kullanıcı tarafının yanı sıra sunucu taraflı diller ile sunucu tarafında da kontrol edilmeli böylece girilen (ya da girilmeyen) bilgiler çerçevesinde çeşitli hata mesajları ile ziyaretçinin veri girişini engellenmelidir. DW içerisinde henüz böyle bir kontrol mevcut değil. DW'ın en büyük eksiklerinden olan bu açığı bir çok firma tarafından hazırlanan eklentiler ile kapatmak mümkün. Fakat bu tür eklentilerin ücretli olmaları da kullanımlarını kısıtlayan en önemli etmen. DW ile dinamik bir uygulama yaparken bu özellikleri de göz önünde bulundurmanız ve kendi çözümlerinizi bu çerçevede yapmanızı tavsiye ederek bu konuya da açıklık getirmiş olalım. PHP MySQL sunucu modeli ile çalışıyorsanız eğer veritabanı olarak MySQL 4.1.1 ve sonrası bir sürüm kullanıyor iseniz; sayfalarda Türkçe karakter problemi yaşamamak için collation bilgisini sayfalarınıza eklemeniz gerekmektedir. Bu işlem için "Set Collation" eklentisini kullanabilirsiniz. Aynı şekilde kod görünümüne geçip sayfanın en başına Insert / PHP Objects / PHP Page Encoding menüsü ile sayfaya girdi ve çıktılar için kodlama türü belirtmeleri gerekmektedir. Aynı şekilde ASP sunucu modeli ile çalışıyorsanız sayfanın başında "CODEPAGE" belirtiminin yapılmış olduğundan emin olmalısınız. Sihirbazı kullanarak kayıt giriş sayfası yapmak Bu anlattığımız işlemleri çok daha pratik bir biçimde yapmamıza olanak sağlayan sihirbaz ile veri giriş sayfası yapmak aslında diğer yöntemden çok da farklı değil. Bunun için yeni bir doküman oluşturup kaydediyoruz ve kategorileri listelettiğimiz bir kayıt dizisi ekliyoruz. Ardından Insert / Application Objects / Insert Record / Insert Record Form Wizard ile sihirbazı başlatıyoruz. Kayıt ekleme formu sihirbazı Sihirbaz iletişim penceresinde ilgili bağlantı ve tabloyu seçtikten sonra "Form Fields" bölümünde kayıt ekleme formunda olmasını www.dersmax.com Veri giriş formu yapmak 3 Veri giriş formu yapmak istediğiniz elemanları yönetebilirsiniz. Örneğin "id" alanı için bir form elemanına ihtiyacımız olmadığından bu seçeneği (-) düğmesine tıklayarak kaldırabiliyoruz. "Label" kısmına kullanıcıların göreceği ara yüzdeki isimi girip "Display as" menüsünden bu elemanın ne tür bir form bileşeni olarak sayfaya eklenmesini istediğimizi seçiyoruz. "Submit as" seçeneği ise bu girilen verinin veritabanına ne tür bir bilgi olarak girileceğini belirtiyor. "Default value" kısmı da bu form bileşenine varsayılan olarak girilmesini istediğiniz değeri belirtiyor. Örneğin tarih girdileri için gizli bir alan yaratıp varsayılan değer olarak <?php echo date("Y-m-j H:i:s"); ?> verdiğinizde kaydın o an girildiği tarih bilgisini veritabanına girmiş olursunuz. İlgili ayarları yapıp "OK" dediğinizde kayıt ekleme formu ve sunucu modeli uygulaması sayfaya otomatik olarak eklenecek böylece oldukça hızlı bir biçimde veri giriş formları hazırlayabileceksiniz. Form ile ilgili düzenlemeleri daha sonra DW içerisinde yapabilirsiniz fakat form elemanlarının isimlerini değiştirmemeye özen göstermelisiniz. Veri giriş işlemleri bu şekilde. Kendi bilgisayarınızda farklı örnekler yaparak kendinizi geliştirebilir ve sistemin işleyişini daha iyi kavrayabilirsiniz. Kaynak www.dw.gen.tr/ www.dersmax.com Veri giriş formu yapmak 4