tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
21
ZUGRIFFE
1364
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    cIrCa cIrCa ist offline Mitglied Silber
    Registriert seit
    Nov 2003
    Ort
    Schweiz
    Beiträge
    56
    Ich bin zurzeit daran, ein aufwändiges Linkverwaltungssystem zu entwickeln.
    Mein Ziel wäre es, dass man die Links in Kategorien aufteilen kann.

    Man sollte aber schlussendlich eine Unterkategorie in der Kategorie erstellen können, und dies soll sich bis ins unendliche wiederholen können.

    Habt ihr dazu eine Lösung? Wie mache ich das am besten?

    Vielen Dank für eure Hilfe
     

  2. #2
    Avatar von Karl Förster
    Karl Förster Karl Förster ist offline Mitglied Platin
    Registriert seit
    Feb 2001
    Ort
    München
    Beiträge
    646
    Für die Kategorieeinteilung würde ich eine Tabelle machen. Du speicherst für jede Kategorie die Id und die ID der Kategorie, die übergeordnet ist. So kannst du beliebig viele Kategorien untereinander verschachteln.
    Für alle höchsten Kategorien, also für die, die keine übergeordnete Kategorie haben vergibst du einfach die ID 0.

    Mit diesem Prinzip ist es auch recht einfach mal einen ganzen Kategoriebaum zu verschieben. Du brauchst dazu einfach nur die ID ändern.
     
    MfG

    Karl Förster
    Entwicklung / Development
    Appia, Inc.


    appia.com

  3. #3
    cIrCa cIrCa ist offline Mitglied Silber
    Registriert seit
    Nov 2003
    Ort
    Schweiz
    Beiträge
    56
    Ok, vielen Dank, ich werde es gleich versuchen.
     

  4. #4
    cIrCa cIrCa ist offline Mitglied Silber
    Registriert seit
    Nov 2003
    Ort
    Schweiz
    Beiträge
    56
    Hm, ich weiss nicht, mir ist das irgendwie zu hoch.. hat jemand ein Beispiel?
    Vielleicht hat ja von euch schon jemand sowas gecodet.
     

  5. #5
    Avatar von mowl
    mowl mowl ist offline Mitglied Silber
    Registriert seit
    Jan 2004
    Ort
    Altenburg
    Beiträge
    96
    Ich hab sowas noch nicht geschrieben, aber dies geht sicherlich nur mit der Übergabe von vielen Kategorien: datei.php?hauptkategorie=1&unterkategorie=2&unterunterkategorie=4 usw. du müsstest die IDs per JOIN so verknüpfen das die jeweiligen IDs immer "ineinander greifen". Das ist wirklich ein sehr komplexes System, überlege dir des weiteren ob es Sinn macht unendlich viele Unterkategorien zu erstellen, denn dies fördert nicht unbedingt die Übersichtlichkeit.
     
    cheers,

  6. #6
    Registriert seit
    Aug 2002
    Beiträge
    419
    Also ich hab sowas das man 3 Ebenen machen kann, die Kategorie --> Die Menüpunkte und die Beiträge, zu mehr kam ich bisher nicht

    Aber die habe ich dann in den einzelnen Tabellen verlinkt.

    Würde mich aber auch mal interessieren wie das geht mit den Unterkategorien weil ich mir das nicht vorstellen kann.
     

  7. #7
    Registriert seit
    Aug 2002
    Beiträge
    419
    So hab mir mal was überlegt, es müsste nach diesem System gehen:

    cat_name | ID | parent_id
    ------------------------------------
    Tester | 1 | 0
    Test2 | 2 | 1

    So nach dem Motto dürfte es gehen.

    Mal sehen ob ich mein CMS nach diesem System umbau, danke für den Denkansatz

    EDIT: Shit ich hätte es per EDIT auch editieren können ...
     

  8. #8
    Avatar von aquasonic
    aquasonic aquasonic ist offline Mitglied Brillant
    Registriert seit
    Jan 2004
    Ort
    Schweiz :: Bern
    Beiträge
    942
    PHP-Code:
    function menu($id) {
      
    $query1 mysql_query("SELECT * FROM menu WHERE id = $id");
      while (
    $query mysql_fetch_row($query1)) {
        
    $query3 mysql_query("SELECT * FROM menu WHERE id = $query['id']");
       if (
    mysql_num_rows($query) > 0) {
         
    menu($query['id']);
       }
       else{
          echo 
    $query['name'];
       }
      }

    Keine Ahnung ob das funktioniert... Ist übrigens eine rekursive Funktion (hab das mit PHP noch nie gemacht, weiss nicht mal ob es mit PHP geht... Sollte aber eigentlich schon...
     
    MfG AqUaSoN!C

    o Wie man richtig Fragen stellt o

    o Nicht in Problemen sondern in Lösungen denken! o

    o Es gibt 2 Dinge, die sind unendlich: das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir noch nicht ganz sicher. o

    > Meine Linksammlung > http://linksys.aquasonic.ch

    > Mein Wiki > http://wiki.aquasonic.ch

  9. #9
    Registriert seit
    Aug 2002
    Beiträge
    419
    Original geschrieben von aquasonic
    PHP-Code:
    function menu($id) {
      
    $query1 mysql_query("SELECT * FROM menu WHERE id = $id");
      while (
    $query mysql_fetch_row($query1)) {
        
    $query3 mysql_query("SELECT * FROM menu WHERE id = $query['id']");
       if (
    mysql_num_rows($query) > 0) {
         
    menu($query['id']);
       }
       else{
          echo 
    $query['name'];
       }
      }

    Keine Ahnung ob das funktioniert... Ist übrigens eine rekursive Funktion (hab das mit PHP noch nie gemacht, weiss nicht mal ob es mit PHP geht... Sollte aber eigentlich schon...
    schaut nich schlecht aus.
    Damit dürfte auch das Problem wie man die Kategorien ausliest gelöst sein.
    D.h die Funktion müsste eigentlich alle Kategorien auslesen, also auch die 99 Ebene, können wenn ich mir nicht Irre oder?



    Muss mich auch mal mit Rekursiven Funtkionen vertraut machen.

    EDIT:

    Besser wäre es wohl gewesen, anstatt $query['id'], noch eine Variable $query2['id'] an dieser Position zu machen:
    PHP-Code:
        $query3 mysql_query("SELECT * FROM menu WHERE parent_id = $query['id']"); // Damit er auch den "Tochterquery" rausliest

    while($query4 mysql_fetch_assoc($query3))
    {
       if (
    mysql_num_rows($query4) > 0) {
         
    menu($query4['id']);
       }
       else{
          echo 
    $query['name'];
       }

    Dann geht er denk ich mal alle Kategorien durch und bleibt nicht an den ersten beiden Ebenen hängen
    Geändert von Muffinmampfer (10.02.04 um 12:57 Uhr)
     

  10. #10
    F.o.G. F.o.G. ist offline Mitglied Gold
    Registriert seit
    Mar 2002
    Beiträge
    239
    Die Funktion hat aber einen Haken: da sie rekursiv abläuft werden immer wieder neue Queries erzeugt. Je mehr Queries man absetzt, desto langsamer ist das ganze System.

    Naja, ich würde dafür ja mal im Forum nach dem Stichwort NestedSet schauen

    Damit kann man auch bis ins unendliche Kategorien anlegen und es ist obendrein auch noch effizient. Mit der Klasse CB_NestedSet und der darin enthaltenen Methode getBranch() bekommt man alle nachfolgenden Rubriken einer bestimmten Rubrik mit nur einem Query.

    Ciao, Jörg
     
    Visit: Content*Builder.de - a very flexible CMS

  11. #11
    Registriert seit
    Aug 2002
    Beiträge
    419
    Original geschrieben von F.o.G.
    Die Funktion hat aber einen Haken: da sie rekursiv abläuft werden immer wieder neue Queries erzeugt. Je mehr Queries man absetzt, desto langsamer ist das ganze System.

    Naja, ich würde dafür ja mal im Forum nach dem Stichwort NestedSet schauen

    Damit kann man auch bis ins unendliche Kategorien anlegen und es ist obendrein auch noch effizient. Mit der Klasse CB_NestedSet und der darin enthaltenen Methode getBranch() bekommt man alle nachfolgenden Rubriken einer bestimmten Rubrik mit nur einem Query.

    Ciao, Jörg

    Naja ich sachs ma so, ich will meine Scripts nicht irgendwem nachkauen sonder sie möglichst selber machen .

    Aber ich werd mal gucken, vielleicht gibts ja noch was gutes für mein CMS in der Version 0.63
     

  12. #12
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    Wenn man eine Oracle-Datenbank verwendet, kann man sogenannte "Hierachische SQL-Abfragen" verwenden. Damit kann man sich mit nur EINEM SQL-Statement einen ganzen Baum ausgeben lassen. Bei MySQL soll dieses Feature noch folgen.

    snuu
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

  13. #13
    Avatar von won_gak
    won_gak won_gak ist offline Mitglied Brokat
    Registriert seit
    Dec 2002
    Ort
    Frankfurt/Main
    Beiträge
    470
    Nested Sets ist ein sehr gutes Stichwort. Rekursive Abfragen sollte man wirklich vermeiden.
     
    ~WonGak~

    "And if there is a god, I know he likes to rock."

  14. #14
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    Diesen Beitrag bitte löschen. Habe keine Lust mich mit kleinen Kindern zu streiten. Danke.
    Geändert von Sven Petruschke (11.02.04 um 00:14 Uhr)
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

  15. #15
    Avatar von aquasonic
    aquasonic aquasonic ist offline Mitglied Brillant
    Registriert seit
    Jan 2004
    Ort
    Schweiz :: Bern
    Beiträge
    942
    Mehr Infos gibts übrigens hier http://www.tutorials.de/tutorials139220.html
     
    MfG AqUaSoN!C

    o Wie man richtig Fragen stellt o

    o Nicht in Problemen sondern in Lösungen denken! o

    o Es gibt 2 Dinge, die sind unendlich: das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir noch nicht ganz sicher. o

    > Meine Linksammlung > http://linksys.aquasonic.ch

    > Mein Wiki > http://wiki.aquasonic.ch

Ähnliche Themen

  1. Kategorien per Dropdownmenü
    Von anopheles1337 im Forum PHP
    Antworten: 6
    Letzter Beitrag: 01.03.06, 00:34
  2. Kategorien
    Von asdfg im Forum PHP
    Antworten: 9
    Letzter Beitrag: 05.02.06, 23:56
  3. Kategorien
    Von qsrs im Forum PHP
    Antworten: 7
    Letzter Beitrag: 26.02.05, 00:26
  4. Kategorien...
    Von zinion im Forum PHP
    Antworten: 7
    Letzter Beitrag: 08.10.04, 12:37
  5. Kategorien Bild
    Von law im Forum PHP
    Antworten: 3
    Letzter Beitrag: 30.06.03, 20:49