menü mit 2 ebenen darstellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • menü mit 2 ebenen darstellen

    hi....

    ich habe zum testen folgenden aufbau meiner menütabelle:

    Code:
    CREATE TABLE test (
      id int(2) NOT NULL auto_increment,
      name varchar(6) NOT NULL default '',
      parent_id int(3) NOT NULL default '0',
      PRIMARY KEY  (id)
    ) TYPE=MyISAM;
    
    #
    # Daten für Tabelle `test`
    #
    
    INSERT INTO test VALUES (7, 'haupt1', 0);
    INSERT INTO test VALUES (8, 'haupt2', 0);
    INSERT INTO test VALUES (9, 'haupt3', 0);
    INSERT INTO test VALUES (10, 'u11', 7);
    INSERT INTO test VALUES (11, 'u12', 7);
    INSERT INTO test VALUES (12, 'u21', 8);
    INSERT INTO test VALUES (13, 'u22', 8);
    INSERT INTO test VALUES (14, 'u23', 8);
    INSERT INTO test VALUES (15, 'u31', 9);
    INSERT INTO test VALUES (16, 'u32', 9);
    ist es jetzt möglich nur mit einer abfrage eine struktur zu erhalten wie die hier:

    haupt1
    - u11
    - u22
    haupt2
    haupt3

    wenn ich zum beispiel die m_id = 7 übergebe?

    mit folgender abfrage bekomm ich jedoc hdie reienfolge nicht hin, d.h. zuerst stehn die ganzen hauptpunkte und danach die unterpunkte

    SELECT name, id, parent_id
    FROM test
    WHERE test.parent_id = 0 OR test.parent_id = 7
    ORDER BY id ASC

  • #2
    Re: menü mit 2 ebenen darstellen

    mit folgender abfrage bekomm ich jedoc hdie reienfolge nicht hin, d.h. zuerst stehn die ganzen hauptpunkte und danach die unterpunkte
    nimm ne php-lösung, bau dir ein verschachteltes array ...

    'order by id' ist suboptimal, ....
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      nach 2 spalten sortieren

      EDIT:
      es braucht nicht jedes mal einen neuen thread, wenn die grundthematik immer noch die selbe ist!


      Code:
      SELECT id, name, 
      IF (
      parent_id = 0, id, parent_id
      )
      as mid, sort, parent_id
      FROM test
      WHERE parent_id = 0 OR parent_id = '8'
      ORDER BY mid ASC
      ergibt bei mir folgendes:

      id | name | mid | sort | parent_id
      7 |haupt1 |7| 1| 0
      8 |haupt2 |8 |2 |0
      12 | u21 |8 |2 |8
      13 |u22 |8 |1 |8
      14 |u23| 8 |3 | 8
      9 |haupt3| 9 |3 |0

      ist es möglich jetzt noch nach der spalte sort zu sortieren? wenn ich an die abfrage noch diese spalte mit angeben erscheint der punkt u22 unter dem punkt haupt1, aber so ist es ja falsch
      Zuletzt geändert von wahsaga; 02.09.2004, 11:05.

      Kommentar


      • #4
        order by x asc, y desc, z asc

        RTFM

        Kommentar


        • #5
          Original geschrieben von asp2php
          order by x asc, y desc, z asc

          RTFM
          hatte ja oben geschrieben, das ich die spalte mit angehangen hab

          ORDER BY mid ASC, sort ASC aber dann bekomm ich den schon beschriebenen effekt

          Kommentar


          • #6
            order by mid, id

            Kommentar


            • #7
              Original geschrieben von asp2php
              order by mid, id
              nee funzt so leider auch nicht. es kann ja sein das ich die einträge nicht in der gewünschen reihenfolge eingebe, daher ja auch noch die spalte sort

              EDIT:

              so gings:
              Code:
              SELECT id, name, 
              IF (
              parent_id = 0, id, parent_id
              )
              as mid, sort, parent_id
              FROM test
              WHERE parent_id = 0 OR parent_id = '7'
              ORDER BY mid ASC , parent_id ASC , sort ASC

              Zuletzt geändert von lx-club; 02.09.2004, 12:01.

              Kommentar

              Lädt...
              X