nested
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
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
Gewijzigd op 01/01/1970 01:00:00 door Robin de Vries
Gesponsorde koppelingen:
Code (php)
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
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>';
?>
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
thnks :)



