In de database staan alle mappen. Een map kan een submap zijn van een hoofdmap en een submap kan ook weer submappen hebben...
In de database staat het volgende:
file_id file_folder file_name
2 0 Occasions
3 0 Producten
4 0 Images
5 2 thumbs
6 2 thumbs_2
7 3 big
8 3 big_2
Ik wilde volgende array terug krijgen:
maar ik krijg de volgende array terug:
Dit komt doordat hij altijd $value ervoor zet, zie onderstaande code...
Hoe kan ik dit het beste oplossen?
In de database staat het volgende:
file_id file_folder file_name
2 0 Occasions
3 0 Producten
4 0 Images
5 2 thumbs
6 2 thumbs_2
7 3 big
8 3 big_2
Ik wilde volgende array terug krijgen:
code:
1
2
3
4
5
6
7
8
9
10
11
| Array ( [0] => [4] => Images/ [2] => Occasions/ [5] => Occasions/thumbs/ [6] => Occasions/thumbs_2/ [3] => Producten/ [7] => Producten/big/ [8] => Producten/big_2/ ) |
maar ik krijg de volgende array terug:
code:
1
2
3
4
5
6
7
8
9
10
11
| Array ( [0] => [4] => Images/ [2] => Occasions/ [5] => Occasions/thumbs/ [6] => Occasions/thumbs/thumbs_2/ [3] => Producten/ [7] => Producten/big/ [8] => Producten/big/big_2/ ) |
Dit komt doordat hij altijd $value ervoor zet, zie onderstaande code...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| <?php class Files { public static $fileparents = array(0=>''); public static $options = array(0=>''); public function __construct(){ $this->db = new dbMySQL; $folderData=array('items' => array(),'parents' => array()); $folders=mysql_query('SELECT * FROM '.self::$table.' WHERE file_type=2 ORDER BY file_name'); while ($f = mysql_fetch_assoc($folders)){ $folderData['items'][$f['file_id']] = $f; $folderData['parents'][$f['file_folder']][] = $f['file_id']; } self::buildFolderList(0, $folderData); self::buildFolderListOptions(0, $folderData); echo '<pre>'; print_r(self::$options); } public function buildFolderListOptions($parentId,$folderData,$value=''){ if (isset($folderData['parents'][$parentId])){ foreach ($folderData['parents'][$parentId] as $itemId){ $value=$value.$folderData['items'][$itemId]['file_name'].'/'; self::$options[$folderData['items'][$itemId]['file_id']]=$value; self::buildFolderListOptions($itemId, $folderData, $value); if($folderData['items'][$itemId]['file_folder']==0) $value=''; } } } } ?> |
Hoe kan ik dit het beste oplossen?