Na veel geprobeer met unions en joins lukt het me echt niet om eruit te komen.
De bedoeling is om in de database het beveiligingslogboek te bekijken, en bij het ipadres dat op dat moment gebruikt wordt te bekijken hoeveel foutieve inlogpogingen er gedaan zijn de laatste 10 of 60 minuten en 6 en 24 uur.
Eerst had ik 4 query's, om per tijdshoeveelheid te meten, echter lijkt me dat dit simpeler kan.
Uiteindelijk kwam ik met zoiets:
<?php
$sql = 'SELECT COUNT(*) AS "aantal1" FROM beveiligingslogboek WHERE id>"'.$rij['id'].'" AND ipadres="'.ip().'" AND type="1" AND (melding="4" OR melding="5") AND tijd>="'.(time()-60*10).'" UNION SELECT COUNT(*) AS "aantal2" FROM beveiligingslogboek WHERE id>"'.$rij['id'].'" AND ipadres="'.ip().'" AND type="1" AND (melding="4" OR melding="5") AND tijd>="'.(time()-60*60).'" UNION SELECT COUNT(*) AS "aantal3" FROM beveiligingslogboek WHERE id>"'.$rij['id'].'" AND ipadres="'.ip().'" AND type="1" AND (melding="4" OR melding="5") AND tijd>="'.(time()-60*60*8).'" UNION SELECT COUNT(*) AS "aantal4" FROM beveiligingslogboek WHERE id>"'.$rij['id'].'" AND ipadres="'.ip().'" AND type="1" AND (melding="4" OR melding="5") AND tijd>="'.(time()-60*60*24).'"'
?>
Maar dit blijkt ook niet goed te werken.
Hoe kan ik ervoor zorgen dat ik na de query dus 4 waardes krijg, bijv. aantal1, aantal2, aantal3, aantal4 met daarin de hoeveelheid inlogpogingen met bijbehorende tijdseenheden?
Om het te versimpelen, mag het op basis van de volgende query gedaan worden:
SELECT COUNT(*) as 'aantal1' FROM logboek WHERE tijd>=w
SELECT COUNT(*) as 'aantal2' FROM logboek WHERE tijd>=x
SELECT COUNT(*) as 'aantal3' FROM logboek WHERE tijd>=y
SELECT COUNT(*) as 'aantal4' FROM logboek WHERE tijd>=z
1.109 views