Ik heb 3 tabellen
Nu wil ik een resultset uit de database halen waarmee ik tel hoeveel files er per theme categorie zijn en de files opsommen. Met andere woorden, de resultset zou moeten zijn:
Ik ben nu heel onhandig aan het doen met PHP:
Maar het moet toch mogelijk zijn om een resultaat uit de database te krijgen waarmee ik makkelijker de $themesets array kan vullen? Wie kan mij helpen met de nodige query?
- nodes: hierin staat alle content die aan de website is toegevoegd
- categories: definieer categorien
- files: koppelingstabel - koppel nodes aan een categorie
code:
1
2
3
4
5
6
7
8
9
10
| nodes categories files --------------------- ---------------------- -------- nid title cid module name nid cid --------------------- ---------------------- -------- 13 main_template.tpl 3 image celebrities 13 5 25 mozilla.css 4 image producten 25 5 26 forum_list.tpl 5 theme tweakers_v1 26 8 27 jquery.js 8 theme tweakers_ng 27 8 33 indextools.js 33 5 34 printing.css 34 5 |
Nu wil ik een resultset uit de database halen waarmee ik tel hoeveel files er per theme categorie zijn en de files opsommen. Met andere woorden, de resultset zou moeten zijn:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| Array ( [5] => Array ( name => tweakers_v1 num_files => 4 files => Array ( [0] => main_template.tpl [1] => mozilla.css [2] => indextools.js [3] => printing.css ) ) [8] => Array ( name => tweakers_ng num_files => 2 files => Array ( [0] => forum_list.tpl [1] => jquery.js ) ) ) |
Ik ben nu heel onhandig aan het doen met PHP:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| $result = db_query(" SELECT c.cid, c.name, n.title, f.nid, f.extension FROM {categories} c LEFT JOIN {files} f ON c.cid = f.cid LEFT JOIN {nodes} n ON f.nid = n.nid WHERE c.module = 'theme'" ); $themesets = array(); while ($file = db_fetch_object($result)) { if (!array_key_exists($file->cid, $themesets)) { $themesets[$file->cid] = array( 'name' => $file->name, 'num_files' => 1 'files' => array($file->title) ); } else { $themesets[$file->cid]['num_files']+= 1; $themesets[$file->cid]['files'][] = $file->title; } } |
Maar het moet toch mogelijk zijn om een resultaat uit de database te krijgen waarmee ik makkelijker de $themesets array kan vullen? Wie kan mij helpen met de nodige query?