PHP genel Bildirime İfade Oluşturucu

8 Cevap php

Dostlarım,

Ben uygulamalarının bir grup için ortak eminim PHP5 UI bir parça oluşturmak için arıyorum. Temel olarak, kullanıcıların bu gibi mantıksal operatörler (VE / VEYA) aracılığıyla birleşik ifadeleri belirtmek için izin veren bir ifade oluşturucu bulunuyor:

  • FieldX> 3 VE Fieldy = 5
  • Fieldy = "bob" ve FieldZ boş değil
  • FieldX> '5 / 23/2007 'OR (Fieldy = 5 AND Fieldy değil null)

İdeal olarak, böyle bir sistem, bir programcı olarak bana kullanıcı seçebilirsiniz parametreleri (sütunlar) listesini ve her biri için veri türünü belirtmek için izin verecek. Ayrıca böyle ifadeleri tanımlamak için bir güzel, kullanıcı dostu bir arayüz sağlamak istiyorum - Ben her satır birkaç toplayıcıları olan bir tablo, böyle bir şey hayal ediyorum:

[Column] [Condition] [Value] [AND/OR] [Column] [Condition] [Value] [AND/OR] ...

Eğer böyle bir şey yapar bir açık kaynak bileşeni biliyor musunuz? Ya da işlevsellik bu tür bir parçası mı?

8 Cevap

Dikkatli bir kelime. Genel ifadesidir inşaatçılar Bu tür yaygın kullanıcı sorunları çeşitli olarak mükemmel çözümler düşünülmektedir. Düşünce bu doğrultuda gitmek eğilimindedir:

  • Kullanıcı tüm bu farklı raporları istiyor
  • (Onlar bunu anlayamaz bile) biz onlara SQL erişim veriyoruz yolu yok
  • Hepimiz bu özel raporlar yazmak için zaman yok
  • Bu nedenle, belirli bir sözdizimi, tabloları ve alanları bilmek zorunda kalmadan onları sorguları yazmak için kolay bir yol yapacağız.

Bu mutlaka kötü bir fikir değil, ama ne benim şirkette bulduk olmayan teknik okul kullanıcıların Eleştiri bir grup ya da ORS bir grup daha şaşırtıcı zorluk anlayış ve yapı ifadeler daha karmaşık olması. Çoğumuz muhtemelen biz programlamak öğrendi bile önce Boole mantığı sezgisel bir anlayış vardı bize programcılar, kavramak için bu zordur.

Ben onlara istediklerini ifade oluşturmak için tam bir esneklik vermek için denemek değil tavsiye ederim, ve bunun yerine birlikte size programcı arka-uç daha karmaşık bir şey tanımlamak sağlar ama ön-kullanıcı basit seçimler veren bir UI koymak sonunda. Bu kolay tabii, yapılır daha söyledi.

Unutmayın - onlar bile bile, kesin bir şekilde kendi düşüncelerini formüle nasıl bilmiyorum çünkü bazen son kullanıcılar için zorluk onlar içeri kendi fikrini ifade etmek için doğru sözdizimi bilmiyorum gerçek değildir Daha sık bu kadar onlar bunu kolay bir şekilde sağlandı.

NOT: Ben son kullanıcıların her zaman geri zekalı demiyorum - akıllarını bizden farklı deli geliştiriciler çalışabilir sadece.

Bu tam bir bileşen değil, ancak işlevsellik bu tip katı bir PHP uygulaması için Shopping Cart rule builder in Magento in Koşulları sekmesine bir göz alabilir. Bu e-ticaret yönelik özelleştirilmiş, bu yüzden genel bir veritabanı bindirme değil, ama büyük bir durumdur oluşturucu arayüzü var.

Bu çok ilginç bir fikir olduğunu düşünüyorum. Kişisel kullanım için veya çalışma sayesinde bu proje üzerinde çalışmaya planlıyor musunuz?

Eğer kişisel olarak bu proje üzerinde çalışıyoruz planlıyorsanız, belki bunu kendiniz yazmak ve bir açık kaynak projesi çevirmek gerekir. Orada bu alanda bazı ilgi zaten ve iyi bir öğrenme deneyimi olacak gibi görünüyor.

Aksi takdirde, ben bir şirket böyle bir şey değeri bulmak nasıl görebilirsiniz. Bu programcılara onları biraz daha kolay iş yapmak ve uzun vadede temettü ödeme yardımcı olabilir başka bir yardımcı program verecek.

Her iki şekilde de, bu proje kazanmak olduğunu. Sen çok öğrenmek, ve diğer insanların yararlı bir şey yaratacaktır.

Bu göz atın: http://www.codeproject.com/KB/custom-controls/SqlWhereBuilder.aspx

Bileşenin istemci tarafı JavaScript Kütüphanesi sürümünü indirin ve ihtiyaçlarınıza göre özelleştirebilirsiniz. Şerefe.

Bunu genel olarak PHP daha UI daha ilgili olduğunu düşünüyorum. Siz daha sorunuzu yeniden etiketlemek istiyorum. Belki de sadece bu durumda ben preg_replace_callback kullanarak öneririm, PHP bu tanımları ayrıştırmak istiyorum.

Ben bir nesne odaklı sorgu modeli oluşturarak başlamak istiyorum. Örn. Criteria-objects. Bir sonraki adım, bu model yapısının manipülasyon sağlayan bir UI yazmak için daha sonra.

Geçenlerde IMHO, kendi uygulama yazmak kolay, kendim gibi işlevleri yapılır ve var.

neden bir şablon motorudur smarty hangi kullanarak dont denemek. sadece kullanıcı girişi almak ve ayrıştırmak gerekir.

Düşünüyorum şimdi, herhangi bir şekilde bunu enjeksiyonları önlemek için kullanıcı girişi kontrol gerekir.