Hallo,

Ik ben een beginnende scripter, alhoewel ik er steeds meer van begrijp zijn er altijd vele vragen. Meestal kom ik er wel achter, een beetje zoeken op het web bijvoorbeeld.
Nu heb ik een database met een datum erinstaan, bijvoorbeeld 28-02-2009. Nou wil ik in een tabel een melding krijgen dat over 2 weken de 28e is. Dus wil ik op 14-02-2009 een melding ontvangen. Hoe kan ik dit het beste in PHP omschrijven. Wie kan we me hier mee helpen? Voor het geval er vragen over komen, ik gebruik voor datum in MySQL de DATE en NIET DE VARCHAR!

Alvast bedankt.
Als je het DATE type gebruikt hoe kom je dan aan 28-02-2009? Of is dat dmv de date_format().

Je kunt toch gewoon doen:

<?php

if(date('Y-m-d') == '2009-03-28')
{
// doe iets
}

?>

Wat is je doel overigens? Misschien kunnen we je dan verder helpen.
Ik ben bezig met een Domein Registratie Systeem. De klant voegt een domein in het systeem. Hier wordt automatisch een datum aan gekoppeld en ook de einddatum. Nou wil ik 2 weken voor die einddatum, een melding krijgen in een tabel dat deze over 2 weken afloopt.

Helaas is jou oplossing niet mogelijk omdat je een waarde geeft. Ik haal de gegevens op uit een database.
Paul IJmker schreef op 13.03.2009 21:43
Nu heb ik een database met een datum erinstaan, bijvoorbeeld 28-02-2009.

Sorry, dat is geen datum, dat is tekst. Een datum heeft een DATE of een DATETIME veld en heeft een format yyyy-mm-dd en niet anders.
Paul IJmker schreef op 13.03.2009 21:51
Ik ben bezig met een Domein Registratie Systeem. De klant voegt een domein in het systeem. Hier wordt automatisch een datum aan gekoppeld en ook de einddatum. Nou wil ik 2 weken voor die einddatum, een melding krijgen in een tabel dat deze over 2 weken afloopt.

Helaas is jou oplossing niet mogelijk omdat je een waarde geeft. Ik haal de gegevens op uit een database.


En wat is het probleem dan? Om er dan een variabele neer te zetten in plaats van statische tekst is toch niet zo moeilijk?

SELECT id, enmeer, nogmeer
FROM tabel
WHERE eind_datum < NOW() + INTERVAL 2 WEEK


Hiermee krijg je wat info uit de records die je een melding wil geven.
Let wel op dat je daarna deze records even 'wijzigt' zodat je weet dat ze al een melding hebben gehad.
Anders ontvangen ze iedere keer een melding.

Dit kan prima met een cronjob.
Je wilt vast en zeker jaarlijks worden geinformeerd en om dan niet keer op keer weer opnieuw een einddatum te moeten opgeven, is het handiger om op leeftijd te gaan selecteren. Zodra een record weer een (jaartje - 2 weken) ouder wordt, even een melding de deur uit.

In PostgreSQL zou je hiervoor de functie AGE() kunnen gebruiken, in MySQL mag je dit wiel zelf opnieuw gaan uitvinden. Hoewel, hier op PHPhulp komen dit soort vragen, en hun oplossingen, regelmatig voorbij. Google eventjes en het probleem is waarschijnlijk snel opgelost.
Misschien zijn PgSQL triggers iets voor?
Jurgen schreef op 14.03.2009 13:09
Misschien zijn PgSQL triggers iets voor?
Een trigger? Je hebt gewoon een SELECT-query nodig die kijkt of een record de leeftijd (heel jaar - 2 weken) heeft.

Triggers worden afgevuurd n.a.v. een INSERT, UPDATE of DELETE en dus niet op een SELECT.
Wat doe ik nou verkeerd in het onderstaande stuk code, ik krijg geen foutmelding maar ook geen waarde terwijl er wel 1 moet verschijnen waarvan de datum op morgen staat.


$domein_af = mysql_query("SELECT * FROM domeinnamen ORDER BY DatumTot") or die(mysql_error());
while($domein = mysql_fetch_object($domein_af)){
$ext = mysql_fetch_object(mysql_query("SELECT * FROM domeinextenties WHERE ID='". $domein->Domeinextentie ."'"));

$datum = mysql_query("SELECT * FROM domeinnamen WHERE DatumTot < NOW() + INTERVAL 2 WEEK");
if(mysql_num_rows($datum) == 0){


<tr>

<td>". $domein->Domeinnaam .".". $ext->Extentie ."</td>
<td>". $domein->DatumTot ."</td>


</tr>
Nog steeds werkt het niet goed. Heeft iemand enig idee wat ik verkeerd doe? Ik heb NOW() veranderd in CURDATE() aangezien ik in MySQL de DATE hanteer.

Reageren