Filteren op datum
Ik wil een agenda plaatsen, en met de berichten voor de komende week.
In de tabel staat de datum er zo in 23-11-2006
$sql = mysql_query("SELECT * FROM agenda WHERE program_id='$program_id' ");
Nu komen alle berichten erin, hoe kan ik dit zo maken dat alleen berichten voor de komende week erin staan?
Groetjes,
Tim
Quote:
Fout, 23-11-2006 is geen datum maar een string. Een datum sla je op in een DATE en deze eist het formaat yyyy-mm-dd, 2006-11-23 in dit geval.In de tabel staat de datum er zo in 23-11-2006
Oplossing: Aanpassen dus.
De functie WEEK() doet wonderen met vergelijkingen, zie hoofdstuk 12.5 van de MySQL-handleiding.
FROM agendaWHERE program_id='$program_id' and MONTH(datum) BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 7 DAY)");
en de datum is nu aangepast in date met yyyy-mm-dd
Geen errors maar ook geen records, wat is hier nu fout aan?
En wel je query netjes noteren, dat maakt de boel leesbaar:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
$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;
}
?>
$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.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Groetjes,
Tim