Hallo Typo3-Freunde,
ich möchte eine Produktauswahl realisieren, die drei Auswahllisten nebeneinander auf einer Seite darstellt. In der ersten Auswahlliste kann ich die erste Eigenschaft des gesuchten Produktes auswählen, in der zweiten Liste eine zweite Eigenschaft. In der rechten Liste sollen die entsprechenden Treffer aufgelistet werden.
(siehe http://www.christophheermann.de/auswahl.htm)
Beispiel:
- ich wähle links bei Eigenschaft 1 die Eigenschaft 1.2 aus --> rechts in der Produktliste werden sofort alle passenden Treffer aufgelistet!
- nun wähle ich zusätzlich noch eine zweite Eigenschaft 2.1 (mittlere Spalte) aus und rechts erscheinen nur noch Produkte, die auf beide Eigenschaften zutreffen. Die beiden Eigenschaftslisten sollen praktisch durch eine UND/ODER-Logik zusammenhängen.
Das heißt also, zu Beginn stehen alle verfügbaren Produkte in der rechten Liste, bei Auswahl einer Eigenschaft werden alle nicht-zutreffenden Produkte rausgefiltert. Bei Wahl einer zweiten Eigenschaft wird dann entsprechend weitergefiltert. Für jedes Produkt gibt es eine Typo3-Seite, deshalb sollen die Produktnamen entsprechend aus der PAGES-Tabelle geladen werden.
Von der Funktion her würde ich folgendes machen: eine Tabelle mit Eigenschaften 1 anlegen (Eigenschaft 1.1, Eigenschaft 1.2 usw.) und eine Tabelle mit den Eigenschaften 2.x
Nun müsste ich bei allen Produkten für jede der versch. Eigenschaften ein Feld hinzufügen (z.B. Integer) und könnte so die Eigenschaften setzen (1=Eigenschaft vorhanden, 0=Eigenschaft nicht vorhanden). Jedes Produkt kann nur EINE Eigenschaft 1 und EINE Eigenschaft 2 besitzen:
Beispiel: Produkt hat Eigenschaft 1.2 und Eigenschaft 2.3
Konnte ich das Problem halbwegs anschaulich beschreiben?
Vielen Dank schonmal für Eure Hilfe!
Ja.
Und was soll die Frage sein?
Die Frage lautet: wie würde ein Typo3 Profi diese Abfrage umsetzen? Ich weiß gar nicht wo ich anfangen soll...
Willst du wissen, wie man das in PHP macht, oder dann in Typo3 umsetzt?
Weißt du nicht, wie die das ensprechende Forumlar zur Auswahl erstellt wird, oder willst du wissen ob dein DB-Design OK ist?
Zur Datenbank: ich denke, das DB-Design bzw. Tabellendesign müsste OK sein, oder? D.h. im Kickstarter zwei neue Tabellen für die beiden Eigenschaftslisten anlegen und die Werte statisch eintragen.
Dann würde ich über "Extend existing table" für jede Eigenschaft ein Feld vom Typ Integer hinzufügen(oder wäre Boolean sinnvoller?).
Ich glaube das Hauptproblem ist die Realisierung in PHP, also die Ausgabe der Auswahlfelder. Ich denke mir wäre schon geholfen, wenn ich mal im Frontend eine Auswahlliste (z.B. Eigenschaft1) aus der entsprechenden Tabelle laden könnte und angezeigt bekomme.
- Wie würde der "OnChange"-Befehl in meiner HTML-Selectbox aussehen, der die SQL-Abfrage starten soll?
- Ich will nicht alle Seite der PAGES-Tabelle auswerten, sondern natürlich nur die Produkte, also alle Seiten mit der pid der übergeordneten PRODUKT-Seite im Menübaum.
- da das Aussehen des entsprechenden Formulars ja in der PHP-Seite festgelegt wird, ist es also wie gesagt eher ein PHP - Problem, oder?
Dann würde ich über "Extend existing table" für jede Eigenschaft ein Feld vom Typ Integer hinzufügen(oder wäre Boolean sinnvoller?).
Du solltest schon vorher wissen wieviele Spalten zu brauchst. Übrigends: Im Kickstart kanst du keine Werte eintragen.
- Wie würde der "OnChange"-Befehl in meiner HTML-Selectbox aussehen, der die SQL-Abfrage starten soll?
Es kommt drauf an, wie groß deine Tabellen sind. Bei wenigen Einträgen kannst du alle Einträge in ein JavaScript-array packen und dann das als Grundlage für die Select-Box aktualisierung nehmen. Bei vielen Daten solltest du die Seite mit entsprechedem Parameter neu laden.
Du solltest dich erstmal mit JavaScript und PHP vertraut machen.
Versuch zuerst ohne Typo3 eine Datenbank abzufragen und das in einem Formular darzustellen.
Dann kannst du funktionialitäten zu deinem Formular hinzufügen.
Und wenn das klappt, kannst du es in Typo3 integrieren.
So wie ich deine Kentnisse einschätze würde ich dir abraten so ein Projekt auf einmal an zu gehen.