Hallo,

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
Zoiets?
<?php
$tijd = '65:12';
$hulp = explode(':', $tijd);
$uur = str_pad(floor($hulp[0] / 60), 2, '0', STR_PAD_LEFT);
$minuut = str_pad(($hulp[0] % 60), 2, '0', STR_PAD_LEFT);
$seconde = str_pad((int) $hulp[1], 2, '0', STR_PAD_LEFT);

echo $uur.':'.$minuut.':'.$seconde;

?>
"TIME" is van het type UNIX TIMESTAMP. In een timestamp wordt het aantal seconden opgeslagen geteld vanaf 1 januari 1970.

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
Thanx voor jullie snelle reacties! Wat jij zegt Frank klinkt inderdaad het meest logische en snel.
En hiervoor zal ik het minste aan programmeren/manipuleren nodig hebben toch?
Om je even op gang te helpen met dank aan SanThe
<?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>";
?>
Bedankt!
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 :-)

Reageren