Tijd in een INT veld
Hoe zou ik dat moeten doen? =)
Deze wordt dan aangepast:
mysql_query("UPDATE `user` SET `tijd`=NOW() WHERE `user_id`='{$User->getUserId()}'");
Als ik het nu doe, vult hij alleen 2008 in. :)
Groetjes.
1) Kies de juiste datatypes voor de juiste soorten data. Dus een DATE, TIME of DATETIME wanneer je met datums en tijden aan het stoeien bent.
2) Backticks ` .... Schijten doe je op de pot, niet in je SQL.
3) {} horen niet thuis in SQL, weg er mee. Variabelen haal je buiten quotes.
4) Een query zet je eerst in een variabele en nooit direct in de functie die hem uitvoert. Dan kun je de query nog eens echoen wanneer je moet debuggen.
Dus dat is het probleem niet.
Hoe moet de code er volgens jou uitzien als hij zonder - - - : : in de db moet komen? :)
Dat is hoe de UPDATE-query eruit moet komen te zien om het record met id 345 van de huidige datumtijd te voorzien.
Jouw probleem wordt overigens veroorzaakt door het feit dat MySQL jouw data verknalt: "Oh, de datum met tijd '2008-11-16 16:41:34' past niet in een INT, laat ik de boel maar verneuken en alleen 2008 opslaan. Dat is vast wel goed"
Tja, MySQL... Er zijn mensen die dit normaal gedrag voor een database vinden. De sukkels.
Zonder {} werkte hij nl. niet.
Dan heb ik ook nog deze regel:
En dan krijg je een fout melding, dan een else en dan wat je krijgt als het goed gaat.
Zie jij misschien een fout / verbeterpunt?
Hij zet dus wel de data er gewoon in, maar het lukt hem niet om het getal erbij op te tellen en dan dat te gaan vergelijken met de tijd.
Al snap ik niet waarom je het zo doet. Zoals Frank uitlegt is een DATETIME veld vele malen beter.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$query = "
UPDATE
user
SET
tijd = NOW()
WHERE
user_id= '".$User->getUserId()."'
";
mysql_query($query); // foutafhandeling doe je elders?
?>
$query = "
UPDATE
user
SET
tijd = NOW()
WHERE
user_id= '".$User->getUserId()."'
";
mysql_query($query); // foutafhandeling doe je elders?
?>
Nu heb je geen smerige trukjes nodig om de boel werkend te krijgen: variabelen buiten quotes.
Wat de UPDATE-query met de vergelijking te maken heeft, is mij niet duidelijk. Veel vergelijkingen kun je gewoon in de database doen, daar staat de data tenslotte ook al.
In PHP kan het ook:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$oData = new DateTime($User->GetTijd());
$oData->modify('+1 hour'); // uurtje er bij tellen
$oNow = new DateTime();
if($oData < $oNow){
// doe iets
}
?>
$oData = new DateTime($User->GetTijd());
$oData->modify('+1 hour'); // uurtje er bij tellen
$oNow = new DateTime();
if($oData < $oNow){
// doe iets
}
?>
Niet getest...
Edit: @Jezpur: Nu help je iemand van de wal in de sloot... Blijf dan bij een INT, daar heb je nog meer aan dan een waardeloze string.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Chilion
Nouja x) Weer wat geleerd =)
Je hebt me trouwens wel superblij gemaakt Frank xD Dankjewel :P