Hallo Freunde,
also ich bin dabei eine Suche mit Kategorien und der Anzeige der Anzahl der Ergebnisse pro Kategorie zu programmieren. Die steht auch und funktioniert soweit, allerdings frage ich mich, ob man das nicht eleganter lösen kann. Hier mein Aufbau:
1. SQL: Abfrage der Gesamtergebnisse der Oberkategorien
Action: 23
Komödie: 18
Das speicher ich in einem Array der ungefär so aussieht:
Dann eine neue funktion unterkategorie in der ich die passenden Unterkategorien in einem neuen Array ausgebe samt gefundener Ergebnisse. SIeht z.b. im Fall Musik etwa so aus:
SQL 2: mit Übergabe der ID der Oberkategorie (wird also pro gefundener Unterkategorie mit Ergebnisse ausgeführt)
- DVD 16
- Blue Ray 7
Das speicher ich dann wieder in einem Array der dem obigen ähnelt.
Wie gesagt das klappt alles und man erhält einen prima Baum mit den gewünschten Ergebnissen.
Also praktisch:
Action 23
- DVD 16
- Blue Ray 7
Aber gleichzeitig erzeugt das bei mehreren Treffern ziemlich viele SQL Abfragen. Logisch für jede gefundene Unterkategorie. Außerdem sind die SQL Anweisungen beide sehr ähnlich, was mich stört. Die erste ist praktisch nur ein weiterer Count der zweiten, um die Ergebnisse der Oberkategorien zu bekommen. Und die SQL ist wegen den vielen Filtern nicht gerade klein.
Nun meine Idee war nur eine, die zweite SQL zu nutzen. Allerdings wie kriege ich den Array dann so hin wie den oben? Denn so bekomme ich die Oberkategorie immer doppelt und die Anzahl der Unterkategorie.
Filme 16
- DVD 16
Filme 7
- Blue Ray 7
Die Gesamtanzahl könnte ich auch per php zählen, wobei das noch nicht so will. Vielleicht gibt es da auch eine Möglichkeit das in einer SQL zu lösen? Ich wußte nicht, ob das Thema mehr SQL ist oder PHP. Wenn es die falsche Sektion ist, bitte verschieben.
Über ein wenig Hilfe wäre ich sehr erfreut.
Schon einmal vielen Dank im voraus.
also ich bin dabei eine Suche mit Kategorien und der Anzeige der Anzahl der Ergebnisse pro Kategorie zu programmieren. Die steht auch und funktioniert soweit, allerdings frage ich mich, ob man das nicht eleganter lösen kann. Hier mein Aufbau:
1. SQL: Abfrage der Gesamtergebnisse der Oberkategorien
Action: 23
Komödie: 18
Das speicher ich in einem Array der ungefär so aussieht:
PHP:
$category[] = array( "oberkategorie_id" => $row['okat_id'],
"oberkategorie_name" => $row['fkat_name'],
"oberkategorie_amount" => $row['ukat_count'],
"unterkategorie" => $this->unterkategorie($row["okat_id"], $Suchtext)
);
Dann eine neue funktion unterkategorie in der ich die passenden Unterkategorien in einem neuen Array ausgebe samt gefundener Ergebnisse. SIeht z.b. im Fall Musik etwa so aus:
SQL 2: mit Übergabe der ID der Oberkategorie (wird also pro gefundener Unterkategorie mit Ergebnisse ausgeführt)
- DVD 16
- Blue Ray 7
Das speicher ich dann wieder in einem Array der dem obigen ähnelt.
Wie gesagt das klappt alles und man erhält einen prima Baum mit den gewünschten Ergebnissen.
Also praktisch:
Action 23
- DVD 16
- Blue Ray 7
Aber gleichzeitig erzeugt das bei mehreren Treffern ziemlich viele SQL Abfragen. Logisch für jede gefundene Unterkategorie. Außerdem sind die SQL Anweisungen beide sehr ähnlich, was mich stört. Die erste ist praktisch nur ein weiterer Count der zweiten, um die Ergebnisse der Oberkategorien zu bekommen. Und die SQL ist wegen den vielen Filtern nicht gerade klein.
Nun meine Idee war nur eine, die zweite SQL zu nutzen. Allerdings wie kriege ich den Array dann so hin wie den oben? Denn so bekomme ich die Oberkategorie immer doppelt und die Anzahl der Unterkategorie.
Filme 16
- DVD 16
Filme 7
- Blue Ray 7
Die Gesamtanzahl könnte ich auch per php zählen, wobei das noch nicht so will. Vielleicht gibt es da auch eine Möglichkeit das in einer SQL zu lösen? Ich wußte nicht, ob das Thema mehr SQL ist oder PHP. Wenn es die falsche Sektion ist, bitte verschieben.
Über ein wenig Hilfe wäre ich sehr erfreut.
Schon einmal vielen Dank im voraus.
Zuletzt bearbeitet: