WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP - Oändligt med kategorinivåer? (https://www.wn.se/forum/showthread.php?t=25820)

Adestro 2007-12-21 20:34

Jag har en mysql-tabell enligt följande struktur.

Citat:

+-----+---------------------------+------+------+--------+-----+
| ID | name | type | rank | parent | PDF |
+-----+---------------------------+------+------+--------+-----+
| 4 | Motor- och võxellÕdskudda | 1 | 11 | 0 | 0 |
| 6 | Hjullager | 1 | 7 | 0 | 0 |
| 10 | Tillbeh÷r | 1 | 13 | 0 | 0 |
| 14 | Motorstyrning | 1 | 12 | 0 | 0 |
| 17 | Motordelar | 1 | 10 | 0 | 0 |

Där type är nivå, parent är överkategori och rank är just rank bland andra kategorier i samma nivå med samma förälder. Kolumnen PDF kan vi bortse från.

Hur skulle ett php-script se ut som kan lista oändligt med kategorinivåer? Jag förstår att det blir att börja i varje toppkategori och gå igenom alla underkategorier. Men jag kan inte komma på någon vettig loop som kan köra igenom oändligt med nivåer.

Tacksam för hjälp

jahaa 2007-12-21 21:23

Kika på detta http://www.sitepoint.com/article/hie...ata-database/2

Lite mer komplicerat men bra mycket simplare att att hämta ut data sedan.

patjoh 2007-12-22 01:42

En artikel från MySQL angående denna typ av problem:
http://dev.mysql.com/tech-resources/...ical-data.html

Adestro 2007-12-22 12:00

Tack för båda länkarna, väldigt givande läsning!

Innocast 2007-12-22 16:01

jag hade nog gjort något i stil med följande:

Kod:

$query = mysql_query("SELECT SQL_CACHE * FROM `tabell` ORDER BY `name`");
while ( $data = mysql_fetch_assoc($query) ) $menu[$data['type']][$data['parent']][$data['id']] = $data['name'];

Sedan loopat igenom Arrayn för att skriva ut den.

3D-arrays rular :P

Edit: Optimerade koden :)


Alla tider är GMT +2. Klockan är nu 15:21.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson