MySQL, PHP / JavaScript / Ajax / jQuery kullanarak bağlantılı açılan listeler

4 Cevap php

Ben web geliştirme için oldukça yeni duyuyorum ve temelde her seçim diğer tüm listelerde seçimler sınırlamak nerede kullanıcı 5-15, tek bir sayfada listeler aşağı çekme gösterecek bir web uygulaması geliştirmek için bir görev var. Kullanıcı herhangi listelerden birinde (yani hiçbir set seçim sırası) ve kullanıcı her listede bir şey seçtiğiniz veya tüm parametreler aksi önceki seçenekler tarafından kilitlendiği kullanıcı GO butonuna basın ve bazı hesaplamalar ile başlamak gerekir Bir veritabanı seçki sunuyor, yer alacaktır. Temelde bir muliple parametre, ürün seçici uygulamasıdır.

Listeleri arasındaki ilişkiler basit değildir, ve vb hesaplanan alanları ihtiyaç olabilir, ve bir liste birkaç başkalarının içeriğini etkileyebilir. Veritabanı arkasında belki 30 alanlar ve 500-5000 satır ile, muhtemelen tek bir büyük tablo MySQL olacak. Değil güçlü bir nedeniniz yoksa ben PHP, JavaScript ve belki de AJAX kullanarak olacaktır.

Ben biraz araştırma yaptım ve bunu yapmak için üç yol bulduk:

  1. Tarayıcıya tüm veri gönderme ve JavaScript ile filtreleme vb istemci tarafında ele.

  2. Her seçimden sonra parametreleri sunucuya geri göndermek ve her seçimden sonra tüm formu yenkimliken. PHP Muhtemelen bir littebit Javascript ve en kodu.

  3. Tüm formu yenkimliken olmadan dinamik olarak tüm liste içeriğini değiştirmek için AJAX kullanın.

Ben gitmek için bir sabit zaman söylüyorum bir yolu var, bu kadar yeni olduğum için, ne vb vardır tuzaklar ..

Bazı conserns var:

A. Yavaş başlangıç ​​yükleme. # 1 için kötü?

B. dinamik tepki Yavaş. # 2 için kötü?

C. Karmaşık programlama. # 3 için kötü?

Farklı tarayıcılar ve plattforms D. uyumluluk sorunları. Biraz Framework kullanırsanız daha iyi ... sorun yaratmak için en muhtemel yöntem hangisi hiçbir fikrim yok?

E. ben bile en azından yarı-çalışan javascript ile insanlar için bir şey kapalı yapmaya çalışın misin? (Yeni bir sayfada her listesini seçerek ve GO düğmesine her zaman basın zorunda gibi)? Belki de 2. en iyi burada (Ben .... Ben bu kadar büyük bir konuda Javascript olması gerekir benim kullanıcıları söylersin?)

F., "özgür seçim düzeni" özellikleri başlangıçta veritabanı çoğu indirmek zorunda, bu yüzden belki de ben bunu devam edersem ben de yöntem 1. kullanabilirsiniz ..... bu seçeneği önlemek için çalışmalısınız demektir düşünüyorum veya p?

G. O # 1 için büyük bir eksi verir böylece, özel SQL kodunu kurarak gelecekteki uzantıları izin SQL selction / filtreleme mümkün olduğunca yapmak için iyi olurdu ...

H. Diğer tuzaklar vb??

Ben her üç yöntem için öğreticiler vb bulduk, ama böyle iyi kaynaklara işaret eğer ben özellikle yüzden iyi / uyumlu / akıllı olmayan örnekler üzerinde benim kod tabanı yok, bunu takdir ediyorum ....

1: http://www.bobbyvandersluis.com/articles/unobtrusivedynamicselect.php http://javascript.about.com/library/bl3drop.htm http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q%5F20523133.html

2: http://www.plus2net.com/php%5Ftutorial/php%5Fdrop%5Fdown%5Flist.php http://www.plus2net.com/php_tutorial/php_drop_down_list3.php

3: http://techinitiatives.blogspot.com/2007/01/dynamic-dropdown-list-using-ajax%5F29.html http://www.webmonkey.com/tutorial/Build_an_Ajax_Dropdown_Menu http://www.noboxmedia.com/massive-ajax-countryarea-drop-down-list/ http://freeajaxscripts.net/tutorials/Tutorials/ajax/view/Create_AJAX_Dynamic_Drop_Down_List_using_PHP_-_xajax.html

3+jQuery: http://remysharp.com/2007/01/20/auto-populating-select-boxes-using-jquery-ajax/

Şimdi soru: herkes tüm bu yöntemlerin deneyimli olabilir bu yüzden birini seçebilir ve doğru yolda başlamak yukarıdaki yollarla 1-3 değerlendirilmesi ile, biraz bana yardım? Ayrıca, ben bu jQuery + json gibi bir çerçeve unsing / öğrenme yardımcı olacak?

Rgds PM

4 Cevap

Send all data to the browser and handle the filtering etc client side with Javascript.

Eğer tablo potansiyel 30 sütun ve satırlar 500-5000 olduğunu belirtmiştik? . Bu durumda o kadar sayfa yük zaman bu kadar veri göndermek iyi bir fikir olmaz:. 1. Bu sayfa yüklemek için yavaş ve 2 yapacaktır It (IE düşünüyorum) tarayıcı asmak yapmak olasıdır.

Send parameters back to the server after each selection and reload the whole form after each selection. Probably a littebit Javascript and most code in PHP.

Ben bu üçüncü yaklaşımdan çok farklı nasıl emin değilim, ama muhtemelen siz sayfayı yeniden yüklemeniz gerekir demek? Bu durumda onlar seçim değiştiğinde aşağı her seferinde bir damla yenilemek için sayfa için beklemek gerekiyorsa, iyi bir kullanıcı deneyimi olması muhtemel değildir ..

Use AJAX to change all list content dynamically without reloading the whole form.

Bu formu doldurarak basit yapar gibi bir kullanıcının bakış açısıyla çok iyi yaklaşımı ile. Belki biraz sert sonundan itibaren uygulamaya, ancak büyük olasılıkla çözümlerin her biri ile aynı hesaplamaları yapmak gerekir gibi - hem de veri almak için AJAX ile adlandırılan ayrı bir sayfada bunları hareket olabilir. Diğerleri de söylediğim gibi, tüm JavaScript / AJAX şeyler için jQuery kullanarak ;) işler çok bir cehennem kolaylaştırmak için gidiyor

Ben kesinlikle jQuery ile AJAX kullanarak tavsiye ediyorum onun büyük tarayıcılarda tüm test ve kod için çok daha hızlı hale getirecek ve normal JavaScript tarayıcılar uyumluluk sorunları olmazdı basit çağrıları vardır.

Benim kişisel önerim AJAX ile gitmektir.

Ham SQL ya da gerçekten ne kullandığınız arka uç bir sorudur.

Sen farklı seçimler arasında ilişkileri ayarlamak gerekiyor. Listelerin nüfus backend ile iletişim kurabilmesi gerekir.

Burada asıl sorun, seçimler arasındaki ilişkileri uygulamak nasıl. Ben burada hiç iyi cevap, bu uç ve idari ihtiyaçlarına büyük ölçüde bağlıdır. Zor PHP kodlu veya XML yoluyla veya yönetim arayüzleri üzerinden yapılandırılabilir ve veritabanı çözümü için kalıcı olabilir.

Bu tamamen özelleştirilebilir yapmak hiç kolay bir görev.

Eğer herhangi bir seçim herhangi bir değişiklik üzerine filtre gerekir çünkü ben AJAX kullanarak önermek neden nedeni temelde. Demek ya kullanılmayan bilgi veya sayfa yenileme bir sürü bir sürü indirmek istiyorsunuz. Ajax ile gitmek pürüzsüz bir deneyim kullanıcıya tüm yol verir.

jquery kullanmak için bir Simpple yoldur ... Ayrıca xajax adı verilen özel bir sınıf deneyebilirsiniz ..! Bu malzeme daha kolay yapacaktır.