Filtern durch abhängige Kategorisierung

  • Hallo zusammen:),


    bis hierhin habe ich mit javascript eine 3-fache abhängige Kategorisierung erstellt. Dazu einmal hier der Code:


    Dazu gibt es eine Datenbanktabelle, welche Einträge mit den aufgelisteten Kategorien beinhaltet.


    Beispiel:

    1. Eintrag: Titel: Steinadler in den Alpen; Bild: Steinadler.png; Oberkategorie: Tiere; Kategorie: Vögel; Unterkategorie: Adler;

    2. Eintrag: Titel: Grand Canyon Nationalpark; Bild: Canyon.png; Oberkategorie: Kontinente; Kategorie: Amerika; Unterkategorie: USA;


    Nun möchte ich zunächst alle Einträge anzeigen lassen. Dies habe ich mit einer foreach-Schleife getan.

    Der Punkt an dem ich nicht mehr weiterkomme ist Folgender;(;):

    Ich möchte in diesem Beispiel bei der Auswahl der "Oberkategorie: Kontinente" nur noch den 2. Eintrag angezeigt bekommen. Bei der weiteren Auswahl der "Kategorie: Amerika" weiterhin diesen Eintrag. Und bei Auswahl der "Unterkategorie: Chile" keinen Eintrag mehr.

    Allgemein gesprochen möchte ich dynamisch immer die Einträge der untersten gefilterten Ebene anzeigen lassen.

    Im Idealfall sollte die Kategorisierung auch nach einer Pagination beibehalten werden. Sprich nach dem Wechsel von Seite 1 auf Seite 2 sollte z. B. die Auswahl "Oberkategorie: Kontinente + Kategorie: Amerika" weiterhin Bestand haben.


    Ist so etwas grundsätzlich mit javascript machbar?

  • Du schreibst das du eine Datenbank hast.

    Warum läßt du das nicht gleich richtig von der Datenbank ausgeben?

    Du machst dir Buttons oder ein select Feld fertig mit deinen Kategorien und holst dann das Ergebniss mit Jquery ( geht auch ohne ).

    Wenn du mal 1000 Einträge hast wäre es dumm die alle zu holen und danach mit JS zu Filtern.

    Dann lieber gleich nur das was du haben willst.

  • Vielen Dank für deine Antwort :)

    Ich weiß jetzt nicht ob ich deine Frage richtig verstanden habe.


    Mein Problem ist aktuell die Verknüpfung zwischen dem select Feld und den ausgegebenen Einträgen/ Ergebnissen zu erstellen.


    Also es sollen zunächst alle Einträge ausgegeben werden und wenn der Nutzer z. B. nur noch "Tiere" sehen möchte soll er ausschließlich diese ausgegeben bekommen. Wenn er sich innerhalb der "Tier"-Kategorie nur für "Haustiere" interessiert sollen mit der Auswahl auch alle Tiere die keine Haustiere sind ausgeblendet werden.


    Ziel ist das der Nutzer durch die Kategorisierung schnell aussuchen kann, was er sehen möchte. Und die Kategorien sollen standardisiert bleiben.

  • Ich frage mal anders.

    Suchst du sowas

    * Link entfernt, weil existiert nicht mehr *

    Es gibt ein Script (Isotope ) was diesen Effekt macht:

    Das ginge auch mit Select.


    Ich finde es aber trotzdem umnutz erst alle Einträge zu laden und dann zu sortieren.

    Bei wenigen Einträgen ist das vielleicht ok , aber nicht mehr bei 1000 oder so.

  • Ich finde es aber trotzdem unnutz erst alle Einträge zu laden und dann zu sortieren.

    Der Nutzer will ja vielleicht nichts filtern, sondern alle ansehen.

    Wenn es nur ein paar Einträge sind, so sollte man es schon bei nur einer Datenbankabfrage belassen und dann lokal filtern.

    Wenn es viele sind, muss man abwägen was sinnvoller ist. Häng auch davon ab, ob grundsätzlich viel von den Nutzern selektiert wird, oder es nur eine "Randfunktion" ist.


    vince92 Schau mal ob du nicht lieber mit "switch" anstatt "if - else if" arbeiten willst...

  • Wenn die normale Ausgabe sowieso alle Daten herholt, wäre es ja unnütz, bei jeder Filterung neue Abfragen zu senden.

    vince92 Sowas fängt bereits bei der Strukturierung der Datenbank an. Wie ist da denn deine Struktur?


    Für Jedes Thema solltest du einen Tabelleneintrag haben. Eine weitere Tabelle speichert welche Kategorie mit welchem Tier gespeichert ist. Dann ist das Filtern nur noch ein Kinderspiel.


    Informiere dich am besten über Normalisierung:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!