login  Naam:   Wachtwoord: 
Registreer je!
 Forum

INTERVAL x MINUTE

Offline daanlaan - 28/01/2009 17:32 (laatste wijziging 28/01/2009 17:34)
Avatar van daanlaanMySQL interesse ik heb het volgende stukje code maar er is een foutje,
$laston is een DATETIME

  1. $now = date("Y-m-d H:i:s", time());
  2.  
  3. if( ($laston + INTERVAL 5 MINUTE) < $now)
  4. {
  5. mysql_query("UPDATE board SET laston = '".$now."' WHERE id = '".$_SESSION['gebruiker']."' ");
  6. }


hoe moet ik dit doen?

12 antwoorden

Gesponsorde links
Offline Wim - 28/01/2009 17:38 (laatste wijziging 28/01/2009 17:39)
Avatar van Wim Crew algemeen
  1. UPDATE board
  2. SET laston=NOW()
  3. WHERE id='".mysql_real_escape_string($_SESSION['gebruiker'])."'


Waarom het verschil 5 minuten moet zijn begrijp ik trouwens niet, maar goed; het kan dan zo:
  1. UPDATE board
  2. SET laston=NOW()
  3. WHERE id='".mysql_real_escape_string($_SESSION['gebruiker'])."'
  4. AND (laston+ INTERVAL 5 MINUTE < NOW())
Offline daanlaan - 28/01/2009 17:41 (laatste wijziging 28/01/2009 17:42)
Avatar van daanlaan MySQL interesse nee ik doe dat omdat anders elke keer dat je op de pagina komt deze (nutteloze) query moet laten doen, en je komt best veel op die pagina, dus ga ik eerst kijken of het al langer dan 5 minuten geleden is dat er nog een update is gedaan
en $laston moet sowieso worden geselecteerd dus hier is geen paparte query voor nodig
Offline Wim - 28/01/2009 17:44
Avatar van Wim Crew algemeen als je iets in je database vergelijkt gebruik je best gewoon gegevens die je met dezelfde query kan bemachtigen: laston staat in dezelfde tabel, waarom ga je dan via php de controles doen? Zo moet je die laston ook niet meer vooraf selecteren, scheelt je weer een query

verder is dit veel netter, korter en dus duidelijker. Als er trouwens ergens een foutje in je php script zit kan je misschien zeer rare waardes bekomen, dat voorkom je ook door alles door mysql te laten doen
Offline daanlaan - 28/01/2009 17:49 (laatste wijziging 28/01/2009 17:51)
Avatar van daanlaan MySQL interesse ik weet het, eerst had ik 2 queries,

1 om elke keer dat de pagina bezocht werd een update naar $laston te doen
en nog een om alle gegevens uit de tabel te halen (waar laston ook in zit)

dus nu heb ik die 1e query weg gedaan en laston ook uit de tabel laten halen (nu is het nog maar 1 query)
ALS laston + 5 minuten < NOW => de update doen

maar wat is dan FOUT aan het volgende?
  1. if( ($laston + INTERVAL 5 MINUTE) < $now)
  2. {
  3. mysql_query("UPDATE board SET laston = '".$now."' WHERE id = '".$_SESSION['gebruiker']."' ");
  4. }
Offline Gerard - 28/01/2009 17:53
Avatar van Gerard Ouwe rakker INTERVAL 5 MINUTE werkt alleen IN de SQL query, niet in PHP.
Offline daanlaan - 28/01/2009 17:54
Avatar van daanlaan MySQL interesse ow, weet je dan misschien hoe het wel moet? 
Offline Koen - 28/01/2009 18:02
Avatar van Koen PHP expert
  1. if( ($laston + 5*60) < $now)
  2. {
  3. mysql_query("UPDATE board SET laston = '".$now."' WHERE id = '".$_SESSION['gebruiker']."' ");
  4. }

?
Offline Wim - 28/01/2009 18:08
Avatar van Wim Crew algemeen
daanlaan schreef:
ow, weet je dan misschien hoe het wel moet? 


http://www.sitemasters.be/forum/2/32317/1#id211092 ????????
Offline daanlaan - 28/01/2009 21:04 (laatste wijziging 28/01/2009 23:16)
Avatar van daanlaan MySQL interesse
wimmarien schreef:

?
Offline Wim - 28/01/2009 22:39
Avatar van Wim Crew algemeen is dat je oplossing niet dan?
Offline daanlaan - 28/01/2009 23:17
Avatar van daanlaan MySQL interesse
wimmarien schreef:
is dat je oplossing niet dan?

sorry, bedoelde je dit stukje?
ja zo zou het gaan maar dan opent hij de query of hoe gaat dat?
dus ENKEL als laston+5 < now dan doet hij een query?
anders moet hij hier dus NIETS mee doen?
  1. UPDATE board
  2. SET laston=NOW()
  3. WHERE id='".mysql_real_escape_string($_SESSION['gebruiker'])."'
  4. AND (laston+ INTERVAL 5 MINUTE < NOW())
Offline Wim - 28/01/2009 23:44
Avatar van Wim Crew algemeen ja; daar probeer ik dit mee te ontwijken:-
if( ($laston + INTERVAL 5 MINUTE) < $now)

want als je eventjes goed kijkt, staat er nu in die mysql voorwaarde hetzelfde als in je if-voorwaarde. Het verschil is dat mysql nu alles doet, dit bespaard je een query (de query om $laston te selecteren) EN de vergelijking in php...

Het gaat qua performantie beter zijn (hoewel een persoon dit nauwelijks en waarschijnlijk zelfs niet zal merken) en het maakt je code korter waardoor het in het algemeen overzichtelijker is....
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.229s