php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 29-10-2012, 14:14
schmidtsmikey
 Registrierter Benutzer
Links : Onlinestatus : schmidtsmikey ist offline
Registriert seit: Nov 2004
Beiträge: 25
schmidtsmikey ist zur Zeit noch ein unbeschriebenes Blatt
Standard Strategie: Produktfilter wie bei "eBay"

Hallo zusammen,

ich stehe vor einem Projekt, einen dynamischen und universellen Filter auf Produktlisten zu programmieren und benötige hierfür einfach mal ein paar grobe Richtungen / Strategien, in die ich mich einlesen kann.

Als Vorbild nenne ich mal eBay (Beispiel-Kategorie) oder Testberichte (Beispiel-Kategorie).

Unversell heißt für mich: es gibt unterschiedliche Kategorien mit unterschiedlichen Produktattributen (ein Smartphone hat andere Attribute wie ein Fernseher)

Dynamisch heißt für mich, dass die Listen nach Betätigung neu erstellt werden (komisch ausgedrückt, aber das was man typischerweise erwartet, wenn man filtert).

Ich bin immer wieder auf die Kombi jQuery + AJAX gestoßen und stehe kurz davor, mir Literatur zu beiden Themen zu besorgen (PHP, MySQL, JavaScript-Grundlagen Kenntnisse habe ich).

Wäre ein Pro oder Kenner so nett, mir die grobe Richtung sagen, bevor ich in den endlosen Weiten der <forms> und $_POST untergehe :-) Eventuell gibt es ein passendes Online-tutorial, welches ich bis jetzt noch nicht gefunden habe.

Vielen Dank!
Mit Zitat antworten
  #2 (permalink)  
Alt 29-10-2012, 16:06
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht hilft dir das Tutorial weiter.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 29-10-2012, 18:22
ezkimo
 Registrierter Benutzer
Links : Onlinestatus : ezkimo ist offline
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 279
ezkimo befindet sich auf einem aufstrebenden Ast
ezkimo eine Nachricht über ICQ schicken
Standard

Ich habe soetwas für einen meiner Kunden für die Ergebnisansicht in einem Vergleichsrechner realisiert. In puncto Herangehensweise gab es hier mehrere Ideen. Von der eigentlichen Idee her ähnelt es aber Deinem beschriebenen Vorhaben. Grundsätzlich wird die Filterung der Ergebnisse mit Ajax / Javascript umgesetzt. Zuerst wird ein Gesamtergebnis ermittelt. Anhand mehrerer Filter-Optionen kann der User aus diesem Ergebnis, je nach gewähltem Filter, auch nur eine Teilmenge anzeigen lassen. Die Filter sind als Radio Buttons aufgelistet und auch kombiniert auf das Ergebnis anwendbar.

Sobald der User eine Filteroption wählt, wird asynchron per Javascript eine PHP Datei aufgerufen, die das Gesamtergebnis nach gewähltem Filter auswertet und zurückgibt. Das zurückgegebene Ergebnis wird per Javascript in das vorhadene DOM eingebunden.

Du solltest Du eventuell auch Gedanken über das Thema Cache machen. In meinem Fall wird das Gesamtergebnis zwischengespeichert. So wird das Gesamtergebnis nur einmal aus einer MySQL Datenbank ermittelt. Danach wird das zwischengespeicherte Ergebnis immer wieder durch die gewählten Filter durchlaufen. Anstatt bei jeder Filterung eine neue Datenbankabfrage auszuführen, wird das zwischengespeicherte Ergebnis immer wieder durchlaufen. In diesem Zusammenhang macht es eventuell auch Sinn sich den FilterIterator anzusehen.

... und lies Dir auf jeden Fall das Tutorial vom Kropff durch.
__________________
MM Newmedia | MeinBlog
Mit Zitat antworten
  #4 (permalink)  
Alt 30-10-2012, 21:57
schmidtsmikey
 Registrierter Benutzer
Links : Onlinestatus : schmidtsmikey ist offline
Registriert seit: Nov 2004
Beiträge: 25
schmidtsmikey ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo, vielen Dank für die Rückmeldung. Ich habe heute begonnen, mir das Tutorial anzuschauen. Genau in die Richtung soll es gehen.

Leider ist in dem Tutorial der Part mit den MySQL-Abfragen etwas zu kurz gekommen, und der Fokus liegt auf dem AJAX-Handling.

Zur Zeit grüble ich über folgende Punkte nach:
  • Wie kann ich Formularfelder und die anschließende Auswertung mit WHERE-Bedingungen im SQL-Query so vereinheitlichen, dass sämtliche Informationen aus der DB kommen. Aufgrund der Komplexität (Zwar gleicher Produktstamm (Hersteller, Preis usw.), aber hunderte Kategorien mit unterschiedlichen Produkt-Eigenschaften) kann ich unmöglich für jede Produkteigenschaft ein Formularfeld hard in den Quellcode schreiben. Dann sitze ich in 10 Jahren noch dran. Informationen über Produkteigenschaften liegen relational in der Datenbank und liefern Infos über Formulartyp (Text, Radio, Select usw). Ich werde mir also eine Klasse programmieren, die die formularfelder generiert, eindeutig definiert und Filter / Where Anweisungen dementsprechend setzt.
  • Warum muss ich das komplette Ergebnis der Datenbankabfrage in XML oder JSON vorhalten, um dann darauf zu filtern? Warum nicht einfach eine neue DB-Abfrage mit den entsprechenden Where-Bedingungen? Dann würde ich AJAX dazu verwenden, um die Seite nicht neuzuladen.
Mit Zitat antworten
  #5 (permalink)  
Alt 31-10-2012, 08:49
ezkimo
 Registrierter Benutzer
Links : Onlinestatus : ezkimo ist offline
Registriert seit: Apr 2005
Ort: Beckum / Westf.
Beiträge: 279
ezkimo befindet sich auf einem aufstrebenden Ast
ezkimo eine Nachricht über ICQ schicken
Standard

Zu Deinen Fragen:
1. Du könntest alle zugeordneten Eigenschaften und Kategorien mit der Suchabfrage ermitteln und diese dann so gruppieren, dass deren Ausgabe einen Sinn macht. Eventuell macht es auch Sinn nicht alle Eigenschaften auf einmal auszugeben. Ähnlich wie bei Amazon z.B., welche die Eigenschaften zu einem Produkt erst nach und nach zur Auswahl bereit stellen. Erst die Kategorie wählen und dann alle anderen ...
Natürlich macht es Sinn die Produkteigenschaften dann auch dynamisch zu generieren. Sie hardcodiert im Quelltext festzuhalten macht absolut keinen Sinn.

2. Du musst gar nichts. Zugegeben ist die Rückgabe in JSON oder XML sinnvoll. Du könntest die Rückgabe mittles einer Template Engine aber auch schon als komplett zusammengestelltes Template liefern. JSON und XML bieten den riesigen Vorteil, dass sie universell einsetzbar sind. Du könntest sowohl JSON als auch XML mit Javascript parsen und daraus dann die Darstellung generieren.
Die Rückgabe an sich sollte nichts mit der Filterung zu tun haben. Grundsätzlich könntest Du auch mit Javascript filtern. Aber aus meiner Sicht macht es eher Sinn das Ergebnis bereits auf dem Server mit PHP vor der Rückgabe entsprechend zu filtern. Dies kannst Du, wie Du selbst schon sagtest, mit entsprechenden Where-Bedingungen in einem SQL Query erreichen, oder eben mit anderen Filter Techniken, wie z.B. mit dem oben erwähnten FilterIterator.
__________________
MM Newmedia | MeinBlog
Mit Zitat antworten
  #6 (permalink)  
Alt 31-10-2012, 16:21
schmidtsmikey
 Registrierter Benutzer
Links : Onlinestatus : schmidtsmikey ist offline
Registriert seit: Nov 2004
Beiträge: 25
schmidtsmikey ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So, ich bin jetzt einen Schritt weiter, da mich mir mal das bestehende DB-System angeschaut habe. Ist in weiten Teilen normalisiert und wichtige Informationen wie Formular-Typ und Werte erhalte ich aus der DB. Daraus kann ich die Formularfelder universell generieren.

Wegen XML/JSON: da lese ich mich noch ein. Notfalls geht es via Ajax und Where-Statements im SQL-Query.

Jetzt aber noch einmal eine Frage zum Datenbank-Design:

Was ist besser?
  • Eine riesige Tabelle mit sehr vielen Spalten
  • Viele Tabellen mit wenig Spalten

Nachteil bei 1. sehe ich darin, dass für jedes Produkt eine riesige Tabelle durchgesucht werden muss.
Nachteil bei 2. Liegt darin, dass MySQL für jede Tabelle neue Dateien anlegt, somit viele Datei-Handles entstehen.

Wir reden hier von ca. 400 Tabellen.

Zur Zeit wird pro Kategorie eine neue Tabelle erstellt, welche die Attribute beinhaltet. Handelt es sich beispielsweise um einen Fernseher, sucht man die passende Tabelle und findet dann sowas vor:

PHP-Code:
ProduktID    Attribut_1    Attribut_2    Attribut_4
123456        1           500           0
456789        0           1000          1
987654        1           1250          0
321321        0           10            0 
Ich bevorzuge die Aufteilung in eine Tabelle pro Attributgruppe. Meine Sorge liegt nur darin, wie MySQL mit 400 Tabellen klarkommt? Laut Doku gibt es Kunden mit 60.000 Tabellen. Aber laut dieser Anleitung verbraucht MySQL pro Tabelle zwei Dateihandles: http://dev.mysql.com/doc/refman/5.1/de/table-cache.html

Hat jemand dafür noch einen besseren Ansatz? Im Anhang habe ich noch mal das Datenbank-Design aufgezeichnet, wie es momentan vorliegt.
Miniaturansicht angehängter Grafiken
Strategie: Produktfilter wie bei "eBay"-tmp.png  

Geändert von schmidtsmikey (31-10-2012 um 16:30 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
ajax, filter, jquery


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Aus Variableninhalt "\t" wird "\\t" bei übergabe über URL / GET FrozenEmotions PHP Developer Forum 12 07-09-2007 18:11
Mysql einrtag bei <input type="submit" name="Submit" value="Posten" Mathes HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 05-07-2006 16:05
wie erstelle ich ein system ähnlich wie "eBay"? phpNeuling(824) Archiv / Trash 1 28-02-2006 10:05
Wie krieg ich die "\"s weg bei Formularauswertung? DerDilettant PHP Developer Forum 2 15-07-2005 16:17
Nochmal ebay (bezüglich "scripts bei ebay verkaufen") crono Existenzgründer, Freelancing, Verträge und sonstiges 1 24-07-2002 13:30

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:10 Uhr.