Hulp bij webwinkel (categorieen)
Mensen,
ik heb de volgende code om de categorieen uit mijn db te halen:
Hij gaat nu tot 2 niveau's diep. Lijkt nu voldoende, maar hoe krijg ik het makkelijk dat hij het in principe onbeperkt doet? Heb in tabel categorieen een id, omschrijving & parent_id
Belangrijkste vraag is even de menuopbouw. Hij toont nu alles direct onder elkaar. Ik wil eerst alleen 1ste niveau zien, als ik daarop klik de onderliggende (van die betreffende categorie). Hoe ga ik dat voor elkaar krijgen!?
gr
Herbert
ik heb de volgende code om de categorieen uit mijn db te halen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php $rQueryCat = mysql_query ( "SELECT *
FROM products_categorieen
WHERE categorie_parent = 0
ORDER BY categorie_naam ASC ") or die ( mysql_error() );
while ( $aQueryCat = mysql_fetch_assoc ( $rQueryCat ) )
{ echo ' -<a href="index.php?pagina=webwinkel&cat='.stripslashes ( $aQueryCat['categorie_id'] ).'">'.stripslashes ( $aQueryCat['categorie_naam'] ).'</a><br />';
bepaalSub($aQueryCat['categorie_id']);
}
?>
FROM products_categorieen
WHERE categorie_parent = 0
ORDER BY categorie_naam ASC ") or die ( mysql_error() );
while ( $aQueryCat = mysql_fetch_assoc ( $rQueryCat ) )
{ echo ' -<a href="index.php?pagina=webwinkel&cat='.stripslashes ( $aQueryCat['categorie_id'] ).'">'.stripslashes ( $aQueryCat['categorie_naam'] ).'</a><br />';
bepaalSub($aQueryCat['categorie_id']);
}
?>
Hij gaat nu tot 2 niveau's diep. Lijkt nu voldoende, maar hoe krijg ik het makkelijk dat hij het in principe onbeperkt doet? Heb in tabel categorieen een id, omschrijving & parent_id
Belangrijkste vraag is even de menuopbouw. Hij toont nu alles direct onder elkaar. Ik wil eerst alleen 1ste niveau zien, als ik daarop klik de onderliggende (van die betreffende categorie). Hoe ga ik dat voor elkaar krijgen!?
gr
Herbert
Gewijzigd op 01/01/1970 01:00:00 door Herbert Foppen
Onbeperkt? Hoe ziet je datamodel eruit? Wat is bijvoorbeeld de indeling van de tabel products_categorieen?
Een simpele oplossing is:
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
CREATE TABLE IF NOT EXISTS `products_categorieen` (
`categorie_id` int(5) NOT NULL auto_increment,
`categorie_naam` varchar(255) NOT NULL default '',
`categorie_parent` int(5) NOT NULL default '0',
PRIMARY KEY (`categorie_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=72 ;
`categorie_id` int(5) NOT NULL auto_increment,
`categorie_naam` varchar(255) NOT NULL default '',
`categorie_parent` int(5) NOT NULL default '0',
PRIMARY KEY (`categorie_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=72 ;
Een index op "categorie_parent" is geen overbodige luxe ;P
@ Martijn: dan stop je de query in een recursieve functie. Dat werkt wel, maar ik vind het vanuit usability-oogpunt niet echt handig. Een navigatie-menu met meer dan twee submenu's werkt niet echt lekker.
Dan kun je beter van tevoren zeggen: ik wil hooguit twee niveau's diep gaan en dit artikel even lezen.
Dan kun je beter van tevoren zeggen: ik wil hooguit twee niveau's diep gaan en dit artikel even lezen.
Dat voorbeeld van crisp haalt gewoon alle categorieën op en verwerkt deze in een recursieve functie. Je kunt dus zoveel lagen (subcategorieën) hebben als je zelf wil.
Met javascript zorg je er voor dat de lagen zichtbaar worden.
Een voorbeeld hiervan is:
http://tweakers.net/pricewatch/
Onder het kopje "Productcategorieën". Volgens mij werkt dat op dezelfde manier namelijk.
Met javascript zorg je er voor dat de lagen zichtbaar worden.
Een voorbeeld hiervan is:
http://tweakers.net/pricewatch/
Onder het kopje "Productcategorieën". Volgens mij werkt dat op dezelfde manier namelijk.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B




