Filteren op datum

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tim

Tim

17/11/2006 18:42:00
Quote Anchor link
Hallo allemaal,

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
 
PHP hulp

PHP hulp

05/05/2024 18:54:58
 
Frank -

Frank -

17/11/2006 18:51:00
Quote Anchor link
Quote:
In de tabel staat de datum er zo in 23-11-2006
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.

Oplossing: Aanpassen dus.

De functie WEEK() doet wonderen met vergelijkingen, zie hoofdstuk 12.5 van de MySQL-handleiding.
 
Tim

Tim

17/11/2006 19:00:00
Quote Anchor link
Ik heb nu dit

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
 
Tim

Tim

17/11/2006 19:07:00
Quote Anchor link
Geen errors maar ook geen records, wat is hier nu fout aan?
 
Frank -

Frank -

17/11/2006 19:08:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

?>

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 -
 
Tim

Tim

17/11/2006 19:13:00
Quote Anchor link
Super! ik heb het allemaal aangepast.

Groetjes,
Tim
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.