Ik ben bezig met het maken van een geautomatiseerde agenda, dat wil zeggen een agenda waar ik naar hartelust items aan kan toevoegen, maar waarvan maar een select gedeelte wordt weergegeven, namelijk de items vanaf de huidige datum tot 30 dagen vooruit.
Ik selecteer de data uit een mysql database. Ik heb de code er twee keer in staan, waarbij er bij de tweede loop (na de else) een extra selectie criterium geldt omdat er ook items zijn die alleen weergegeven mogen worden nadat er ingelogd is.
Het lukt me uitstekend om alleen items weer te geven die in de toekomst liggen. Bij het maken van een de variabele voor de datum 30 dagen in de toekomst gaat iets verkeerd.
De datum moet namelijk in de notatie: Y.m.d. staan.
Het optellen van 30 dagen gaat uitstekend wanneer ik onderstaande code gebruik:
<?php
$datum1=date("m.d.Y.", mktime(0, 0, 0, date("m") , date("d") +30, date("Y") ));
?>
Dit geeft als return mooi 15 mei (vandaag is 15 april)
Gebruik ik echter de notatie:
<?php
$datum1=date("Y.m.d.", mktime(0, 0, 0, date("Y"), date("m") , date("d") +30 ));
?>
Dan krijg ik als return: 1969-12-31
De code waarin ik het wil gebruiken:
<?php
$datum=(date("Y-m-d"));
$datum2=(date("Y-m-d", mktime(0, 0, 0, date("m") , date("d") +30, date("Y") )));
echo("<table border=\"1\" width=\"75\" cellspacing=\"0\">\n
<tr><td class=\"login\"><span class=\"t2\"> </span></td><td class=\"login\"><span class=\"t2\">Agenda</span></td></tr>\n");
if (isset($_SESSION["userid"]))
{
$agendaint=("SELECT * FROM pddb_agenda WHERE item_date >= '".$datum."' ORDER BY item_date");
$agendaresultint = mysql_query($agendaint) or die ("FOUT : " . mysql_error());
while (list($item_id, $item_date, $item_omschr, $item_link, $item_lid_id, $item_display) =
mysql_fetch_row($agendaresultint))
{
echo("<tr><td><span class=\"t2\">$item_date</span></td><td class=\"login\"><span class=\"t2\">$item_omschr</span></td></tr>\n");
}
}
else
{
$agendaext=("SELECT * FROM pddb_agenda WHERE item_date >= '".$datum."' AND item_display='2' ORDER BY item_date");
$agendaresultext = mysql_query($agendaext) or die ("FOUT : " . mysql_error());
while (list($item_id, $item_date, $item_omschr, $item_link, $item_lid_id, $item_display) =
mysql_fetch_row($agendaresultext))
{
echo("<tr><td><span class=\"t2\">$item_date</span></td><td class=\"login\"><span class=\"t2\">$item_omschr</span></td></tr>\n");
}
}
echo("</table>\n");
?>
Variabele $datum2 moet dan nog als extra argument worden toegevoegd aan beide selectiequery's
Iemand een idee hoe ik die 30 dagen er toch in de notatie Y.m.d. bij op kan tellen?
Ik wil niet met timestamps gaan werken omdat ik weet dat dat niet nodig is in dit geval.
Ik heb de hanleiding van SQL al grondig bestudeert. Heb het ook al geprobeert met de SQL functies CURDATE en CURRENT_DATE.
1.211 views