Onder het mom van "de bomen, welk bos?" heb ik mijn functie in elkaar gehacked.. Het werkt, maar is naar mijn idee HÉÉL erg ranzig..
Hij werkt!!
Maar wat is de bedoeling van deze functie? Nou.. Dit is een tabel:
Dus..... In de functie na de while-loop op regels 7-9 heb ik zo'n stukkie array:
Deze array assign ik naar m'n template (Smarty template engine), en die loopt door de uren heen. Hij begint met het uur 0, en loopt dus 1 keer. Dan krijg ik maar 1 rij terug, met voor elk uur 1 waarde, en regelmatig een error "Undefined offset". Da's logisch.. Daarom heb ik deze functie geschreven..
De functie loopt door de uren heen, en zoekt het grootste aantal elementen per uur op (regels 11-16). Daarna loopt ie er nog een keer doorheen, en vult ie de rest van de elementen als ze niet geset zijn (regels 17-24). Dan heb ik de complete array goed gevuld, en geeft Smarty ook geen errors meer.
Hij werkt 
Maar het is ranzig.. Hoe zou dit anders kunnen?
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
| function GetTijden($hid, $lid) { if ((is_numeric($hid)) && (is_numeric($lid))) { $Result = mysql_query("SELECT id, uur, minuut, dagen FROM tijden WHERE lid = $lid AND hid = $hid ORDER BY dagen, uur, minuut"); while ($Tijd = mysql_fetch_row($Result)) { $TijdOut[$Tijd[3]][$Tijd[1]][] = $Tijd[2]; } // while while (list($Dagen, $Tijden) = each($TijdOut)) { $Max = 0; for ($i = 0; $i < 24; $i++) { if (isset($Tijden[$i])) { if (count($Tijden[$i]) > $Max) { $Max = count($Tijden[$i]); } } // if } // for for ($i = 0; $i < 24; $i++) { for ($j = 0; $j < $Max; $j++) { if (!isset($Tijden[$i][$j])) { $Bla[$Dagen][$i][$j] = ""; } // if else $Bla[$Dagen][$i][$j] = $Tijden[$i][$j]; } // for } // for } // while return $Bla; } // if else return false; } // function |
Hij werkt!!
code:
1
2
3
4
5
6
7
8
| tijden ====== id - mediumint unsigned lid - mediumint unsigned hid - mediumint unsigned uur - tinyint (2) unsigned minuut - tinyint (2) unsigned zerofill dagen - tinyint (2) unsigned |
Dus..... In de functie na de while-loop op regels 7-9 heb ik zo'n stukkie array:
code:
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
| Array
(
[1] => Array (komt overeen met veld dagen)
(
[0] => Array (komt overeen met veld uur)
(
[0] => 01 (komt overeen met veld minuut)
)
[5] => Array
(
[0] => 46
)
[6] => Array
(
[0] => 03
[1] => 33
[2] => 51
)
[7] => Array
(
[0] => 05
[1] => 16
[2] => 31
[3] => 46
)
.... |
Deze array assign ik naar m'n template (Smarty template engine), en die loopt door de uren heen. Hij begint met het uur 0, en loopt dus 1 keer. Dan krijg ik maar 1 rij terug, met voor elk uur 1 waarde, en regelmatig een error "Undefined offset". Da's logisch.. Daarom heb ik deze functie geschreven..
De functie loopt door de uren heen, en zoekt het grootste aantal elementen per uur op (regels 11-16). Daarna loopt ie er nog een keer doorheen, en vult ie de rest van de elementen als ze niet geset zijn (regels 17-24). Dan heb ik de complete array goed gevuld, en geeft Smarty ook geen errors meer.
Maar het is ranzig.. Hoe zou dit anders kunnen?
[ Voor 0% gewijzigd door DRvDijk op 10-09-2002 12:48 . Reden: Variabelen goed noemen ;) ]