Anasayfa > Programlama > PHP > < SELECT > HTML Kontrolunu Otomatik Hale Getirmek?
Makaleye verilen puanlar Makaleye verilen puanlar

< SELECT > HTML Kontrolunu Otomatik Hale Getirmek?




Problem:Bazi HTML kontrollerinin yazilmasini PHP ile
programlayarak otomatik hale getirmek ve her seferinde HTML taglarini elle
yazmak derdinden kurtulmak istiyorsunuz.
Cozum: Ornek bir otomasyon programi hazirlayalim...

while dongusunu calistirip dizimizdeki ogeleri birer birer <option> html taginin
(etiketinin) arasina yazdilaralim:
<?php print "select name="secim_kutusu">"; foreach ($secim_dizisi as $isim
=> $deger ) { print "<option value="$deger">$isim</option>n"; }
Ileri seviye Cozumler ve konunun tartisilmasi : Bu sekilde yaratilan HTML ve
Javascript kodlari sayfalarin hazirlanmasinda inanilmaz bir kolaylik saglar.Sadece
bu basit teoriyi kullanarak otomatik tablo hazirlama,listeler olusturma,ve hatta
hatta butun bir web sitesini sifirdan yaratmak mumkundur.

Simdi biraz da yaraticiligimizi kullanarak web sitemiz icinde kullanilmak uzere bir
fonksiyon yaratalim.Bu fonksiyon ile tum web sitesinde kullanacagim <select>
listelerini otomatik hale getirecegim.Ben fonksiyonu yazmayi bitirdigimde artik
elimdeki o buyuk is yukunden kurutulup,sadece fonksiyona -listenin ogelerini,o
ogeler secildigi zaman kontrolun alacagi degeri,ve on tanimli olarak secilmis
olacak ogeyi - soylemem yeterli olacak.Bunun icin sozu fazla uzatmadan
programi yazmaya basliyorum :

Once program icin bir ornek uzerinde degiskenleri tanimlayayim :

$cikti : Bu degisken icinde, <option> </option> etiketleri arasina girecek olan
liste ciktisi saklaniyor.

$deger : Bu etiketlerin arasina yazilan her bir secenek icin deger saklaniyor.

$secilmis_oge : Bu kontrol icin onceden tanimli olan ve sayfa acildiginda secili
halde bulunacak olan oge degeri saklaniyor.

$aciklama : Bazen liste kutularinin ilk ogesi olarak kullanilan aciklama ogesi.(Bir
meslek seciniz, bir renk seciniz vb.)
<?php function html_select_kontrolu ($cikti,$degerler = NULL , $secilmis_oge =
NULL, $aciklama = false) {

/* Fonksiyona herhangi bir veri giris saglanmadi ise calismayi bitir. */ If
(empty($cikti)) return;

/*Argumentleri diziler haline getir.*/ settype ($degerler, "array"); settype
($cikti, "array"); settype ($secilmis_oge, "array");

/* Dizilerin element sayilarini hesapla.Yani her dizi icinde kac tane oge var bu
sayi bulunuyor...*/ $cikti_sayisi = count($cikti); $deger_sayisi =
count($degerler);

/*HTML ciktisini sekillendirmeye basliyoruz.Once degiskenin icini bosalatiyorum.

Eger $aciklama degiskeni tanimlanmis ise onu listemizin ilk ogesi iicnde yer
almasini sagliyorum. */

$html_ciktisi = "";

if ($aciklama) { $html_ciktisi = "<OPTION value="">"; $html_ciktisi .=
"$aciklama</OPTION>n"; }

/*Dongumuzu yazmaya basliyalim.En basta buldugum,her dizinin eleman sayisini
iste burda dongumuzun sinirlarini tayin etmek icin kullanacagim.On tanimli
secilmis ogeyi yapilandiracam ve listenin her uyesi icin tanimli bir deger varmi
diye kontrol edecem.

Bu degerleri sirasiyla birbirleri icin cifler olusturacak sekilde dongunun html
ciktisini olusturmasini saglayacagim.

*/

for ($i=0; $i<$cikti_sayisi; $i++) {

//Default olarak,degeri secilen ogemi diye kontrol et $ontanimli_oge_kontrol =
$degerler[$i]; $html_ciktisi .="<OPTION"; if ($i < $deger_sayisi) { $html_ciktisi
.= " value="".$degerler[$i]."""; } else { //Eger birden fazla cikti varsa, //ciktiyi
secilen oge mi diye kontrol et

$ontanimli_oge_kontrol = $cikti[$i]; }

if (in_array($ontanimli_oge_kontrol, $secilmis_oge)) { $html_ciktisi .= "
selected";

} $html_ciktisi .= ">".$cikti[$i]."</OPTION>n";

}

return ($html_ciktisi);

}
?>
Programin isleyisini aciklamak istersek :

Birinci argument ile, liste kutusu icinde goruntulenecek secenekleri
tanimliyoruz.Ikinci argumentle bu liste kutusu icinde goruntulenecek secenekler
icin "degerleri" tanimliyoruz.Sonucta bu seceneklerden birisi secildigi zaman bu
"deger" server tarafina gonderilecek.Ucuncu argument ile ontanimli olark hangi
secenegin sayfa yuklendigi zaman gosterilecegini tayin ediyoruz.Dorduncu
argument ile ,liste kutusu icin bir aciklama secenegi olsuturuyoruz.Bu secenek
cogu zaman "--Hangi ayda dogdunuz?--" gibi bos bir secenek olacaktir.

Simdi fonksiyonumuzu nasil kullanacagimiza bakalim :
<?php $renkler = array("Kirmizi", "Yesil", "Mavi", "Turuncu"); $renk_degerleri =
array("#ff0000", "#00ff00", "#0000ff", "#ff8000"); $secilmis_oge = "#ff8000";

print html_select_kontrolu($renkler,$renk_degerleri,$secilmis_oge,"--Bir renk
seciniz--"); ?>
Bu kodun ciktisi asagidaki gibi olacaktir :

<OPTION value="">-- Bir renk seciniz--</OPTION> <OPTION value="#ff0000">
Kirmizi</OPTION> <OPTION value="#00ff00">Yesil</OPTION> <OPTION
value="#0000ff">Mavi</OPTION> <OPTION value="#ff8000" selected>
Turuncu</OPTION>
Saglicakla kalin ,

Serkan Hadi Ceylani serkan@turk-php.com

Program: http://www.turk-php.com/ornekler/select_kontrolu.php Referans:
http://www.turk-php.com/ornekler/select_kontrolu.phps


Bu makalenin yazar yada kaynağını bildirmek için tıklayınız.

Digg this Post! Add Post to del.icio.us Bookmark Post in Technorati Furl this Post!
Eklenme tarihi: 3-2-2006

Bu Makaleye Verilen Puan:    Makaleye verilen puanlar Makaleye verilen puanlar
Bu Makaleye Puan Ver  

Bölüm Başlık Kullanıcı Yorumları


Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !

Yorum Ekle  

Reklam Netinternet
Gizlilik | Copyright © 2006-2009 ™ Tüm hakları saklıdır.
Powered by BilgiPortal v2.2