Gegevens sorteren op datum

Status
Niet open voor verdere reacties.

jesse123

Gebruiker
Lid geworden
29 aug 2012
Berichten
301
Beste,

Ik ben een klein agenda systeem aan het maken. Nu heb ik het probleem dat ik wil dat de datums op volgorde worden geplaatst en dat afspraken die voorbij zijn automatisch verwijderd worden.

De datums staan als volgt in de database:
dd-mm-yyyy
(21-10-2014)

Ik heb het volgende script:

PHP:
<?php
$con = mysqli_connect("localhost","root","usbw","agenda"); //gegevens usbwebserver
// Check connection
if (mysqli_connect_errno())
{
    die("Failed to connect to MySQL: " . mysqli_connect_error());
}

if (!$result = mysqli_query($con,"SELECT * FROM agenda"))
{
    die("Error: " . mysqli_error($con));
}
?>
<table border='1'>
<tr>
<th>Afspraak</th>
<th>Locatie</th>
<th>Datum</th>
<th>Tijd</th>
<th>Opties</th>
</tr>
<?php
while($row = mysqli_fetch_array($result))
{
?>
<tr>
<td><?php echo $row['afspraak']; ?></td>
<td><?php echo $row['locatie']; ?></td>
<td><?php echo $row['datum']; ?></td>
<td><?php echo $row['uur'] .":". $row['min']; ?></td>
</tr>
<?php
}
mysqli_close($con);
?>
</table>

Bovendien wil ik straks alles ook in een echo zetten op de website zelf, maar dat is iets wat later komt.
Dus ik wil de afspraken in volgorde op datum krijgen en dat de datums die voorbij zijn worden verwijderd.
 
Zet je datum-veld op type "DATE" of "TIMESTAMP", dan kun je het tenminste via een query oplossen :)

Dan hoef je alleen maar een WHERE toe te voegen of te filteren en kun je ORDER BY gebruiken voor de sortering.

Het format dat in zo'n veld moet is altijd YYYY-MM-DD, daar moet je dus rekening mee houden bij het opvragen. Die kun je bij het opvragen aanpassen door DATE_FORMAT te gebruiken, of via PHP de waarde in een DateTime object te stoppen en dan de format()-functie te gebruiken.

Tevens verplaatst naar MySQL omdat de vraag niet echt met PHP te maken heeft
 
Het sorteren is gelukt! Dankjewel!
Ik heb de volgende code gevonden om datums die voorbij zijn te verwijderen:
Code:
delete from agenda where datum < DATE_SUB(NOW() , INTERVAL 1 DAY)

Nu wil ik eigenlijk dat de database deze code iedere dag uitvoert. Ik vraag me een beetje af of dat nu het geval is. Ik begrijp niet helemaal het nu van "INTERVAL 1 DAY". En als dit niet betekend dat hij deze opdracht iedere dag uitvoert, hoe moet ik dat dan wel doen?
 
Je roept de functie DATE_SUB aan, die verwacht een begindatum en hetgeen hij er vanaf moet halen (INTERVAL).

In jouw geval is de INTERVAL dus 1 dag en wordt er van vandaag dus 1 dag afgehaald.

Als je iets elke dag uit wilt voeren zul je een cron job in moeten stellen met alleen deze taak.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan