WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Hur lagra kategorier (https://www.wn.se/forum/showthread.php?t=1058548)

tec 2013-07-19 12:25

Kod:

$cats = get_stuff("SELECT * FROM categories ORDER BY parent_id ASC");
$lowest_level = $cats['0']['parent_id']; // hitta lägsta parent_id
$cat_arr = array();
foreach($cats as $ca){
  $cat_arr['rela'][$ca['parent_id']][] = $ca['id'];
  $cat_arr['data'][$ca['id']] = $ca;
}

echo '<select name="parent">'.traverse_stuff($cat_arr, $lowest_level, 0, 0).'</select>';

function traverse_stuff($cat_arr, $parent, $level, $select_id){
  $output = '';
    foreach($cat_arr['rela'][$parent] as $ca){
      $output .= '<option value="'.$ca.'" '.(($select_id == $ca) ? 'selected="selected"' : '').'>'.str_repeat('&nbsp;', $level).'|__'.$cat_arr['data'][$ca]['name'].'</option>';
      if(!isset($cat_arr['rela'][$ca])){continue;} // $ca har inga barn, gå vidare
      $output .= traverse_stuff($cat_arr, $ca, $level+1, $select_id);
    }
  return $output;
}

Bara ett databasanrop krävs, klarar oändligt med nivåer.


Alla tider är GMT +2. Klockan är nu 16:24.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson