Alle subpages en sub-subpages ophalen
Ik wil graag alle subpaginages en sub-sub paginas en misschien wel sub sub sub sub sub sub pagina's van de bovenliggende pagina ophalen
stel:
- hoofdpagina 1
-- subpagina 1
-- subpagina 2
--- sub subpagina 1
--- sub subpagina 2
-- subpagina 3
--- sub subpagina 3
etc. etc.
Normaal zou ik het zo doen
Maar nu moet ik dus elke keer een nieuwe while lus gaan maken en weet ik niet hoe diep de diepste pagina zit.
Kan ik dit niet in 1 keer doen op 1 of andere manier?
stel:
- hoofdpagina 1
-- subpagina 1
-- subpagina 2
--- sub subpagina 1
--- sub subpagina 2
-- subpagina 3
--- sub subpagina 3
etc. etc.
Normaal zou ik het zo doen
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$query_menu = sprintf("SELECT pagina_id, naam, seo_url, intern, extern, is_menu, status FROM paginas WHERE hoofdpagina_id='%s' AND taal_id='%s' AND is_menu='%s' AND status='%s' ORDER BY sorteervolgorde",
mysql_real_escape_string('0'),
mysql_real_escape_string($taal_id),
mysql_real_escape_string('1'),
mysql_real_escape_string('1')
);
mysql_real_escape_string('0'),
mysql_real_escape_string($taal_id),
mysql_real_escape_string('1'),
mysql_real_escape_string('1')
);
Maar nu moet ik dus elke keer een nieuwe while lus gaan maken en weet ik niet hoe diep de diepste pagina zit.
Kan ik dit niet in 1 keer doen op 1 of andere manier?
Je voorbeeld kan je niet met SQL op die manier indelen. Zal je toch achteraf moeten doen in php vrees ik.
Gewijzigd op 09/10/2012 11:50:55 door John D
Hoe is je database ingedeeld? Zijn de sub pagina's gelinked aan de boven pagina's? Staan ze allemaal los in je database?
Het volgende voorbeeld mag dan wel over een menu gaan, maar je kan het ook gebruiken voor een pagina-systeem...
http://crisp.tweakblogs.net/blog/317/formatting-a-multi-level-menu-using-only-one-query.html
http://crisp.tweakblogs.net/blog/317/formatting-a-multi-level-menu-using-only-one-query.html
Elke pagina heeft een pagina_id en een hoofdpagina_id. Als een pagina een hoofdpagina is heeft die een hoofdpagina_id van 0. Als de pagina een subpagina is dan heeft de pagina een hoofdpagina_id van de bovenliggende pagina
Toevoeging op 09/10/2012 13:52:23:
Uiteindelijk is het hier mee gelukt
Toevoeging op 09/10/2012 13:52:23:
Uiteindelijk is het hier mee gelukt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function maakMenu($parent = 0){
$html = '<ul>';
$query = mysql_query("SELECT pagina_id, naam, seo_url FROM paginas WHERE hoofdpagina_id = '" . $parent . "'");
while($rij = mysql_fetch_assoc($query)){
$huidig_id = $rij['pagina_id'];
$html .= '<li><a href="' . $rij['pagina_id'] . '/' . $rij['seo_url'] . '">' . $rij['naam'] . '</a>';
$has_sub = '';
$has_sub = mysql_num_rows(mysql_query("SELECT pagina_id FROM paginas WHERE hoofdpagina_id = '" . $huidig_id . "'"));
if($has_sub){
$html .= maakMenu($huidig_id);
}
$html .= '</li>';
}
$html .= '</ul>';
return $html;
}
$html = '<ul>';
$query = mysql_query("SELECT pagina_id, naam, seo_url FROM paginas WHERE hoofdpagina_id = '" . $parent . "'");
while($rij = mysql_fetch_assoc($query)){
$huidig_id = $rij['pagina_id'];
$html .= '<li><a href="' . $rij['pagina_id'] . '/' . $rij['seo_url'] . '">' . $rij['naam'] . '</a>';
$has_sub = '';
$has_sub = mysql_num_rows(mysql_query("SELECT pagina_id FROM paginas WHERE hoofdpagina_id = '" . $huidig_id . "'"));
if($has_sub){
$html .= maakMenu($huidig_id);
}
$html .= '</li>';
}
$html .= '</ul>';
return $html;
}




