Voor een urenregistratie systeem wil ik kunnen controleren welke dagen nog niet ingevuld zijn. Ik heb daarvoor al een werkzame functie geschreven, maar voor min gevoel kan deze veel eenvoudiger en daarmee ook sneller uitgevoerd worden.
Heeft iemand nog tips waarmee ik deze functie kan optimaliseren?
Ik vraag alleen maar om mogelijkheden, geen kant en klare code...
De functie calc_diff_dates is een eigen geschreven functie die simpelweg het verschil tussen twee datums berekend.
Heeft iemand nog tips waarmee ik deze functie kan optimaliseren?
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
34
35
36
37
38
39
40
41
42
43
44
| function checkAvailability() { // Make up dates $dtStartOfMonth = date("Y-m-d",mktime(0,0,0,date("m"),1,date("Y"))); $dtEndOfMonth = date("Y-m-d",mktime(0,0,0,date("m"),date("t"), date("Y"))); $sQuery = "SELECT dtDateJob FROM tblHourRegistration WHERE iPersonID = " . $_SESSION['iAuthorId'] ." AND dtDateJob BETWEEN '".$dtStartOfMonth ."' AND '" . $dtEndOfMonth ."' ORDER BY dtDateJob ASC"; $rResult = $this->_oDataControl->dbSelectQuery($sQuery); $iNumberOfResults = $this->_oDataControl->dbCountResults($rResult); if($iNumberOfResults) { $aRegData = $this->_oDataControl->dbFetchArray($rResult); $dayToday = date("j"); $aAvailableDays = array(); for($day = 0; $day <=31; $day++) { if($dayToday <= $day) $day=32; $aDates = explode('-',$aRegData[$day]['dtDateJob']); if($aDates[2] != 0) { $aDates[2] = date("j",mktime(0,0,0,0,$aDates[2],0)); $aAvailableDays[$aDates[2]] = $aDates[2]; } } for($iDays=1; $iDays <= ($this->calc_diff_dates(date("Y-m-d",mktime(0,0,0,date("m"),1, date("Y"))), date("Y-m-d",mktime(0,0,0,date("m"),date("d"), date("Y")))) + 1); $iDays++) { if(!array_key_exists($iDays, $aAvailableDays)) $aUnavailableDays[] = $iDays; } return $aUnavailableDays; } } |
Ik vraag alleen maar om mogelijkheden, geen kant en klare code...
De functie calc_diff_dates is een eigen geschreven functie die simpelweg het verschil tussen twee datums berekend.