PHP ver gevorderde |
|
@siliecom14
Ik bedoelde natuurlijk dat je de SQL gaf voor de tabel met daarin de test rijen (ik neem aan dat je die had), zodat ik niet alles zelf hoef in te vullen.
Ik heb dan nu ook niet kunnen testen of hij werkt, maar waarschijnlijk zou dit moeten werken. Hij hoort nu precies de array terug te geven die jij wilde. De items zonder submenu's krijgen nu netzoals in jouw voorbeeld ook als waarde null.
if(($rResult = mysql_query('SELECT cat_id, cat_titel, is_sub_van FROM categories')) !== false && mysql_num_rows($rResult) > 0)
{
function submenu($aCurrent, $aMenu, $aRows)
{
$bHasChildren = false;
foreach($aRows as $iKey => $aRow)
{
if($aRow['is_sub_van'] == $iCurrent)
{
$bHasChildren = true;
$sKey = $aRow['cat_titel'];
$aMenu[$sKey] = array();
unset($aRows[$iKey]);
$aMenu[$sKey] = submenu($aRow['id'], $aMenu[$sKey], $aRows);
}
}
if(!$bHasChildren)
{
$aMenu = null;
}
return $aMenu;
}
$aRows = array();
while(($aRow = mysql_fetch_assoc($rResult)) !== false)
{
$aRows[] = $aRow;
}
$aMenu = submenu(0, array(), $aRows);
print_r($aMenu);
}
if(($rResult = mysql_query('SELECT cat_id, cat_titel, is_sub_van FROM categories')) !== false && mysql_num_rows($rResult) > 0) { function submenu($aCurrent, $aMenu, $aRows) { $bHasChildren = false; foreach($aRows as $iKey => $aRow) { if($aRow['is_sub_van'] == $iCurrent) { $bHasChildren = true; $sKey = $aRow['cat_titel']; $aMenu[$sKey] = submenu($aRow['id'], $aMenu[$sKey], $aRows); } } if(!$bHasChildren) { $aMenu = null; } return $aMenu; } { $aRows[] = $aRow; } $aMenu = submenu (0, array(), $aRows); }
Ik hoop dat het correct werkt en dat je er wat aan hebt . |