I'm trying to build a recursive menu which would look something like this when finished, with an infinite amount of nested items:
Homepage
Services
Members
Brokers
Insurers
Products
My data is being linked together by a simple parent_id
column in my table.
I have currently managed to grab all the pages in the table and add them into an array based on their parent_id
(see below).
Array
(
[0] => 0-0-1 0-1-2 0-2-12 0-3-27 0-4-28 0-5-29 0-6-30 0-7-31 0-8-33
[2] => 2-0-3 2-0-6 2-0-7 2-0-8
[3] => 3-0-4 3-0-5
[8] => 8-0-9 8-0-10
[12] => 12-0-13 12-0-20
[13] => 13-0-14 13-1-15 13-2-17 13-3-16 13-4-19 13-5-18 13-9-34
[20] => 20-0-21 20-1-22 20-2-24 20-3-23 20-4-26 20-5-25 20-6-11
)
This is formatted as [parent_id
] => parent_id
-sort_order
-id
parent_id
-sort_order
-id
and so on.
My code so far is as follows:
$sqlGetDropdownPages = "SELECT * FROM `cms_staticPages` ORDER BY `sortOrder` ASC";
$qryGetDropdownPages = mysql_query($sqlGetDropdownPages) or die(mysql_error());
$resGetDropdownPages = mysql_fetch_assoc($qryGetDropdownPages);
$totGetDropdownPages = mysql_num_rows($qryGetDropdownPages);
do {
$pageArray[$resGetDropdownPages['parent_id']] .= $resGetDropdownPages['parent_id'].'-'.$resGetDropdownPages['sortOrder'].'-'.$resGetDropdownPages['id'].' ';
} while($resGetDropdownPages = mysql_fetch_assoc($qryGetDropdownPages));
ksort($pageArray);
foreach($pageArray as $i => $value) {
$explodePages = explode(' ',$value);
foreach(array_filter($explodePages) as $i2 => $page) {
$pageInfoExplode = explode('-',$page);
$getPageInfo = mysql_fetch_assoc(mysql_query("SELECT * FROM `cms_staticPages` WHERE `id` = '".$pageInfoExplode[2]."'"));
echo $getPageInfo['identifier'].'<br />';
}
}
Ran into a brick wall at this point and can't figure out what to do next.
I tried to explain this as well as I possibly can so if any clarification is needed just ask.
How to achieve this?