Hulp gezocht voor het laatste puntje
Ben bezig met een Uren overzicht op basis van PHP.
de volgende gegevens worden gehaald uit het database
Dag / datum / begintijd / eindtijd / pause / minimaal aantal uren
Nu zit ik alleen met een klein probleempje met het rekenen.
Als er meer gewerkt is dan de minimaal aantal uren geeft hij netjes aan hoeveel minuten dit is geweest.
echter als het meer dan 1 uur betreft blijft hij alleen het verschil in minuten weer geven.
voorbeeld
Begintijd | eindtijd | totaal | verschil
8:31 | 18:25 | 9:24 | 00:24
dit laatste moet alleen zijn 01:24
Tevens bij een tekort aan uren. geeft hij alleen ook alleen maar minuten aan.
Graag zou ik hier ook de uren van zien en het liefst in een negatief getal.
Ik hoop dat er iemand is die mij weer een stuk op weg kan helepen.
tot zover ben ik een heel eind gekomen met google maar nu loop ik toch een beetje vast helaas.
zou daarom graag jullie expertiese zien hierover.
alvast bedankt
Marco
Demo
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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
45
46
47
48
49
50
51
52
53
<?
require
echo "<H3> Uren Overzicht </h3>";
mysql_select_db("test", $con);
$result = mysql_query("SELECT * FROM uren LIMIT 0,5");
echo "<table border='1'>
<tr>
<th>dag</th>
<th>datum</th>
<th>begintijd</th>
<th>eindtijd</th>
<th>totaal</th>
<th>verschil</th>
</tr>";
$select = mysql_fetch_assoc(
mysql_query(" SELECT begin,eind FROM uren ")
)or die(mysql_error());
{
#Berekenen van totaal aantal uren ( begin - Eind = Totaal )
while ($row = mysql_fetch_array($result)) {
$tijd1 = $row['begin'] ;
$tijd2 = $row['eind'];
$tijd3 = $row['pause'];
$tijd4 = $row['Minimaal'];
list ($uren1, $minuten1) = explode (':', $tijd1);
list ($uren2, $minuten2) = explode (':', $tijd2);
list ($uren3, $minuten3) = explode (':', $tijd3);
$seconden_verschil = (($uren2 * 60) + ($minuten2)) - (($uren1 * 60) + ($minuten1)) - (($uren3 * 60) + ($minuten3));
$tijd_gewerkt = sprintf ('%02d:%02d:00', floor ($seconden_verschil / 60), $seconden_verschil % 60);
$verschil = (($tijd_gewerkt)) - ((tijd4));
$verschil1 = sprintf ('%02d:%02d:00', floor ($verschil / 60), $seconden_verschil % 60);
echo "<tr>";
echo "<td>" . $row['dag'] . "</td>";
echo "<td>" . $row['datum'] . "</td>";
echo "<td>" . $row['begin'] . "</td>";
echo "<td>" . $row['eind'] . "</td>";
echo "<td>" . $tijd_gewerkt . "</td>";
echo "<td>" . $verschil1 . "</td>";
echo "</tr>";
}
echo "</table>";
}
mysql_close($con);
?>
require
echo "<H3> Uren Overzicht </h3>";
mysql_select_db("test", $con);
$result = mysql_query("SELECT * FROM uren LIMIT 0,5");
echo "<table border='1'>
<tr>
<th>dag</th>
<th>datum</th>
<th>begintijd</th>
<th>eindtijd</th>
<th>totaal</th>
<th>verschil</th>
</tr>";
$select = mysql_fetch_assoc(
mysql_query(" SELECT begin,eind FROM uren ")
)or die(mysql_error());
{
#Berekenen van totaal aantal uren ( begin - Eind = Totaal )
while ($row = mysql_fetch_array($result)) {
$tijd1 = $row['begin'] ;
$tijd2 = $row['eind'];
$tijd3 = $row['pause'];
$tijd4 = $row['Minimaal'];
list ($uren1, $minuten1) = explode (':', $tijd1);
list ($uren2, $minuten2) = explode (':', $tijd2);
list ($uren3, $minuten3) = explode (':', $tijd3);
$seconden_verschil = (($uren2 * 60) + ($minuten2)) - (($uren1 * 60) + ($minuten1)) - (($uren3 * 60) + ($minuten3));
$tijd_gewerkt = sprintf ('%02d:%02d:00', floor ($seconden_verschil / 60), $seconden_verschil % 60);
$verschil = (($tijd_gewerkt)) - ((tijd4));
$verschil1 = sprintf ('%02d:%02d:00', floor ($verschil / 60), $seconden_verschil % 60);
echo "<tr>";
echo "<td>" . $row['dag'] . "</td>";
echo "<td>" . $row['datum'] . "</td>";
echo "<td>" . $row['begin'] . "</td>";
echo "<td>" . $row['eind'] . "</td>";
echo "<td>" . $tijd_gewerkt . "</td>";
echo "<td>" . $verschil1 . "</td>";
echo "</tr>";
}
echo "</table>";
}
mysql_close($con);
?>
Gewijzigd op 25/06/2010 20:54:58 door Marco van Wyngaarden
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
TIMEDIFF
op phpfreakz een soort gelijk iets:
http://www.phpfreakz.nl/forum.php?forum=2&iid=1324102#id1324124
echter doordat het slecht voor men eigen administratie is draait dit thuis en maakt het mij niet veel uit hoe het berekend word.
zal via de query waarschijnlijk sneller gaan bij grote hoeveelheden data maar dat maakt voor mij niet zoveel uit.
ik zie nu:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$select = mysql_fetch_assoc(
mysql_query(" SELECT begin,eind FROM uren ")
)or die(mysql_error());
?>
$select = mysql_fetch_assoc(
mysql_query(" SELECT begin,eind FROM uren ")
)or die(mysql_error());
?>
is niet echt handig, zo kan je je code niet goed debuggen
or die() is struisvogelpolitiek, dus niet toepassen
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$sql = "SELECT begin
, eind
, pauze
, minimaal
, TIMEDIFF(eind,begin) totaal_inclusief_pause
, TIMEDIFF(TIMEDIFF(eind,begin),pauze) tijd_gewerkt
, TIMEDIFF(TIMEDIFF(TIMEDIFF(eind,begin),pauze),minimaal) verschil
FROM uren";
if (!$result = mysql_query($sql)) {
echo mysql_error().'<br/>'.$sql;
}
else
if (mysql_num_rows()>0) {
while ($row = mysql_fetch_assoc($result)) {
}
}
else {
echo 'er zijn geen uren gevonden';
}
}
?>
$sql = "SELECT begin
, eind
, pauze
, minimaal
, TIMEDIFF(eind,begin) totaal_inclusief_pause
, TIMEDIFF(TIMEDIFF(eind,begin),pauze) tijd_gewerkt
, TIMEDIFF(TIMEDIFF(TIMEDIFF(eind,begin),pauze),minimaal) verschil
FROM uren";
if (!$result = mysql_query($sql)) {
echo mysql_error().'<br/>'.$sql;
}
else
if (mysql_num_rows()>0) {
while ($row = mysql_fetch_assoc($result)) {
}
}
else {
echo 'er zijn geen uren gevonden';
}
}
?>
Weet alleen nu niet wat ik met `verschil` aan moet
wat voor waarde staat er in het veld minimaal? is dat veld van het type time?
Gewijzigd op 25/06/2010 21:32:41 door Noppes Homeland
alleen gaat dit mis bij tijden boven de 1 uur of met een negative tijd.
heb in elk geval de code vervangen hij blijft nu alleen wel aangeven dat er geen uren zijn gevonden terwijl hij wel een output geeft :S dus daar gaat iets niet helemaal goed nog maar eens op men gemak naar kijken
http://nl2.php.net/mysql_num_rows
ik had het al door en ik heb daarop mijn vorige post op aangepast, uiteraard allemaal onder voorbehoud van
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
// dus niet
if (mysql_num_rows()>0) {
// maar
if (mysql_num_rows($resut)>0) {
?>
// dus niet
if (mysql_num_rows()>0) {
// maar
if (mysql_num_rows($resut)>0) {
?>
ik had het al door en ik heb daarop mijn vorige post op aangepast, uiteraard allemaal onder voorbehoud van
Gewijzigd op 25/06/2010 21:44:14 door Noppes Homeland
het veld minimaal is van het type Time met de standaard waarde van 08:00:00
Zie de gemaakte wijziging van gister in post dd 25/06/2010 21:19:38
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?
require ('DB.php');
echo "<H3> Uren Overzicht </h3>";
mysql_select_db("test", $con);
$result = mysql_query("SELECT * FROM uren LIMIT 0,5");
echo "<table border='1'>
<tr>
<th>dag</th>
<th>datum</th>
<th>begintijd</th>
<th>eindtijd</th>
<th>totaal</th>
<th>verschil</th>
</tr>";
$sql = "SELECT dag
, datum
, begin
, eind
, pause
, minimaal
, TIMEDIFF(eind,begin) totaal_inclusief_pause
, TIMEDIFF(TIMEDIFF(eind,begin),pause) tijd_gewerkt
, TIMEDIFF(TIMEDIFF(TIMEDIFF(eind,begin),pause),minimaal) verschil
FROM uren";
if (!$result = mysql_query($sql)) {
echo mysql_error().'<br/>'.$sql;
}
else
if (mysql_num_rows($resut)>0) {
while ($row = mysql_fetch_assoc($result)) {
}
}
else {
echo 'er zijn geen uren gevonden';
}
}
{
#Berekenen van totaal aantal uren ( begin - Eind = Totaal )
while ($row = mysql_fetch_array($result)) {
$tijd1 = $row['begin'] ;
$tijd2 = $row['eind'];
$tijd3 = $row['pause'];
$tijd4 = $row['Minimaal'];
list ($uren1, $minuten1) = explode (':', $tijd1);
list ($uren2, $minuten2) = explode (':', $tijd2);
list ($uren3, $minuten3) = explode (':', $tijd3);
$seconden_verschil = (($uren2 * 60) + ($minuten2)) - (($uren1 * 60) + ($minuten1)) - (($uren3 * 60) + ($minuten3));
$tijd_gewerkt = sprintf ('%02d:%02d:00', floor ($seconden_verschil / 60), $seconden_verschil % 60);
$verschil = (($tijd_gewerkt)) - ((tijd4));
$verschil1 = sprintf ('%02d:%02d:00', floor ($verschil / 60), $seconden_verschil % 60);
echo "<tr>";
echo "<td>" . $row['dag'] . "</td>";
echo "<td>" . $row['datum'] . "</td>";
echo "<td>" . $row['begin'] . "</td>";
echo "<td>" . $row['eind'] . "</td>";
echo "<td>" . $tijd_gewerkt . "</td>";
echo "<td>" . $verschil1 . "</td>";
echo "</tr>";
}
echo "</table>";
}
mysql_close($con);
?>
require ('DB.php');
echo "<H3> Uren Overzicht </h3>";
mysql_select_db("test", $con);
$result = mysql_query("SELECT * FROM uren LIMIT 0,5");
echo "<table border='1'>
<tr>
<th>dag</th>
<th>datum</th>
<th>begintijd</th>
<th>eindtijd</th>
<th>totaal</th>
<th>verschil</th>
</tr>";
$sql = "SELECT dag
, datum
, begin
, eind
, pause
, minimaal
, TIMEDIFF(eind,begin) totaal_inclusief_pause
, TIMEDIFF(TIMEDIFF(eind,begin),pause) tijd_gewerkt
, TIMEDIFF(TIMEDIFF(TIMEDIFF(eind,begin),pause),minimaal) verschil
FROM uren";
if (!$result = mysql_query($sql)) {
echo mysql_error().'<br/>'.$sql;
}
else
if (mysql_num_rows($resut)>0) {
while ($row = mysql_fetch_assoc($result)) {
}
}
else {
echo 'er zijn geen uren gevonden';
}
}
{
#Berekenen van totaal aantal uren ( begin - Eind = Totaal )
while ($row = mysql_fetch_array($result)) {
$tijd1 = $row['begin'] ;
$tijd2 = $row['eind'];
$tijd3 = $row['pause'];
$tijd4 = $row['Minimaal'];
list ($uren1, $minuten1) = explode (':', $tijd1);
list ($uren2, $minuten2) = explode (':', $tijd2);
list ($uren3, $minuten3) = explode (':', $tijd3);
$seconden_verschil = (($uren2 * 60) + ($minuten2)) - (($uren1 * 60) + ($minuten1)) - (($uren3 * 60) + ($minuten3));
$tijd_gewerkt = sprintf ('%02d:%02d:00', floor ($seconden_verschil / 60), $seconden_verschil % 60);
$verschil = (($tijd_gewerkt)) - ((tijd4));
$verschil1 = sprintf ('%02d:%02d:00', floor ($verschil / 60), $seconden_verschil % 60);
echo "<tr>";
echo "<td>" . $row['dag'] . "</td>";
echo "<td>" . $row['datum'] . "</td>";
echo "<td>" . $row['begin'] . "</td>";
echo "<td>" . $row['eind'] . "</td>";
echo "<td>" . $tijd_gewerkt . "</td>";
echo "<td>" . $verschil1 . "</td>";
echo "</tr>";
}
echo "</table>";
}
mysql_close($con);
?>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
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
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
<?php
$sql = "SELECT dag
, datum
, begin
, eind
, pause
, minimaal
, TIMEDIFF(eind,begin) totaal_inclusief_pause
, TIMEDIFF(TIMEDIFF(eind,begin),pause) tijd_gewerkt
, TIMEDIFF(TIMEDIFF(TIMEDIFF(eind,begin),pause),minimaal) verschil
FROM uren";
if (!$result = mysql_query($sql)) {
echo mysql_error().'<br/>'.$sql;
}
else
if (mysql_num_rows($resut)>0) {
while ($row = mysql_fetch_assoc($result)) {
}
}
else {
echo 'er zijn geen uren gevonden';
}
}
?>
$sql = "SELECT dag
, datum
, begin
, eind
, pause
, minimaal
, TIMEDIFF(eind,begin) totaal_inclusief_pause
, TIMEDIFF(TIMEDIFF(eind,begin),pause) tijd_gewerkt
, TIMEDIFF(TIMEDIFF(TIMEDIFF(eind,begin),pause),minimaal) verschil
FROM uren";
if (!$result = mysql_query($sql)) {
echo mysql_error().'<br/>'.$sql;
}
else
if (mysql_num_rows($resut)>0) {
while ($row = mysql_fetch_assoc($result)) {
}
}
else {
echo 'er zijn geen uren gevonden';
}
}
?>
dit zal moeten vervangen:
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
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
<?php
{
#Berekenen van totaal aantal uren ( begin - Eind = Totaal )
while ($row = mysql_fetch_array($result)) {
$tijd1 = $row['begin'] ;
$tijd2 = $row['eind'];
$tijd3 = $row['pause'];
$tijd4 = $row['Minimaal'];
list ($uren1, $minuten1) = explode (':', $tijd1);
list ($uren2, $minuten2) = explode (':', $tijd2);
list ($uren3, $minuten3) = explode (':', $tijd3);
$seconden_verschil = (($uren2 * 60) + ($minuten2)) - (($uren1 * 60) + ($minuten1)) - (($uren3 * 60) + ($minuten3));
$tijd_gewerkt = sprintf ('%02d:%02d:00', floor ($seconden_verschil / 60), $seconden_verschil % 60);
$verschil = (($tijd_gewerkt)) - ((tijd4));
$verschil1 = sprintf ('%02d:%02d:00', floor ($verschil / 60), $seconden_verschil % 60);
echo "<tr>";
echo "<td>" . $row['dag'] . "</td>";
echo "<td>" . $row['datum'] . "</td>";
echo "<td>" . $row['begin'] . "</td>";
echo "<td>" . $row['eind'] . "</td>";
echo "<td>" . $tijd_gewerkt . "</td>";
echo "<td>" . $verschil1 . "</td>";
echo "</tr>";
}
echo "</table>";
}
?>
{
#Berekenen van totaal aantal uren ( begin - Eind = Totaal )
while ($row = mysql_fetch_array($result)) {
$tijd1 = $row['begin'] ;
$tijd2 = $row['eind'];
$tijd3 = $row['pause'];
$tijd4 = $row['Minimaal'];
list ($uren1, $minuten1) = explode (':', $tijd1);
list ($uren2, $minuten2) = explode (':', $tijd2);
list ($uren3, $minuten3) = explode (':', $tijd3);
$seconden_verschil = (($uren2 * 60) + ($minuten2)) - (($uren1 * 60) + ($minuten1)) - (($uren3 * 60) + ($minuten3));
$tijd_gewerkt = sprintf ('%02d:%02d:00', floor ($seconden_verschil / 60), $seconden_verschil % 60);
$verschil = (($tijd_gewerkt)) - ((tijd4));
$verschil1 = sprintf ('%02d:%02d:00', floor ($verschil / 60), $seconden_verschil % 60);
echo "<tr>";
echo "<td>" . $row['dag'] . "</td>";
echo "<td>" . $row['datum'] . "</td>";
echo "<td>" . $row['begin'] . "</td>";
echo "<td>" . $row['eind'] . "</td>";
echo "<td>" . $tijd_gewerkt . "</td>";
echo "<td>" . $verschil1 . "</td>";
echo "</tr>";
}
echo "</table>";
}
?>
na het aanpassen van het script hou ik de volgende fouten over.
Notice: Undefined variable: resut in C:\Inetpub\beta\Urenregistratie\overzicht2.php on line 44
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Inetpub\beta\Urenregistratie\overzicht2.php on line 44
tevens geeft hij de melding : er zijn geen uren gevnden.
en laat daarbij een leeg table zien.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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
45
46
47
48
49
50
51
52
53
54
<?
require ('DB.php');
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
echo "<H3> Uren Overzicht </h3>";
// mysql_select_db("uren", $con);
$result = mysql_query("SELECT * FROM uren LIMIT 0,5");
echo "<table border='1'>
<tr>
<th>dag</th>
<th>datum</th>
<th>begintijd</th>
<th>eindtijd</th>
<th>totaal</th>
<th>verschil</th>
</tr>";
$select = mysql_fetch_assoc(
mysql_query(" SELECT begin,eind FROM uren ")
)or die(mysql_error());
#Berekenen van totaal aantal uren ( begin - Eind = Totaal )
$sql = "SELECT dag
, datum
, begin
, eind
, pause
, minimaal
, TIMEDIFF(eind,begin) totaal_inclusief_pause
, TIMEDIFF(TIMEDIFF(eind,begin),pause) tijd_gewerkt
, TIMEDIFF(TIMEDIFF(TIMEDIFF(eind,begin),pause),minimaal) verschil
FROM uren";
if (!$result = mysql_query($sql)) {
echo mysql_error().'<br/>'.$sql;
}
else
if (mysql_num_rows($resut)>0) {
while ($row = mysql_fetch_assoc($result)) {
}
}
else {
echo 'er zijn geen uren gevonden';
}
//mysql_close($con);
?>
require ('DB.php');
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
echo "<H3> Uren Overzicht </h3>";
// mysql_select_db("uren", $con);
$result = mysql_query("SELECT * FROM uren LIMIT 0,5");
echo "<table border='1'>
<tr>
<th>dag</th>
<th>datum</th>
<th>begintijd</th>
<th>eindtijd</th>
<th>totaal</th>
<th>verschil</th>
</tr>";
$select = mysql_fetch_assoc(
mysql_query(" SELECT begin,eind FROM uren ")
)or die(mysql_error());
#Berekenen van totaal aantal uren ( begin - Eind = Totaal )
$sql = "SELECT dag
, datum
, begin
, eind
, pause
, minimaal
, TIMEDIFF(eind,begin) totaal_inclusief_pause
, TIMEDIFF(TIMEDIFF(eind,begin),pause) tijd_gewerkt
, TIMEDIFF(TIMEDIFF(TIMEDIFF(eind,begin),pause),minimaal) verschil
FROM uren";
if (!$result = mysql_query($sql)) {
echo mysql_error().'<br/>'.$sql;
}
else
if (mysql_num_rows($resut)>0) {
while ($row = mysql_fetch_assoc($result)) {
}
}
else {
echo 'er zijn geen uren gevonden';
}
//mysql_close($con);
?>
$result = mysql_query($sql)) {
en
if (mysql_num_rows($resut)>0) {
echter krijg ik geen output.
ook de regel (er zijn geen uren gevonden) is niet zichtbaar.
dit is zowel van toepassing bij een gevuld als een leeg database.
Ik heb geen idee weer maar ik nu moet gaan zoeken.
de cellen waarna gekeken moet worden komen overeen met het database
Mijn fout vergeet de output opnieuw te laten weergeven.
Code (php)
1
2
3
4
5
2
3
4
5
// DIT
TIMEDIFF(TIMEDIFF(eind,begin),pause) tijd_gewerkt
// WORDT
TIMEDIFF(TIMEDIFF(eind,begin),pause) AS tijd_gewerkt
TIMEDIFF(TIMEDIFF(eind,begin),pause) tijd_gewerkt
// WORDT
TIMEDIFF(TIMEDIFF(eind,begin),pause) AS tijd_gewerkt
Dan zou dit je query worden.