MySQL-Blätterfunktion-Problem

Ich will, dass Man zwischen verschiedenen Unterkategorien blättern kann. Dies habe ich schon hinbekommen, aber ich will, dass man in der aktuellen Kategorie bleibt. Die Kategorien und Unterkategorien sind in einer Tabelle abgespeichert. Hier mein MySQL-Code:

x ist hier die aktuelle Unterkategorie.
Bitte helft mir :neutral_face:

Gerne - wenn du uns erklären könntest, wobei denn eigentlich …?

Schaut so aus, als ob du Kategorien und Unterkategorien nicht sonderlich optimal in der Db abgelegt hättest. Wenn das nur über zwei Ebenen gehen soll - dann schlage ich vor, du legst eine Spalte für Haupt- und eine für Unterkategorie an.

Wenn das ganze hingegen bis in beliebige Verschachtelungstiefen gehen können soll - dann würde ich dir Beschäftigung mit Nested Sets empfehlen.

ich habe 2 tabellen:
-eine mit den kategorien
-eine mit den unterkategorien
und ein eintrag in der mit den unterkategorien verweist auf eines der kategorie
außerdem habe ich noch eine, in der die eigentlichen beiträge stehen.

außerdem: ich will nicht unbedingt die ganze DB erneuern

trotzdem danke!

was war nochmal die frage?
… ach ja, wie man die Kategorie beibehält…

da sehe ich 3 Möglichkeiten:

  • PHP sessions (nur bei LogIns optimal)
  • Cookies ( :unamused: wird nicht von allen unterstützt)
  • Kategorie mittels GET an die URI hängen (sehr aufwändig)

hoffe ich konnte trotzdem helfen

mfg Joey

Sorry, ich habe das Problem etwas unklar beschrieben.
Machen wir ein Beispiel:
Ich habe die Kategorien A und B und die Unterkategorien 1, 2, 3 und 4.
Die Unterkategorien 1 und 4 gehören zu A und die Unterkategorien 2 und 3 zu B.
Wenn ich jetzt die Unterkategorie 1 öffne, würde ich gerne auf einen Pfeil klicken können, um zur nächsten Unterkategorie der Kategorie zu springen. Die Unterkategorien sind mit einem Verweis auf eine Kategorie in einer Tabelle abgespeichert. Nun möchte ich wissen, wie man dies realisiert, d. h. wie man bestimmte Datensätze aus einer WHERE-Klausel ausschließt. Hier wären das die Unterkategorien, die nicht zu der aktuell ausgewählten Kategorie gehören.
Kann man das mit MySQL machen? Oder muss ich eine FOR-Schleife machen?
Hoffentlich kann mir jemand helfen.

:astonished:
is doch ganz einfach…
Bei der URI dieses Pfeiles hinterlegst du ganz einfach die Kategorie und die Unterkategorie:
index.php?cat=A&subcat=4
Oder dann so:
index.php?cat=A&subcat=1&next
Und dann machst du son kleines Script:
SELECT * FROM unterkategorie WHERE uebergeordnet = ‘$_GET[“cat”]’ AND id > ‘$_GET[“subcat”]’ LIMIT 0,1
Dann überprüfst du mit mysql_num_rows(), ob da was gefunden wurde, ansonsten nimmst du dann so wider die erste:
SELECT * FROM unterkategorie WHERE uebergeordnet = ‘$_GET[“cat”]’ ORDER BY id DESC LIMIT 0,1

Hoffe, dass du das gemeint hast :wink:
mfg Joey

$cur_subcat ist die aktuelle Subkategorie
$cur_cat ist die aktuelle Kategorie

SELECT subkatid FROM subkategorien WHERE subkatid > $cur_subcat AND catid = $cur_cat ORDER BY subkatid DESC LIMIT 1

so?

Aber dann wird nur ein Wert zurückgeliefert, wenn der nächste Eintrag in der Tabelle zu der aktuellen Kategorie gehört. Ich suche den nächsten Eintrag in der Tabelle, der zu dier aktuellen Kategorie gehört und der könnte 10 Zeilen weiter sein.

nein

Ah, jetzt klappst! Der Fehler, warum der Vorschlag nicht funktionierte, lag woanders.
Danke! :smiley: