PHP- Eringeç Form (PHP-BOOTSTRAP-EZSQL)
PHP kullanırken frameworklardan oldum olası kaçtım..Sınıfları kullanırken sadece lazım olanı kullandım ve bol bol zamanım vardı o sistemleri yazmak için..Ama zaman ve kod kalabalığından kurtulmam gerektiğini anladım ve birkaç sınıfı,CSS verilerini tek tabloda topladım..Birkaç fonksiyon yazma ihtiyacı duydum bu arada..
Amacım neydi? – Her dakika başı form oluşturmam gerekiyor,formdaki verileri tek tek alıp tanımlamam gerekiyor,ardından onları mysql e eklemek için kontrol etmem gerekiyor falan fistan derken tüm zamanımız form doğrulama,form verilerini alıp gönderme gibi işlere gidiyordu. Hani ufak projeler olsa da zaman kaybı kötüdür..Neyse konuya dönelim;
Öncelikle PHP-Eringeç Formun hammaddesi için 2 tane hazır framework,1 tane de PHP Class kullanıyoruz ha birde yazdığım fonksiyon var.
1.CSS için Bootstrap – http://twitter.github.io/bootstrap/
2. PHP Kodlarının dağınıklığından kurtulmak için EZSQL – http://beyazitkolemen.com/ezsql-ve-php-baglantisi (Son Hali burada olması lazımdı)
3. Nesnel tabanlı bir üyelik formu için PHP-Form Builder Sınıfını alıyoruz. https://code.google.com/p/php-form-builder-class/
—-
Şimdi Eringeç Formumuzu oluşturalım..
1.PHP-Form Builder’ı oluşturalım ve sistem entegre edelim.
İndirdiğiniz klasörün içerisindeki PFBC klasörünü alalım ve karıştırmamak için localhostumuzda yeni bir dizine taşıyalım.
Önce kullanacağımız sınıfı bir tanımlayalım..Yani PHP nin kafası karışmadan ve PFBC yi entegre etmeden use kullanarak tanımlamamız gerekiyor.
1 2 |
use PFBC\Form; use PFBC\Element; |
Ekleyelim en başa.
Ardından PFBC nin ayarlarını yapmak için hemen aşağıdaki kodları ekleyelim.
1 2 3 4 5 6 |
session_start(); include("PFBC/Form.php"); $form = new Form("yeniform"); $form->configure(array( "prevent" => array("bootstrap", "jQuery") )); |
Buraya kadar naptığımızı anlatıyım. Önce session ı açtık. Sistem session istiyor PFBC.. Ardından include/PFBC diyerek form değerimizi aldık ve form sınıfımızın üzerinden yeni bir nesne türettik..Bu nesne FORM.PHP üzerindeki sınıfın özelliklerinin yeni bir sınıfa aktarılmasını sağlıyor..Yani $form degiskeniyle tanımladığımız yeni-formla istediğimizi yapabiliriz artık.
Ardından ayarlar kısmında Bootstrap özelliğini desteklediği için bootstrap ı açıyoru ve Jquery de kullanmasını istiyoruz..Bootstrap özelliğini açtığımızda formların tamamı bootstrap tabanında geliyor.
Ardından ise formumuza koymak istediğimiz alanları koyuyoruz..
Kısaca hemen PFBC Neleri destekliyor onları alıyım:
PFBC – FORM ELEMENTİ DESTEĞİ: Button, Captcha, Checkbox, Checksort, CKEditor, Color, Country, Date, DateTimeLocal, DateTime, Email, File, Hidden, HTML, jQueryUIDate, Month, Number, Password, Phone, Radio, Range, Search, Select, Sort, State, Textarea, Textbox, Time, TinyMCE, Url, Week, YesNo.
PFBC – HTML5 DESTEĞİ: Phone, Search, Url, Email, DateTime, Date, Month, Week, Time, DateTimeLocal, Number, Range, and Color.
ve JQUERY-VALIDATION özellikleri desteklemektedir..
—
Örnek olarak basit bir üyelik formu yapalım.
1 2 3 4 |
$form->addElement(new Element\Textbox("Adı:", "adi")); $form->addElement(new Element\Textbox("Soyadi:", "soyadi")); $form->addElement(new Element\Date("Dogum Tarihi:", "dogumtarihi")); $form->addElement(new Element\Textarea("Hakkında:", "hakkinda")); |
Örnek olarak 4 tane sınıf türettim..İstediğiniz kadar türetebilirsiniz..Fakat buradan sonraki kısımda asıl eringeçlik sistemi için 2 degere yani kucuk harflerle yazdığım degerlerde turkce karakteri kullanmayın ve mysql de olusturacağınız tablolara o isimleri vericez.. Yani uyeler tablomuzda (adi,soyadi,dogumtarihi,hakkinda) şeklinde bir yapı olacak.
Ve en son olarak;
1 2 3 4 5 |
$form->addElement(new Element\Button("Gönder", "submit")); $form->addElement(new Element\Button("Cancel", "button", array( "onclick" => "history.go(-1);" ))); $form->render(); |
Değerini ekliyoruz.. Gönder ve iptal butonları için de bu şekilde giriş yapıyoruz..Submit değeri önemli bizim için orayı değiştirmeyin..Gönder butonunun rengini değiştirebilirsiniz..
2. Gönderilen Verileri $_POST la alıp MYSQL e eklenecek tarza getirelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
function veriyi_ekle($tabloadi, $veri, $exclude = array()) { $sutunadi = $deger =array(); if( !is_array($exclude) ) $exclude = array($exclude); foreach( array_keys($veri) as $anahtar ) { if(is_array($veri[$anahtar])) { $lahmacun = $veri[$anahtar]; $sutunadi[] = "$anahtar"; $yenideger = array(); foreach( array_keys($lahmacun) as $keys ) { if($lahmacun[$keys] !=NULL) { $yenideger[$keys]= "" . $lahmacun[$keys] . ""; } } $yenideger = implode(",", $yenideger); $deger[] = "'" . $yenideger . "'"; continue; } if( !in_array($anahtar, $exclude) ) { if($veri[$anahtar] !=NULL) { $sutunadi[] = "$anahtar"; $deger[] = "'" . $veri[$anahtar] . "'"; } } } $sutunadi = implode(",", $sutunadi); $deger = implode(",", $deger); echo "<b>Sutun isimleri:</b></br>".$sutunadi."</br>"; echo "<b>Değerleri:</b></br>".$deger."</br>"; } |
Bu kısım test kısmıdır arkadaşlar.. Hani değerler geliyormu gelmiyor mu diye bakmak için bunu test edebilirsiniz.. Yukarıdaki yapı EZSQL sınıfına uygun şekilde düzelttim..
Buradaki mantık: $_POST olarak gönderdiğimiz form verileri gidiyor ve post array değeri olan yani başta tanımladığımız adi,soyadi,dogumtarihi,hakkinda olan isimleri alıyor ve değerlerini de hizalıyacak şekilde karşısına yazdırıyor. .(Yukarıdaki kodu çalışıyor mu diye test edin diye veriyorum)
Bende örnek olarak çıkan veri şu şekilde;
Bu kodu fonksiyonlarınızın olduğu dosyaya kayıt etmeden önce;
Hemen bir EZSQL bağlantısı yapalım ve tablolarımıza ekleyelim..
Onu bu yazımda detaylı olarak anlatmıştım. http://beyazitkolemen.com/ezsql-ve-php-baglantisi
Öncelikle bir veritabanı oluşturalım hemen;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
-- -- Veritabanı: `yenitablo` -- -- -------------------------------------------------------- -- -- Tablo için tablo yapısı `uyeler` -- CREATE TABLE IF NOT EXISTS `uyeler` ( `id` int(11) NOT NULL AUTO_INCREMENT, `adi` varchar(255) CHARACTER SET utf8 COLLATE utf8_turkish_ci NOT NULL, `soyadi` varchar(255) CHARACTER SET utf8 COLLATE utf8_turkish_ci NOT NULL, `dogumtarihi` date NOT NULL, `hakkinda` varchar(255) CHARACTER SET utf8 COLLATE utf8_turkish_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; |
ve ardından fonksiyonumuza ezsql komutunu ekleyelim.
Yani fonksiyonla göndereceğimiz tablo adı + postla göndereceğimiz verilerin fonksiyon sonrası halini Ezsql ile ekleyelim (En alttaki degerin üstüne eklersek).
1 |
$ekle= $db->query("INSERT INTO {$tabloadi} ({$sutunadi}) VALUES ({$deger})"); |
Son olarak eğer bir post işlemi yapıldıysa fonksiyonumuzun çağrılmasını istiyoruz;
1 2 3 |
if($_POST == TRUE) { $fonksiyoncagir= veriyi_ekle("uyeler", $_POST, "submit"); } |
Burada uyeler olarak oluşturduğumuz tabloyu söylüyoruz ve submit değişkenini $_POST fonksiyonda hariç tutuyoruz.
Ve son olarak tüm dosyaları size gönderiyoruz 🙂
—
Yazı baya bir uzun oldu ama detaylı anlatmak istedim..Ayrıca PFBC nin bir çok özelliği var.Bootstrap class değerleri vs kullanmak için bir array içerisinde required (zorunlu),class,longdesc,shortdesc gibi Bootstrap özelliklerini de kullanabiliyorsunuz..
Onları da anlatıcaktım ama gözlerim pert oldu..
Kolay gelsin.
Bir Cevap Yazın