En iyi yöntem - adım bir MySQL veritabanı adım sorgulanıyor?

1 Cevap php

JQuery ve AJAX ile PHP 5, MySQL 5 ve Javascript kullanan bir web uygulaması inşa ediyorum.

Uygulama kullanıcı herhangi bir sırayla seçim birkaç açılan menüleri ile oldukça karmaşık bir seçim süreci olduğunu. Her bir pulldown seçtiğiniz diğer Pulldowns de seçimler sınırlamak ve sonunda sınırlı bir sonuç kümesi verecek biraz daha seçim kriterlerinin verecektir.

AJAX sunucusu ve MySQL veritabanı üzerinde PHP'nin bağlayan ile istemci tarafında Javascript kullanıyorum, fikir kullanıcı bir pulldown bir şey seçer her zaman tüm diğer Pulldowns güncellemek için bir AJAX isteği göndermek olmasıdır. Olası tüm parametreleri ayarlanmış edildiğinde bir sonuç kümesi sunulacak.

(AJAX kullanarak bunun, çeşitli nedenlerle sunucu tarafında mantığı tutmak istiyorum.)

Şimdi, her kullanıcı için bu "tekrarlayıcı" sürecini işlemek için en iyi yolu nedir emin değilim:

I have a table with all the criteria that each selection result in. Since each pulldown selection will result in a set if selection criteria I could store a query string on the server that is being added to for each selection. I then run the currently stored query string to find out what should go into each pulldown, send that data to the client, then store the query for later when more criteria will be added, run, send etc, etc... Then I have to store that query string on the server for each user, perhaps in a text file. Or perhaps as a stored procedure, see below....

Başka bir yaklaşım, bir seçim yapıldığında, Yani geçici tablo olacak sonra vs vs üzerinde sonraki sorguyu çalıştırmak geçici bir tabloda seçimi depolamak, Pulldowns güncelleştirmek için veri göndermek sadece yeni kriterlerle sorguyu çalıştırmak olacaktır Ben sonucu sunmak kadar her seçim için küçültmek.

App .... aynı anda çalışan birçok kullanıcısı olabilir, bu yüzden muhtemelen bir şekilde çerez / oturum kimliği ile kullanıcıları tanımlamak gerekir (?)

Ve saklanan sorgu veya geçici tablo nasıl .... her kullanıcı bırakır, bir süre sonra uzak ölmeli?

Seçim yöntemleri seçimi için karmaşık hesaplamalar için izin veren bir tablodan seçmek için daha fazla ve daha fazla ölçüt eklemek için:

  • Katılmak kullanma

  • Daha sınırlı yeni kriterler eklendiğinde kayıtlar kaldırılır gibi ediliyor geçici bir tablo kullanma.

  • Subselections kullanma.

Her kullanıcı için her adım arasında yolda tutmak için depolama yöntemleri:

  • Mağaza bir sunucu dosyası parametreleri ve her adım için tüm veritabanı üzerinde yeni bir sorgu yapıyor, her seçim adımda için sql veya saklı yordam içine yerleştirin, ancak her zaman daha fazla kriterlere eklenmiştir.

  • Bir dosya (lar) bir sql sorgusu Mağaza ve her adım için bunu genişletmek ....

  • Bir tablo / alan bir sql sorgusu Mağaza .....

  • Bir saklı yordam bir sql sorgusu Mağaza .....

  • Daha küçük ve daha fazla kayıt her adım için kaldırılır gibi daha küçük olacak temopary tablodaki her bir kullanıcı için bir önceki seçime gerçek sınırlı sonuç kümesi saklayın.

  • Her seçim için sunucuya hepsini göndermeyi, oturum sırasında istemci tarafında parametreleri saklamak

Herkes bu kararı ile yardımcı olabilir mi?

Rgds PM

1 Cevap

Ben tavsiye ederim iyi yaklaşım kutusu bir kullanıcı tarafından değiştirilebilir aşağı açılan, her seferinde farklı bir sorgu bir değer çalıştırmak olacaktır. Eğer kutuları aşağı 5 damla varsa kullanıcı ilk kutuda değerini değiştirdiğinde, sizin AJAX sayfasından sorguyu çalıştırın:

SELECT * FROM table WHERE val1 = x;

Kullanıcı başka bir değeri değiştirmek için karar sonra bir kez, örn, bir daha daralmış sorgu çalıştırabilirsiniz

SELECT * FROM table WHERE val1 = x AND val2 = y;

Sonra kutuları aşağı bütün açılan değişti kadar bu işlemi tekrarlayabilirsiniz.

Geçici bir tablo veya saklı yordamını kullanarak gelince. Bu muhtemelen size ulaşmak için çalışıyoruz ne için gerekli değildir ve sadece projeye gereksiz karmaşıklığı eklemek muhtemel olduğunu söyleyebilirim.

Eğer alanlar ön ucundan kontrol edilmesi gereken hangi biliyorsanız çalıştırmak gerekenleri sorgu karar ve sonuçları (XML / dönebilirsiniz böylece, o zaman sadece AJAX sayfasına kutuları açılır menüden seçilen değerleri göndermek gerekir json) Bunun için çok iyi olurdu.