Toon posts:

[PHP & MYSQL] query i.v.m. date/time

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi allemaal,

Ik wou een query uitvoeren die telkens de status van een clanwar van "nog te spelen" naar "gespeeld" zet, 1 uur nadat de war gespeeld zou moeten worden.

Daarom heb ik het volgende bedacht:
code:
1
2
    $temp = time(date('Y-m-d H:i:s'));
    mysql_query("UPDATE wars SET played = 1 WHERE time(time) < '$temp'");

Het formaat in de dbase is datetime, dus bijvoorbeeld "2002-01-27 21:30:00". Daarom, om de "1 uur vergelijking" (goh, wat een woord :7) te kunnen maken, zet ik zowel de huidige tijd, als de dbase tijd in unix tijd om zo gemakkelijk te kunnen vergelijken: -1 uur = -3600 seconden.

Maar hij wil het gewoon niet uitvoeren? De status played=0 --> played=1 wordt niet uitgevoerd, ook al zitten we 1 uur laten dan de geplande clanwar?

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Probeer gewoon is allebei die waarden te printen, om te kijken of de 1 echt wel kleiner is :)

Verwijderd

Topicstarter
Op zondag 24 februari 2002 12:14 schreef eamelink het volgende:
Probeer gewoon is allebei die waarden te printen, om te kijken of de 1 echt wel kleiner is :)
Dat is zo! Ik snap het ook niet meer goed :'(

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 27-08 21:32
Op zondag 24 februari 2002 11:44 schreef DiEana het volgende:
Hoi allemaal,

Ik wou een query uitvoeren die telkens de status van een clanwar van "nog te spelen" naar "gespeeld" zet, 1 uur nadat de war gespeeld zou moeten worden.

Daarom heb ik het volgende bedacht:
code:
1
2
    $temp = time(date('Y-m-d H:i:s'));
    mysql_query("UPDATE wars SET played = 1 WHERE time(time) < '$temp'");
Ten eerste, time(date()) hoort niet te kunnen want time() neemt helemaal geen arguments en returnt de huidige tijd. time() reference

Ten tweede, time(time)? Er is in mysql ook geen functie die time() heet.
date and time functions
Maar hij wil het gewoon niet uitvoeren? De status played=0 --> played=1 wordt niet uitgevoerd, ook al zitten we 1 uur laten dan de geplande clanwar?
Ik zou het zo doen:
code:
1
$sql = "UPDATE wars SET played = 1 WHERE DATE_ADD(time, INTERVAL 1 HOUR) < NOW()"

Niet getest, maar zoiets zou moeten werken.

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


Verwijderd

of iets in deze richting:
PHP:
1
2
3
4
<?
$time = time() - 3600;
mysql_query("UPDATE wars SET played = 1 WHERE time < '$time'");
?>

ook untested

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zondag 24 februari 2002 11:44 schreef DiEana het volgende:
Hoi allemaal,
Daarom, om de "1 uur vergelijking" (goh, wat een woord :7) te kunnen maken, zet ik zowel de huidige tijd, als de dbase tijd in unix tijd om zo gemakkelijk te kunnen vergelijken: -1 uur = -3600 seconden.
Dat is helemaal niet nodig als je functies als now, date_sub/date_add en interval gebruikt.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Date() bestaat ook binnen MySQL.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

Topicstarter
Ok, bedankt allemaal, ik test het morgen avond uit!

Die time(argumenten).. was idd niet zo mooi :)
Pagina: 1