Versio

nested

Overzicht Reageren

Robin de Vries

Robin de Vries

22/02/2009 16:00:00
Quote Anchor link
ik ben een menu aan het maken, met sub-menu's.
Nu zou ik normaal gesproken elk menu item uit de database halen en per item de sub-menu's eruit halen, met conclusie dat ik 1 level hoog kom.

nu heb ik een database
id | name | parent|
1 | no 1 | 0 |
2 | no 2 | 1 |
3 | no 3 | 2 |
4 | no 4 | 0 |
5 | no 5 | 2 |
6 | no 6 | 4 |

hoe haal je in 1 sql-statement met wat php-code dit naar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
- 1
       - 2
              - 3
              - 5
-4
       -6
Gewijzigd op 01/01/1970 01:00:00 door Robin de Vries
 
PHP hulp

PHP hulp

25/05/2012 07:24:54
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Bart Tuma

Bart Tuma

22/02/2009 17:22:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php

ini_set( 'display_errors', 1 );
error_reporting( E_ALL | E_STRICT );

$sql = '
  SELECT
    *
  FROM
    webshop_categories
  ORDER BY
    scatID,
    catPositie
'
;

$categorien = array();
if( false !== ( $result = mysql_query( $sql ) ) )
{

  while( $row = mysql_fetch_assoc( $result ) )
  {

    $id = intval( $row[ 'catID' ] );
    $parentId = intval( $row[ 'scatID' ] );
    if( !isset( $categorien[ $parentId ] ) )
    {

      $categorien[ $parentId ] = array(
        '_children' => array()
      );
    }

    $categorien[ $id ] = isset( $categorien[ $id ] ) ? $categorien[ $id ] + $row : $row;
    $categorien[ $parentId ][ '_children' ][ $id ] = &$categorien[ $id ];
  }
}

else
{
  trigger_error( mysql_error() . ' in query: ' . $sql );
}


// print de compleet opgebouwde structuur
echo '<pre>' . print_r( $categorien, true ) . '</pre>';

// print de root structuur
echo '<pre>' . print_r( $categorien[ 0 ], true ) . '</pre>';

// print de catID = 1 structuur
echo '<pre>' . print_r( $categorien[ 1 ], true ) . '</pre>';

?>

Bron: PHPFreakz forum
 
Robin de Vries

Robin de Vries

22/02/2009 17:24:00
Quote Anchor link
thnks :)
 



Overzicht Reageren