Tijd veld manipuleren formulier
Ik ben nieuw op dit forum en ben begonnen met een in mijn ogen klein PHP/MySQL projectje.
Echter ben ik beginnende met PHP en probeer ik aan de hand van Youtube en google dit project voor elkaar te krijgen.
Maar dit valt nog vies tegen :-p
Wat ik wil maken is een MySQL database gevuld met gegevens, waaronder een tijd, aantal personen, enz enz.
Uit al die informatie wil ik een statistieken pagina gaan maken.
Wat is de gemiddelde tijd hoeveel personen gemiddeld enz enz.
De invulvelden weg laten schrijven in MySQL lukt prima echter loop ik vast bij de tijd.
Ik wil in mijn formulier kunnen invullen "65:12" oftewel 65 minuten en 12 seconden.
In MySQL wordt er in de tabel, die ik de eigenschap "time" heb gegeven, het formaat 00:00:00.000 gebruikt en 65:12 wordt dus opgeslagen als 65 uur.
Hoe kan ik ervoor zorgen dat ik in het formulier gewoon 65:12 kan invullen en het formulier dit manipuleert en omzet naar 01:05:12.000?
En als ik deze waarde uit de database lees wil ik dit ook weer laten zien als 65:12.
Alvast dank voor jullie hulp
Gr.
Dane
Dit zou je hiervoor niet moeten gebruiken. Jij wilt namelijk geen 'tijd' opslaan maar een 'tijdsduur'.
Je kunt het beste het volgende doen:
Je gebruikt het type INT en slaat de tijdsduur op in seconden. 65:12 wordt dan 65 * 60 + 12 seconden = 3912 seconden.
Voordelen:
- Makkelijk te sorteren en te filteren
- Makkelijk met vergelijkingen
En hiervoor zal ik het minste aan programmeren/manipuleren nodig hebben toch?
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
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
<?php
function secondsToString($seconds)
{
$hours = floor($seconds / 3600);
$seconds -= $hours * 3600;
$minutes = floor($seconds / 60);
$seconds -= $minutes * 60;
return
str_pad($hours, 2, '0', STR_PAD_LEFT) . ':' .
str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':' .
str_pad($seconds, 2, '0', STR_PAD_LEFT) ;
}
function stringToSeconds($string)
{
$parts = explode(':', $string);
if(count($parts) != 3)
{
throw new Exception('This is not a valid time string');
}
return $parts[0] * 3600 + $parts[1] * 60 + $parts[2];
}
echo secondsToString(10236) . "<br>";
echo stringToSeconds('02:50:36') . "<br>";
?>
function secondsToString($seconds)
{
$hours = floor($seconds / 3600);
$seconds -= $hours * 3600;
$minutes = floor($seconds / 60);
$seconds -= $minutes * 60;
return
str_pad($hours, 2, '0', STR_PAD_LEFT) . ':' .
str_pad($minutes, 2, '0', STR_PAD_LEFT) . ':' .
str_pad($seconds, 2, '0', STR_PAD_LEFT) ;
}
function stringToSeconds($string)
{
$parts = explode(':', $string);
if(count($parts) != 3)
{
throw new Exception('This is not a valid time string');
}
return $parts[0] * 3600 + $parts[1] * 60 + $parts[2];
}
echo secondsToString(10236) . "<br>";
echo stringToSeconds('02:50:36') . "<br>";
?>
Gewijzigd op 03/10/2016 22:24:10 door Frank Nietbelangrijk
Ik ga dit proberen te integreren in mijn bestaande code, zal hier en daar nog een beetje aanpassen zijn maar kan hierop verder puzzelen. Ik wil er wel iets van leren :-)
Vond het hier :
http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_sec-to-time