heroman
26-12-2007, 18:03 PM
Html_Quickform kullanarak webformu hazırlamak.
Öncelikle pear(Php Extension and Application Repository) ‘in ne olduğunu biraz açıklamaya çalışalım. Pear,
Php uygulamaları geliştirirken bize bir takım kolaylıklar sağlayan paket deposudur. Pear gönüllüler tarafından sürekli geliştirilmektedir. Bu nedenle yazılım geliştirenlere geniş bir kütüphane sunar. Bu makalede biz pear’in paketlerinden sadece biri olan HTML_QUICKFORM’un nasıl kullanıldığı hakkında bilgi vermeye çalışacağız.
HTML_QUICKFORM: Html’de oluşturduğumuz web formlarını daha basit ve etkili şekilde oluşturmamızı sağlayan pear kütüphanesidir. Daha önce html ile yaptığımız kayit formunu bu sefer html_quickform kullanarak yapalım ve aralarındaki farkı daha iyi şekilde gözlemleyelim. Ama bundan önce Html_quickform’un nasıl kurulacağını anlatalım.
KURULUMU:
Html_quickform kullanabilmeniz için php 4.2 veya daha üst versiyonları kullanıyor olmalısınız. Kurulum sırasında paketleri indirebilmeniz için internete bağlı olmalısınız.
Şimdi ilk olarak pear paket yöneticisini kurmalıyız. Bunun için php dizinizin altındaki go-pear.bat dosyasına tıklayıp gelen msdos komut satırındaki basamakları takip ederek paket yöneticisini kurun. Sürekli enter tuşuna basıp “Would you like to install these as well?[y/n]” sorusuna da “y” yazıp enter tuşuna basmanız yeterli olacaktır. Gerekli paketler indirilip kendiliğinden kurulacaktır. Bunu yaptıktan sonra isteğiniz pear kütüphanesini kurabilirsiniz. Html_quickformu kurmak için yine msdos komut satırında php dizinize gidip sırasıyla
->pear install HTML_Common
->pear install HTML_QuickForm
satırlarını yazarsınız internetten paketler indirilip kurulacaktır.
Şimdi örneğimize geçelim. Aşaıdaki kodu “kayit.php” adıyla kaydedelim.
kayit.php
<?php
require_once 'HTML/QuickForm.php';
// using "post" is advantageous when we send big forms
$form = new HTML_QuickForm('form', 'POST');
$form->addElement('header', 'personal', 'KAYIT EKRANI');
$form->addElement('text', 'name', 'Adı');
$form->addElement('text', 'surname', 'Soyadı');
$options=array(
'languge' => 'en',
'format' => 'dMY',
'minYear' => 1960,
'maxYear' => 2006,
);
$form->addElement('date', 'birthday', 'Dogum Tarihi',$options);
$form->addElement('text','tcID','Tc No', array('maxlength'=>11));
$form->addElement('text','place','Dogum Yeri');
$form->addElement('text','fatherName','Baba Adı');
$buttons[] = &HTML_QuickForm::createElement('radio',null,null,'b ay','bay');
$buttons[] = &HTML_QuickForm::createElement('radio',null,null,'b ayan','bayan');
$form->addGroup($buttons, 'sex', 'Cinsiyet', ' ');
$form->addElement('text','email','Email');
$form->addElement('reset', 'reset', 'Reset');
$form->addElement('submit', 'submit', 'Kayıt');
$form->addRule('name', 'Lutfen Adınızı Girin', 'required');
$form->addRule('surname', 'Lutfen Soyadınızı Girin', 'required');
$form->addRule('tcID', 'Lutfen Tc No Girin', 'required');
$form->addRule('tcID', 'Tc No Sayı Olmalı', 'numeric');
$form->addRule('tcID', 'Tc no 11 haneli olmalı', 'rangelength' ,array(11, 11) );
$form->addRule('email', 'gecerli bir email adresi girin', 'email');
// Tries to validate the form
if ($form->validate()) {
// Form is validated, then freezes the data
$form->freeze();
}
$form->display();
?>
Şimdi bu kodda neler yaptığımızı aşama aşama açıklayalım.
******************************* //Bu satırda form alanları oluşturabilmek için QuickForm.php dosyasını
require_once 'HTML/QuickForm.php'; //kodumuza ekliyoruz.
*******************************
*************************************** //Html_QuickForm class’ından form nesnesi oluşturuyoruz.
$form = new HTML_QuickForm('form', 'POST');
***************************************
************************************************
$form->addElement('header', 'personal', 'KAYIT EKRANI');
************************************************
Bu satırla form alanlarını oluşturmaya başlıyoruz. $form->addElement() fonksiyonu formda istediğimiz alanları hazırlama imkanı veriyor. İlk parametre form alanının tipinin ne olacağını belirliyor. Burada formun header alanını oluşturuyoruz.
**************************************
$form->addElement('text', 'name', 'Adı'); //ad ve soyadın girileceği text alanını oluşturuyoruz.
$form->addElement('text', 'surname', 'Soyadı');
**************************************
************************************************** **
$options=array(
'languge' => 'en',
'format' => 'dMY',
'minYear' => 1960,
'maxYear' => 2006,
);
$form->addElement('date', 'birthday', 'Dogum Tarihi',$options);
************************************************** *
QuickForm’un kendine özgü tarih hazırlama şekli vardır ve oldukça kullanışlıdır. Yukarıdaki örnekte $options dizisine tarihin özellikleri girilmiş ve $form->addElement() fonksiyonuyla ‘date’ tipinde form alanı oluşturulmuştur.
************************************************** ****************
$form->addElement('text','tcID','Tc No', array('maxlength'=>11));
$form->addElement('text','place','Dogum Yeri');
$form->addElement('text','fatherName','Baba Adı');
$buttons[] = &HTML_QuickForm::createElement('radio',null,null,'b ay','bay');
$buttons[] = &HTML_QuickForm::createElement('radio',null,null,'b ayan','bayan');
$form->addGroup($buttons, 'sex', 'Cinsiyet', ' ');
$form->addElement('text','email','Email');
$form->addElement('reset', 'reset', 'Reset');
$form->addElement('submit', 'submit', 'Kayıt');
************************************************** ****************
Yukarıdaki satırlarda da çeşitli form alanları oluşturulmuştur. Burada dikkat edilmesi gereken grup şeklide oluşturulan radio butonlarıdır. Cinsiyet için iki seçenek vardır. Bunlar grup şeklinde oluşturulur ve $form->addGroup() fonksiyonuyla forma eklenir. Gruptaki eleman sayıları arttırılabilir. Onun dışında reset ve kayıt butonlarıda $form->addElement() fonksiyonuyla oluşturulur.
************************************************** ******************
$form->addRule('name', 'Lutfen Adınızı Girin', 'required'l);
$form->addRule('surname', 'Lutfen Soyadınızı Girin', 'required');
$form->addRule('tcID', 'Lutfen Tc No Girin', 'required');
$form->addRule('tcID', 'Tc No Sayı Olmalı', 'numeric');
$form->addRule('tcID', 'Tc no 11 haneli olmalı', 'rangelength' ,array(11, 11) );
$form->addRule('email', 'gecerli bir email adresi girin', 'email');
************************************************** ******************
Yukarıda gördüğünüz satırlarda html_quickform’un en avantajlı yanlarından biridir. $form->addRule() fonksiyonu sayesinde form alanlarına isteğiniz kuralları ekleyebilir ve bu sayede kullanıcıdan bilgilerin alınış şeklini kolayca belirleyebilirsiniz. Bu fonksiyonda ilk parametre olarak kuralın uygulanacağı form alanını belirleyen değişken ismi, ikinci parametre olarak ekranda görünecek uyarı mesajı, üçüncü parametre olarak ta uygulanacak kural çeşidi girilir.
İlk üç satırdaki kural, formda boş bırakılmaması gereken alanlar içindir. Form alanı boş bırakılırsa uyarı mesajı gözükecektir. Bunu sağlayan üçüncü parametre olarak girilen ‘required’ özelliğidir.
Sonraki kural Tc no’nun sayı olması gerektiğini öngören kuraldır. Bunu da ‘numeric’ özelliği ile sağlıyoruz. Rakam haricinde bir karakter girilirse bunu kabul etmeyip ekrana uyarı mesajı gösterilecektir.
Beşinci satırdaki kural ise girilecek olan Tc no’nun hangi basamaklar arasında olması gerektiğini belirten kuraldır. Bizim örneğimizde Tc no sadece 11 haneli olduğu için alt ve üst sınırı 11 olarak belirlenmiştir. Bunu da ‘rangelength’ özelliği ile sağlıyoruz.
Bu özelliği başka bir örnekte kullanalım:
Örneğin bir şifre girilmesini ve bunun 5 ile 8 karakter arasında olmasını istiyoruz.
************************************************** ***************************
$form->addRule('password', 'şifre 5 ile 8 karakter arasında olmalıdır', 'rangelength' ,array(5, 8) );
************************************************** ***************************
Örneğimizdeki son kural ise emailin doğru girip girilmediğini kontrol eden kuraldır. Bunu ‘email’ özelliği ile sağlıyoruz.
Bunların dışında da birçok kural çeşidi vardır:
-maxlength
-regex
-emailorblank
-lettersonly
-alphanumeric
-nopunctuation
-nonzero
Ayrıca bu listedeki kuralların dışında kullanıcı kendiside istediği bir kuralın fonksiyonunu yazıp kullanabilir.
********************
if ($form->validate()) {
$form->freeze();
}
********************
Form alanlarına girilen bilgiler submit edildiğinde if kontrolü ile bu bilgilerin kurallara uygun olup olmadığı $form->validate() fonksiyonuyla kontrol edilir ve bilgiler doğruysa $form->freeze() fonksiyonuyla ekrana gösterilir.
**************
$form->display();
**************
Son olarak $form->display() fonksiyonu hazırladığımız form alanlarının ekranda gösterilmesini sağlar.
Bu makalede html_quickform’u basit bir örnek üzerinden anlatmaya çalıştık. Html_quickform’un anlattıklarımız dışında daha birçok avantajı vardır. Daha fazla örnek inceleyerek bunları görebilirsiniz. Html_quickform’u kurduğunuzda birkaç tane hazır örnek PHP//PEAR//docs//HTML_Quickform//docs dizininin içinde olacaktır. Bunları inceleyerek daha ayrıntılı bilgiye sahip olabilirsiniz.
Öncelikle pear(Php Extension and Application Repository) ‘in ne olduğunu biraz açıklamaya çalışalım. Pear,
Php uygulamaları geliştirirken bize bir takım kolaylıklar sağlayan paket deposudur. Pear gönüllüler tarafından sürekli geliştirilmektedir. Bu nedenle yazılım geliştirenlere geniş bir kütüphane sunar. Bu makalede biz pear’in paketlerinden sadece biri olan HTML_QUICKFORM’un nasıl kullanıldığı hakkında bilgi vermeye çalışacağız.
HTML_QUICKFORM: Html’de oluşturduğumuz web formlarını daha basit ve etkili şekilde oluşturmamızı sağlayan pear kütüphanesidir. Daha önce html ile yaptığımız kayit formunu bu sefer html_quickform kullanarak yapalım ve aralarındaki farkı daha iyi şekilde gözlemleyelim. Ama bundan önce Html_quickform’un nasıl kurulacağını anlatalım.
KURULUMU:
Html_quickform kullanabilmeniz için php 4.2 veya daha üst versiyonları kullanıyor olmalısınız. Kurulum sırasında paketleri indirebilmeniz için internete bağlı olmalısınız.
Şimdi ilk olarak pear paket yöneticisini kurmalıyız. Bunun için php dizinizin altındaki go-pear.bat dosyasına tıklayıp gelen msdos komut satırındaki basamakları takip ederek paket yöneticisini kurun. Sürekli enter tuşuna basıp “Would you like to install these as well?[y/n]” sorusuna da “y” yazıp enter tuşuna basmanız yeterli olacaktır. Gerekli paketler indirilip kendiliğinden kurulacaktır. Bunu yaptıktan sonra isteğiniz pear kütüphanesini kurabilirsiniz. Html_quickformu kurmak için yine msdos komut satırında php dizinize gidip sırasıyla
->pear install HTML_Common
->pear install HTML_QuickForm
satırlarını yazarsınız internetten paketler indirilip kurulacaktır.
Şimdi örneğimize geçelim. Aşaıdaki kodu “kayit.php” adıyla kaydedelim.
kayit.php
<?php
require_once 'HTML/QuickForm.php';
// using "post" is advantageous when we send big forms
$form = new HTML_QuickForm('form', 'POST');
$form->addElement('header', 'personal', 'KAYIT EKRANI');
$form->addElement('text', 'name', 'Adı');
$form->addElement('text', 'surname', 'Soyadı');
$options=array(
'languge' => 'en',
'format' => 'dMY',
'minYear' => 1960,
'maxYear' => 2006,
);
$form->addElement('date', 'birthday', 'Dogum Tarihi',$options);
$form->addElement('text','tcID','Tc No', array('maxlength'=>11));
$form->addElement('text','place','Dogum Yeri');
$form->addElement('text','fatherName','Baba Adı');
$buttons[] = &HTML_QuickForm::createElement('radio',null,null,'b ay','bay');
$buttons[] = &HTML_QuickForm::createElement('radio',null,null,'b ayan','bayan');
$form->addGroup($buttons, 'sex', 'Cinsiyet', ' ');
$form->addElement('text','email','Email');
$form->addElement('reset', 'reset', 'Reset');
$form->addElement('submit', 'submit', 'Kayıt');
$form->addRule('name', 'Lutfen Adınızı Girin', 'required');
$form->addRule('surname', 'Lutfen Soyadınızı Girin', 'required');
$form->addRule('tcID', 'Lutfen Tc No Girin', 'required');
$form->addRule('tcID', 'Tc No Sayı Olmalı', 'numeric');
$form->addRule('tcID', 'Tc no 11 haneli olmalı', 'rangelength' ,array(11, 11) );
$form->addRule('email', 'gecerli bir email adresi girin', 'email');
// Tries to validate the form
if ($form->validate()) {
// Form is validated, then freezes the data
$form->freeze();
}
$form->display();
?>
Şimdi bu kodda neler yaptığımızı aşama aşama açıklayalım.
******************************* //Bu satırda form alanları oluşturabilmek için QuickForm.php dosyasını
require_once 'HTML/QuickForm.php'; //kodumuza ekliyoruz.
*******************************
*************************************** //Html_QuickForm class’ından form nesnesi oluşturuyoruz.
$form = new HTML_QuickForm('form', 'POST');
***************************************
************************************************
$form->addElement('header', 'personal', 'KAYIT EKRANI');
************************************************
Bu satırla form alanlarını oluşturmaya başlıyoruz. $form->addElement() fonksiyonu formda istediğimiz alanları hazırlama imkanı veriyor. İlk parametre form alanının tipinin ne olacağını belirliyor. Burada formun header alanını oluşturuyoruz.
**************************************
$form->addElement('text', 'name', 'Adı'); //ad ve soyadın girileceği text alanını oluşturuyoruz.
$form->addElement('text', 'surname', 'Soyadı');
**************************************
************************************************** **
$options=array(
'languge' => 'en',
'format' => 'dMY',
'minYear' => 1960,
'maxYear' => 2006,
);
$form->addElement('date', 'birthday', 'Dogum Tarihi',$options);
************************************************** *
QuickForm’un kendine özgü tarih hazırlama şekli vardır ve oldukça kullanışlıdır. Yukarıdaki örnekte $options dizisine tarihin özellikleri girilmiş ve $form->addElement() fonksiyonuyla ‘date’ tipinde form alanı oluşturulmuştur.
************************************************** ****************
$form->addElement('text','tcID','Tc No', array('maxlength'=>11));
$form->addElement('text','place','Dogum Yeri');
$form->addElement('text','fatherName','Baba Adı');
$buttons[] = &HTML_QuickForm::createElement('radio',null,null,'b ay','bay');
$buttons[] = &HTML_QuickForm::createElement('radio',null,null,'b ayan','bayan');
$form->addGroup($buttons, 'sex', 'Cinsiyet', ' ');
$form->addElement('text','email','Email');
$form->addElement('reset', 'reset', 'Reset');
$form->addElement('submit', 'submit', 'Kayıt');
************************************************** ****************
Yukarıdaki satırlarda da çeşitli form alanları oluşturulmuştur. Burada dikkat edilmesi gereken grup şeklide oluşturulan radio butonlarıdır. Cinsiyet için iki seçenek vardır. Bunlar grup şeklinde oluşturulur ve $form->addGroup() fonksiyonuyla forma eklenir. Gruptaki eleman sayıları arttırılabilir. Onun dışında reset ve kayıt butonlarıda $form->addElement() fonksiyonuyla oluşturulur.
************************************************** ******************
$form->addRule('name', 'Lutfen Adınızı Girin', 'required'l);
$form->addRule('surname', 'Lutfen Soyadınızı Girin', 'required');
$form->addRule('tcID', 'Lutfen Tc No Girin', 'required');
$form->addRule('tcID', 'Tc No Sayı Olmalı', 'numeric');
$form->addRule('tcID', 'Tc no 11 haneli olmalı', 'rangelength' ,array(11, 11) );
$form->addRule('email', 'gecerli bir email adresi girin', 'email');
************************************************** ******************
Yukarıda gördüğünüz satırlarda html_quickform’un en avantajlı yanlarından biridir. $form->addRule() fonksiyonu sayesinde form alanlarına isteğiniz kuralları ekleyebilir ve bu sayede kullanıcıdan bilgilerin alınış şeklini kolayca belirleyebilirsiniz. Bu fonksiyonda ilk parametre olarak kuralın uygulanacağı form alanını belirleyen değişken ismi, ikinci parametre olarak ekranda görünecek uyarı mesajı, üçüncü parametre olarak ta uygulanacak kural çeşidi girilir.
İlk üç satırdaki kural, formda boş bırakılmaması gereken alanlar içindir. Form alanı boş bırakılırsa uyarı mesajı gözükecektir. Bunu sağlayan üçüncü parametre olarak girilen ‘required’ özelliğidir.
Sonraki kural Tc no’nun sayı olması gerektiğini öngören kuraldır. Bunu da ‘numeric’ özelliği ile sağlıyoruz. Rakam haricinde bir karakter girilirse bunu kabul etmeyip ekrana uyarı mesajı gösterilecektir.
Beşinci satırdaki kural ise girilecek olan Tc no’nun hangi basamaklar arasında olması gerektiğini belirten kuraldır. Bizim örneğimizde Tc no sadece 11 haneli olduğu için alt ve üst sınırı 11 olarak belirlenmiştir. Bunu da ‘rangelength’ özelliği ile sağlıyoruz.
Bu özelliği başka bir örnekte kullanalım:
Örneğin bir şifre girilmesini ve bunun 5 ile 8 karakter arasında olmasını istiyoruz.
************************************************** ***************************
$form->addRule('password', 'şifre 5 ile 8 karakter arasında olmalıdır', 'rangelength' ,array(5, 8) );
************************************************** ***************************
Örneğimizdeki son kural ise emailin doğru girip girilmediğini kontrol eden kuraldır. Bunu ‘email’ özelliği ile sağlıyoruz.
Bunların dışında da birçok kural çeşidi vardır:
-maxlength
-regex
-emailorblank
-lettersonly
-alphanumeric
-nopunctuation
-nonzero
Ayrıca bu listedeki kuralların dışında kullanıcı kendiside istediği bir kuralın fonksiyonunu yazıp kullanabilir.
********************
if ($form->validate()) {
$form->freeze();
}
********************
Form alanlarına girilen bilgiler submit edildiğinde if kontrolü ile bu bilgilerin kurallara uygun olup olmadığı $form->validate() fonksiyonuyla kontrol edilir ve bilgiler doğruysa $form->freeze() fonksiyonuyla ekrana gösterilir.
**************
$form->display();
**************
Son olarak $form->display() fonksiyonu hazırladığımız form alanlarının ekranda gösterilmesini sağlar.
Bu makalede html_quickform’u basit bir örnek üzerinden anlatmaya çalıştık. Html_quickform’un anlattıklarımız dışında daha birçok avantajı vardır. Daha fazla örnek inceleyerek bunları görebilirsiniz. Html_quickform’u kurduğunuzda birkaç tane hazır örnek PHP//PEAR//docs//HTML_Quickform//docs dizininin içinde olacaktır. Bunları inceleyerek daha ayrıntılı bilgiye sahip olabilirsiniz.