ik heb de volgende query, hiermee wil ik alles selecteren wat langer dan 5 uur in de db staat.
<?php
$query = "SELECT userID FROM berichtalerts WHERE DATE_ADD(datum,INTERVAL 5 HOUR)";
?>
Als ik me niet vergis zou deze alle resultaten moeten ophalen waarbij de datum 5 uur vooruit is, nu werkt dit niet, want hij geeft alle resultaten gewoon weer.
Daarnaast zoek ik nog een uitbreiding hierop die ervoor zorgt dat oudere resultaten dan 5 uur ook weergegeven worden.
toch nog een laatste dingetje
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
deze waarschuwing krijg ik zodra de query is uitgevoerd en er geen records meer uit de query komen rollen die de records selecteert die ouder dan 5 uur zijn.
ik heb er al een if statement met een mysql_num_rows voor geplaatst, maar dit helpt niet.
<?php
$query = "SELECT userID FROM berichtalerts WHERE HOUR(TIMEDIFF(NOW(), datum)) >= 5";
$result = mysql_query($query) or die (mysql_error());
if (mysql_num_rows($result) > 0)
{
while($row = mysql_fetch_array($result))
{
$query = "SELECT
id
FROM
berichten
WHERE
userID_ontv = '".$row['userID']."'
ORDER BY
datum DESC
LIMIT 5";
$result = mysql_query($query) or die (mysql_error());
$ids = array();
while($row2 = mysql_fetch_assoc($result))
{
$ids[] = $row2['id'];
}
$ids = implode(',', $ids);
$query = "DELETE FROM
berichten
WHERE
id NOT IN (".$ids.")";
$result = mysql_query($query) or die (mysql_error());
$query = "DELETE FROM berichtalerts WHERE userID = '".$row['userID']."'";
$result = mysql_query($query) or die (mysql_error());
}
}
?>
Dat komt hoogstwaarschijnlijk door hetzelfde puntje als dat ik vertelde over die $row. Je maakt namelijk binnen de while-loop weer een nieuwe $result aan en die wordt bij de eerst volgende loop in de mysql_fetch_array() gestopt.