Tijd (uit DB) vergelijken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Typo3 Ontwikkelaar / Tijdelijk / Regio Amersfoort

Functie-eisen Minimaal HBO niveau; Kennis en relevante ervaring met: Typo3, PHP, Versiebeheer en webtalen (CCS/HTML); Ervaring met Jira en Confluence is een pré; Goede beheersing van de Nederlandse taal; Je kunt de prioriteit van de werkzaamheden goed inschatten. Bedrijfsomschrijving Als Typo3 ontwikkelaar ga jij je bezig houden met het doorontwikkelen en verbeteren van de Typo3 website. Verder zijn zij op zoek naar iemand die het platform kan migreren naar de nieuwste versie van Typo3. Daarbij wordt ontwikkelt volgens de SCRUM methodiek. Doorontwikkelen van de Typo3 applicatie; Verbeteringen doorvoeren; Huidige platform migreren naar nieuwste versie van Typo3. Locatie/Standplaats Utrecht Arbeidsvoorwaarden Startdatum:

Bekijk vacature »

Sjef dresen

sjef dresen

07/02/2019 14:56:12
Quote Anchor link
Beste,

Met deze code haal ik een bepaald tijdstip (gaat altijd over "vandaag") uit de database:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
while( $obj = sqlsrv_fetch_object( $result )) {
   $tijdjeUitDB = $obj->TimeBegin->format('H:i:s');
}


Daarna trek ik daar 1 uur vanaf:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$tijdjeUitDB = strtotime($tijdjeUitDB) - 60*60;


En vervolgens wil ik het gaan vergelijken met tijdstip "nu":

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if (strtotime(time()) >= strtotime($tijdjeUitDB)) {
  echo "ok";
}


Dit lukt echter niet. Er komt namelijk in alle gevallen "ok" te staan, ook als de vergelijking eigenlijk een negatief resultaat zou moeten geven...

Wat doe ik verkeerd? En nog belangrijker: hoe krijg ik dit opgelost?

Het doel is straks dit script door een CRON-job (iedere 15 min.) te laten triggeren.
Zodra het script "ziet" dat het tijdstip uit de database een uur (of minder) voor de huidige tijd licht, dan moet er "ok" verschijnen.

Alvast bedankt voor 't meedenken!
Gewijzigd op 07/02/2019 15:02:40 door Sjef dresen
 
PHP hulp

PHP hulp

15/02/2019 21:21:20
 
Rob Doemaarwat

Rob Doemaarwat

07/02/2019 15:39:46
Quote Anchor link
1) time() is al een "timestamp" (integer sinds 1970-01-01), die hoef je dus niet meer door strtotime() heen te halen (geen idee wat je dan krijg overigens).

2) Voeg aan de format van $tijdjeUitDB ook Y-m-d toe. Dan heb je een echte tijd (geen idee wat ie anders als datum pakt).

3) Draaien database en PHP op dezelfde server? Dan is het volgens mij onzinnig om dit te doen.
 
Sjef dresen

sjef dresen

07/02/2019 15:48:41
Quote Anchor link
Thanks voor je reactie!

Ik heb bij beide "tijden" strtotime() weggehaald, en opeens werkt het :-)
Geen idee waarom het de hele middag dan niet lukte, maar ben blij dat het opgelost is...

Merci!!!
 
Thomas van den Heuvel

Thomas van den Heuvel

07/02/2019 15:54:06
Quote Anchor link
Los hiervan, zoals @Rob al min of meer aanhaalt, je meet hier met twee maten die mogelijk verschillen: de tijd volgens de database en de tijd volgens PHP. Het is gevaarlijk om die vervolgens te gaan vergelijken in de veronderstelling dat deze (altijd) gelijk lopen.

Misschien verschillen deze niet in je test/ontwikkelomgeving, maar wie zegt dat jouw productieomgeving niet aparte servers heeft voor aparte doeleinden (webserver, databaseserver)?

Kies één van de twee, en houd deze vervolgens overal aan als "de tijd".
Gewijzigd op 07/02/2019 15:56:18 door Thomas van den Heuvel
 
Sjef dresen

sjef dresen

07/02/2019 16:21:22
Quote Anchor link
Ahzo, ok. Hmzzz, ik denk dat ik het wel begrijp, maar weet niet hoe ik dit dan zou moeten maken.

Wie kan me op weg helpen hiermee?

Thanks!
 
Thomas van den Heuvel

Thomas van den Heuvel

07/02/2019 17:18:48
Quote Anchor link
Gewoon overal consequent $_SERVER['REQUEST_TIME'] of time() of equivalent (PHP) gebruiken, of equivalente MySQL-functies (DATE(), TIME(), NOW() et cetera) maar geen mengelmoes van PHP- en MySQL-functies / -waarden.
Gewijzigd op 07/02/2019 17:19:19 door Thomas van den Heuvel
 



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.