Hallo,

Voor een ban systeem gebruik ik dit:

<?php
$persoon = mysql_query("SELECT * FROM users WHERE DATE_SUB(NOW(), INTERVAL 10 MINUTE) >= tijd AND login='".$login."'");
$bestaat = mysql_num_rows($persoon);

if($bestaat >= 1)
{
mysql_query("UPDATE users SET ban=0 WHERE login='".$login."'");
}
?>

Als de ban ingaat word tijd op NOW() gezet, de ban duurt dus altijd 10 minuten. Nu wil ik kunnen weergeven hoelang je nog gebanned bent. Hoe doe ik dit? Ik snap namelijk nog steeds niet helemaal hoe je met tijden "rekent".
Je kunt beter in je database de tijd opslaan waarop de ban afloopt, anders moet je in al je queries namelijk de periode dat een ban duurt op gaan nemen.

De query die je in de huidige situatie kunt gebruiken:

SELECT TIMEDIFF(DATE_ADD(bantijd, INTERVAL 10 MINUTE), NOW()) AS verschil
FROM tabel


Als je de eindtijd van de ban opslaat wordt de query iets eenvoudiger:

SELECT TIMEDIFF(bantijd, NOW()) AS verschil
FROM tabel


Kijk anders ook eens in mijn pas nieuwe tutorial over datum- en tijdfunctie in MySQL voor meer voorbeelden.

Reageren