Birbirine Göre Değişen Seçim Kutuları

365 views
Skip to first unread message

Volkan Alakent

unread,
Apr 3, 2009, 8:46:53 AM4/3/09
to ajaxnedir
Merhaba Arkadaşlar PHP kodlama diliyle XAJAX kullanarak seçime göre
değişen bir script oluşturmam gerekiyor. İlk önce 1 seçim alanı ve
seçtikçe içinde eğer veri varsa çıkan diğer seçim alanları. (Mesela 1
kategoride kayıt varsa liste gelecek yoksa seçim işlemi tamamlandı
gibi bir mesaj yazacak.)

Lütfen bilen bir arkadaş yardımcı olaursa çok sevinirim.

Bilgilerin bulunduğu veritabanlarım:

CREATE TABLE `alisverismenu` (
`id` int(30) unsigned NOT NULL auto_increment,
`menuadi` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5 ROW_FORMAT=DYNAMIC
AUTO_INCREMENT=1 ;

CREATE TABLE `alisverismenukategori` (
`id` int(30) unsigned NOT NULL auto_increment,
`menuid` varchar(255) NOT NULL,
`kategoriadi` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5 ROW_FORMAT=DYNAMIC
AUTO_INCREMENT=1 ;

CREATE TABLE `alisverismenukategoridetay` (
`id` int(30) unsigned NOT NULL auto_increment,
`menuid` varchar(255) NOT NULL,
`kategoriid` varchar(255) NOT NULL,
`kategoridetayadi` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5 ROW_FORMAT=DYNAMIC
AUTO_INCREMENT=1 ;

CREATE TABLE `alisverismenukategoridetayici` (
`id` int(30) unsigned NOT NULL auto_increment,
`menuid` varchar(255) NOT NULL,
`kategoriid` varchar(255) NOT NULL,
`kategoridetayid` varchar(255) NOT NULL,
`kategoridetayiciadi` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5 ROW_FORMAT=DYNAMIC
AUTO_INCREMENT=1 ;

CREATE TABLE `alisverismenukategoridetayicidetay` (
`id` int(30) unsigned NOT NULL auto_increment,
`menuid` varchar(255) NOT NULL,
`kategoriid` varchar(255) NOT NULL,
`kategoridetayid` varchar(255) NOT NULL,
`kategoridetayiciid` varchar(255) NOT NULL,
`kategoridetayicidetayadi` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin5 ROW_FORMAT=DYNAMIC
AUTO_INCREMENT=1 ;


Kısaca bu veritabanlarını şöyle özetliyim. Sahibinden.com yada
gittigidiyor.com'daki gibi ürün menüleri bunlar. 1. Menüden başlayarak
değişim gerçekleşmeli bu değişimde veritabanların göründüğü gibi her 1
sonraki menü 1 öncekinin idsine göre devam ediyor.

Bir arkadaş sağolsun yardımcı oldu ama onda şöyle bir sıkıntı oldu
menüler değişti ama; kullanıcı menüleri sırasıyla seçti bitirdi ama
yanlış seçti diyelim ortada bir yerde değişiklik yapıyor ve
sonrakinler aynı kalıyordu. yani ortada değişenlerin sonundakinler
sıfırlanmıyordu. Daha sonra kayıt eklendi diyelim daha sonra bu kayıdı
güncellemek istenince menüler çalışmadı.
Sonuç olarak olmadı yani.

Yanlış anlamayın lütfen biraz fazla isteğim var galiba ama internette
aradım ama bir türlü bulamadım. Rica etsem bilen bi arkadaş bana bu
işlemi yaparsa çok memnun olurum.
Herkese teşekkürler iyi günler...

Volkan Alakent

unread,
Apr 6, 2009, 3:08:30 PM4/6/09
to ajaxnedir
galiba tam açıklayıcı şekilde anlatamdım.

şimdi yurarıda belirttiğim veri tabanlarım var
bunralda da veriler var


özetle şöyle anlatıyım.


mesela diyelimki ilk veri tabanından ülkeler
ikinci veri tabanından şehirler
üçüncü veri tabanından ilçeler
dördüncü veri tabanından semtler
beşinci veri tabanından sokaklar
gibi


birbirinden gelen verilere göre içerikleri değişecek.
yardımcı olursanız çok sevinirim


baran ipek

unread,
Apr 7, 2009, 10:45:53 AM4/7/09
to ajax...@googlegroups.com
Merhaba ,
Bende dediğine yakın bir uygulamayı http://ajax-tr.com/eyceks-kutuphanesi-ve-ornek-bir-uygulama/ linkten yararlanarak yaptım. Önce bir incele istersen burhan arkadaşımız gayet güzel anlatmış. 

Önce

2009/4/6 Volkan Alakent <v.al...@gmail.com>

Volkan Alakent

unread,
Apr 7, 2009, 3:47:22 PM4/7/09
to ajaxnedir
ben internnette birçok site inceledim ama anlaşılır gibi birşey yok. o
yüzden bu gruba yazdım.

AYRICA verdiğiniz linkin benim sorunumla hiç alakası yok !!!!
yinede teşekkürler

yardım edebilecek bir arkadaş yokmuuuuuu

Volkan Özçelik

unread,
Apr 7, 2009, 5:10:25 PM4/7/09
to ajax...@googlegroups.com
Merhaba Volkan,


>  ben internnette birçok site inceledim ama anlaşılır gibi birşey yok

Bu görüşüne kesinlikle katılmıyorum.
İnternette istemediğin kadar anlaşılır örnek olduğuna eminim.
Önemli olan öğrenmek için ne kadar zaman ayırmak istediğin.

http://www.google.com.tr/search?hl=en&q=jquery+multiple+select+database

bir başlangıç olabilir düşüncesindeyim.


> yardım edebilecek bir arkadaş yokmuuuuuu

Bu reaktif yaklaşımınla pek de yardım alabileceğini düşünmüyorum.
Bu listenin tüm katılımcıları bilgileri ölçüsünde, kendi zamanlarından feragat edip gönüllü olarak yardımcı olmaya gayret ediyor.

Soruna gelince:

Yanlış anlamadıysam 3 farklı ajax istemi göndererek 3 ayrı <select> kutusunu dondurmaya çalışıyorsun.

Ben olsam aşağıdaki yaklaşımı izlerdim:

1. öncelikle birinci select kutusunu bir ajax çağrısı yapıp programatik olarak (DOM metodları ya da innerHTML ile) oluşturup, ardından HTML DOM'a ekleyip;
2. ardından bu eklediğim nesnenin onchange olayına farklı bir ajax çağrısı bağlayıp
3. bu çağrıda ikinci HTML SELECT'in içeriğini düzenleyip. Bu HTML SELECT'in de onchange olayına bir callback bağlayıp, bunu da bir üçüncü SELECT'i oluşturmakta kullanman.

Tabii bunları yaparken perfomans için yapılan sorgu sonuçlarını Hash benzeri bir yapıda cache'lemen yararlı olacaktır.

Yardımcı olması dileğimle,
--
Volkan Ozcelik
+> Front End Architect, MessengerFX : http://www.messengerfx.com/
+> I tweet: http://twitter.com/linkibol
+> linkibol.com - in seek for quality links : http://www.linkibol.com/
+> my blog (in Turkish) : http://www.fikribol.com/donkisot/
+> Sardalya JavaScript Library : http://www.sarmal.com/sardalya/

Mahmut ER

unread,
Apr 7, 2009, 8:04:39 PM4/7/09
to ajax...@googlegroups.com
Sorunun tam olarak karşılığı Volkan Özçelik'in dediği gibi select nesnelerinin kendisinden sonra gelen diğer selectleri tetiklemesi sanırım.
Örneğinde ülke,il,ilçe,mahalle,sokak gibi birşeyden bahsetmişsin,bu yapının aynısını biz iş yerinde ürün ve kategorileri şekllinde yapıyoruz.
Nasıl yaptığımıza gelince
Biz şöyle bir yol izledik,senin örneğinden gidelim.En basit şekilde ekranda 5 tane div'in olur herbirinin id değerine ulke,il,ilce vs. gibi degerleri verirsin,daha sonra Volkan Özçelik'in dediği gibi select'in onchange olayına bir fonksiyon ata,bu fonksiyon çalıştığında kendisinden bir ajax işlemi uygulayarak ekrandaki 2 inci divin içeriğini doldurmalı ve 3,4 ve 5.ci divlerinin içeriğini ise boşaltmalısın.Diyelimki Türkiye'yi seçtin ilk olarak,2.ci divin yani il id'li div'inin içinde bulunan select'in içini illerle doldurdun ve ilce,mahalle,sokak divlerinin içindeki selectlerin içeriğini boşalttın,daha sonra gittin doldurduğun illerden bir il seçtin,bu seferde kendisindne sonra gelenleri yani ilcelerin bulunduğu divin içindeki select'i doldurdun ve mahalle ile sokak divleriin içinde bulunan select'in değerlerini boşalttın.Bu şekilde sorun çözülür zira biz bu yöntemi yaklaşık 2 yıldır kullanıyoruz ve bir sıkıntı çıkarmadı...
Son olarak çağıracağın ajax sayfası 1 tane olsun bence,sayfana öncelikle type ve ID değerin gitsin,
Type  Değer 
1       Ülke
2       İl
3       İlçe
4       Mahalle
5       Sokak(ama buna ihtiyacın olmayacak çünkü bu en son değer,bunun tetikleceği başka bir select olmayacak)
 
Örnek İlk select'de türkiyeyi seçtin(ID:89 diyelim)
Sayfamıza type olarak 1 geldi ve ID olarak 89 geldi,query'ini ona göre çekersin 89 ID'li Ülkenin illerini seç ve il selectini doldur.
il seçerken de aynı mantık ......
 
 
Umarım halledersin kolay gelsin.

 
> Date: Tue, 7 Apr 2009 12:47:22 -0700
> Subject: [ajaxnedir] Re: Birbirine Göre Değişen Seçim Kutuları
> From: v.al...@gmail.com
> To: ajax...@googlegroups.com
> Windows Live™ ile e-posta kutunuzdaki işlevlerin çok ötesine geçin. Diğer Windows Live™ özelliklerine göz atın.

Halil İbrahim TÜRKOĞLU

unread,
Apr 8, 2009, 1:21:37 AM4/8/09
to ajax...@googlegroups.com
Volkan arkadaşımın söylediği şey sanırım şunun gibi bir şey oluyor. (Kod görünümü olarak)

<script type="text/javascript">
function getlist(destination_select,source_value)
{
//Ajax ile istenen sayfaya suource_value değeri gönderilip alınan değerler
//destination_select içerisine JS veya DOM ile yüklenir
//O kodları şu anda hatırlamıyorum ama böyle bir şey sanırım.
}
</script>
<select name=sl1 id=sl1 onchange=getlist("sl2",this.value);>
<option value="..">...
.
.
</select>
<select name=sl2 id=sl2 onchange=getlist("sl3",this.value);></select>
<select name=sl3 id=sl3 onchange=getlist("sl4",this.value);></select>
.
.

Volkan arkadaşım umarım çeviri doğru olmuştur.

2009/4/8 Volkan Özçelik <volkan....@gmail.com>



--
Bu mesaj sadece Kime kısmında e-posta adresi belirtilen kişiye aittir. Lütfen o kişi siz değilseniz bu e-postayı siliniz.
--
Halil İbrahim TÜRKOĞLU
Yedek Subay Öğretmen
Intel Öğretmen Programı (Karma Model) - Uzman Öğretmen
Eğitici Bilişim Teknolojisi Formatörü
Bilgisayar Öğretmeni & Öğretim Teknoloğu
Emekli Öğrenci

Volkan Alakent

unread,
Apr 10, 2009, 3:02:11 AM4/10/09
to ajaxnedir
js bilmiyorum.
dom nedir bilmiyorum

istediğim şeyi bulamadım
ama yapacak bişey yok ne yapalım yinde tşk

Volkan Özçelik

unread,
Apr 11, 2009, 4:30:37 AM4/11/09
to ajax...@googlegroups.com
2009/4/10 Volkan Alakent <v.al...@gmail.com>

js bilmiyorum.
dom nedir bilmiyorum

Öğrenmek için istek ve merakın varsa bilmemek bir engel olamaz.

http://www.google.com.tr/search?hl=tr&q=javascript+dersleri
http://www.google.com.tr/search?hl=tr&q=DOM+nedir
 
Bununla birlikte eğer

ama yapacak bişey yok

dersen, durum aynen dediğin gibi olur ;)
 
Bu benim düşüncem tabii ki.
Herkesin kendine göre bir yoğurt yiyişi var.

Sevgiler,

R.Gokhan AYBERK

unread,
Apr 22, 2009, 11:59:01 PM4/22/09
to ajax...@googlegroups.com
Geç cevap verdiğim için özür dilerim.
Programcılık geçmişim var, ancak obje programlama ve jquery de yeniyim.
Benzer bir sorunum oldu, sizin sorudan sonra, yakın tarihte bir plug-in ile çözdüm.
 
 
Kendi yapım da şöyleydi:
* bir jqgrid im var,
* birtakım aboneler
  (işletme numaraları-> dosya -> aboneler)  şeklinde sınıflandırılmış
dolasyısı ile grid in içinin , önce işletmesi, sonra seçilen işletmenin dosyalarının seçilmesi ile ,
bu kriterlere bağlı server.php dosyasından mysql i okuyup gelen veri ile dolduruyor..
 
kısaca birinciye bağlı iki combo gerekiyordu.Zaten plugin bu işin zincirlemesini yapmak üzere tasarlanmış.
 
Anlatılanlara uygun olarak Şöyle yaptım:
 
* plugin i html sayfama ekldim, (jquery yi de eklemiştim zaten)
             <script src="jquery.chainedSelects.js"      type="text/javascript"></script>
 
* seçimin olacağı yer için bir form elemanı ekledim, kullanım talimatına uygun olarak.
   (kodlarım php içinde yer alıyor, burada sunmak için ayıklama zamanım olmadı)
 
    echo '<form name="formname" method="post" action="">';
      echo ' İşletme : ';
   get_Combo_isletme("cisletme");
      echo ' Dosya : ';
      echo ' <select name="cdosya" id="cdosya" onchange="dosyadegistir()" ></select>';
      echo '</form>';
zincirleme seçimin bir özelliği var, plugin i yazan kişi ilk elemanı html sayfanın içinde oluşturmuştu,
bende öyle yaptım.  get_Combo_isletme("cisletme")    fonkisyonu, tam olarak mysql den data alıp ilk select i oluşturuyor.
 
sonrakiler seçimler aşağıdaki kodun
$(function()  {
  içine tekrar tekrar yazılarak yapılıyor ki display, none seçenekleri ile
  eleman gizleniyor, önceki seçilince sıradaki görünür oluyor.
 
 <script type="text/javascript">
 $(function() {
  $('#cisletme').chainSelect('#cdosya','server.php?app=ide&cmd=cd',
   { before:function (target) { //before request hide the target combobox and display the loading message
         //$("#loading").css("display","block");
     //$(target).css("display","none");
     $(target).css("display","inline");
    },
    after:function (target) {//after request show the target combobox and hide the loading message
     //$("#loading").css("display","none");
     $(target).css("display","inline");
    }
   })
 });
 </script>
 
.... birincisi seçildiğinde, ikinci select in elemanları, server.php dediğim dosyadan okunarak yukarıdaki gibi yerine konuluyo,
ayrıca aşağıdaki gibi , combo larda seçtiğim iki degere göre, jqgrid tekrar dolduruluyor.
// ile bazı satırları ben kapattım, ihtiyacım, en baştan beri combo ların saklanmayıp görünür kalması şeklindeydi, orjinal hali de gözümün önünde olsun istedim.
 
 
 function dosyadegistir(){
  var isletme = jQuery("#cisletme").val();
  var dosya   = jQuery("#cdosya").val();
   jQuery("#tablo").setGridParam({url:'server.php?app=aadr&cmd=s&i='+isletme+'&d='+dosya+'&nd='+new Date().getTime(),page:1}).trigger("reloadGrid");
 }
 
 
Umarım faydası olur.
 
R.Gökhan AYBERK

msbarlak

unread,
Jun 8, 2009, 12:28:14 PM6/8/09
to ajaxnedir
daha açıklayıcı görsel kodlar varmı uygulamalı bu şekil biraz zor
oluyor

msbarlak
www.msbarlak.com

Mahmut Gündoğdu

unread,
Jun 10, 2009, 3:11:12 AM6/10/09
to ajax...@googlegroups.com
Ajax control toolkit içinde böyle bir kontrol var mutally birsey did e
hatırlayamadım google da arat ajaxcontrol toolkit diye cıkar.
Tabi bildiğim kadari ile bu kontrol toolkit asp.net de calısıyor.


-----Original Message-----
From: ajax...@googlegroups.com [mailto:ajax...@googlegroups.com] On
Behalf Of msbarlak
Sent: Monday, June 08, 2009 7:28 PM
To: ajaxnedir
Subject: [ajaxnedir] Re: Birbirine Göre Değişen Seçim Kutuları


Reply all
Reply to author
Forward
0 new messages