Hulp gezocht voor het laatste puntje

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Marco van Wyngaarden

Marco van Wyngaarden

25/06/2010 20:51:13
Quote Anchor link
Beste PHPers

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?
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
 
PHP hulp

PHP hulp

25/04/2024 11:57:20
 
Noppes Homeland

Noppes Homeland

25/06/2010 20:55:28
Quote Anchor link
Moge we vragen waarom je dit in php uitrekent en niet in de query zelf?

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
 
Marco van Wyngaarden

Marco van Wyngaarden

25/06/2010 21:00:42
Quote Anchor link
Ik was hier wel al mee aan het testen geweest kreeg het alleen niet aan de praat.

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.
 
Noppes Homeland

Noppes Homeland

25/06/2010 21:19:38
Quote Anchor link
met php op deze manier rekenen met tijd is vaak niet echt slim, het kan foutieve uitkomsten geven in het voordeel maar ook in het nadeel.

ik zie nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$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)
PHP script in nieuw venster Selecteer het PHP script
1
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';
   }
}

?>


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
 
Marco van Wyngaarden

Marco van Wyngaarden

25/06/2010 21:31:34
Quote Anchor link
verschil word berekend op door de standaard tijd 8:00 van de gewerkte tijd af te trekken. en het geen daar van overblijft word weer gegeven onder verschil.

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
 
Noppes Homeland

Noppes Homeland

25/06/2010 21:43:20
Quote Anchor link
http://nl2.php.net/mysql_num_rows

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
// 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
 
Marco van Wyngaarden

Marco van Wyngaarden

26/06/2010 10:34:06
Quote Anchor link
het veld minimaal is van het type Time met de standaard waarde van 08:00:00
 
Noppes Homeland

Noppes Homeland

26/06/2010 10:53:11
Quote Anchor link
Zie de gemaakte wijziging van gister in post dd 25/06/2010 21:19:38
 
Marco van Wyngaarden

Marco van Wyngaarden

27/06/2010 16:03:07
Quote Anchor link
Met die wijziging kom ik uit op een error 500

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
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);

?>
 
- SanThe -

- SanThe -

27/06/2010 16:10:14
Quote Anchor link
Zet dit bovenin je script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest
?>
 
Noppes Homeland

Noppes Homeland

27/06/2010 17:53:03
Quote Anchor link
Ik geloof dat je ook totaal niet begrepen hebt dat

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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';
   }
}

?>


dit zal moeten vervangen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>";
  
}

?>
 
Marco van Wyngaarden

Marco van Wyngaarden

30/06/2010 19:34:18
Quote Anchor link
Waarschijnlijk idd verkeert opgevat.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?
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);

?>
 
Obelix Idefix

Obelix Idefix

30/06/2010 20:14:57
Quote Anchor link
De foutmelding geeft al aan waar je het (deels) zoeken moet: regel 44.
Daar staat resut ipv result.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if (mysql_num_rows($resut)>0) {
Gewijzigd op 30/06/2010 20:15:33 door Obelix Idefix
 
- SanThe -

- SanThe -

30/06/2010 20:17:28
Quote Anchor link
Heb je zelf al gekeken?

$result = mysql_query($sql)) {
en
if (mysql_num_rows($resut)>0) {
 
Marco van Wyngaarden

Marco van Wyngaarden

02/07/2010 08:03:56
Quote Anchor link
Die had ik zelf idd ook al gezien en verholen.

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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
create table `uren` (
    `ID` double ,
    `dag` blob ,
    `datum` date ,
    `begin` time ,
    `eind` time ,
    `pause` time ,
    `Minimaal` time
);
 
Marco van Wyngaarden

Marco van Wyngaarden

06/07/2010 23:02:36
Quote Anchor link
Mijn fout vergeet de output opnieuw te laten weergeven.
 
Pieter van Linschoten

Pieter van Linschoten

07/07/2010 08:53:49
Quote Anchor link
Naar mijn weten moet je AS gebruiken, om een SQL berekening als variabele te kunnen terugsturen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
// DIT
TIMEDIFF(TIMEDIFF(eind,begin),pause) tijd_gewerkt

// WORDT
TIMEDIFF(TIMEDIFF(eind,begin),pause) AS tijd_gewerkt


Dan zou dit je query worden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?
$sql
= "SELECT dag
       ,       datum
       ,       begin
       ,       eind
       ,       pause
       ,       minimaal
       ,       TIMEDIFF(eind,begin) AS totaal_inclusief_pause  
       ,       TIMEDIFF(TIMEDIFF(eind,begin),pause) AS tijd_gewerkt
       ,       TIMEDIFF(TIMEDIFF(TIMEDIFF(eind,begin),pause),minimaal) AS verschil
       FROM    uren"
;
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.