MONTH(datum) levert een getal op 1 t/m 12. Hoe wil je dit nu tussen NOW() en NOW() + 7 dagen gaan zetten? De functie MONTH() lijkt mij niet op zijn plaats, gewoon de kolom datum noemen lijkt mij voldoende.
En wel je query netjes noteren, dat maakt de boel leesbaar:
<?
$query = "
SELECT
*
FROM
agenda
WHERE
program_id = '".$program_id."'
AND
datum BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 7 DAY)
";
$result = mysql_query($query);
if($result){ // query gelukt
// doe iets met het resultaat
$count = mysql_num_rows($result);
echo 'Er zijn '.$count.' records geselecteerd.';
// rest van je script
}
else { // query mislukt
echo 'Mislukt vanwege de volgende fout: '.mysql_error().$query;
}
?>
I.p.v. * kun je beter de kolomnamen benoemen die je nodig hebt. Dat is vele malen duidelijker en voorkomt dus weer bugs. Net zoals dat je een query eerst in een variabele zet en controleert of de query wel is gelukt.
$sql was trouwens een naam die nergens op sloeg, er stond namelijk helemaal geen SQL in. Daar heb ik maar $result van gemaakt, het gaat om een result.