Ik heb een PHPmyAdmin MYSQL database aangemaakt met daarin speeldagen die benoemnd worden door DATETIME.

Nu Kan ik er vanalles mee doen echter ben ik opzoek naar een functie die dmv CURDATE de eerstvolgdende match opzoekt, met CURDATE zoekt hij echter alleen specifiek die datum en het kan dus zijn dat enkele dagen later of zelfs maanden de volgende match pas is.

Ik kan dit oplossen door in de DB aan te geven of de match gespeeld is en op die manier de eerstvolgende die niet gespeeld is te selecteren en LIMIT op 1 zetten echter wanneer ik dan door omstandigheden de DB niet update is het niet up-to-date.

De Functie INTERVAL trekt een X aantal dagen of maanden eraf maar kreeg ik ook niet zo ingesteld dat hijde eerstvolgende weergeeft.
SELECT * FROM tabel WHERE speeldag > now() LIMIT 0,1

Dit selecteerd de wedstrijd die het eerst komt na vandaag..
Hum hier had ik aan moeten denken...ik dacht dat groter dan kleiner dan vergelijkingen alleen mogelijk waren in PHP, anyway thx.

In case anyone wants to know, CURDATE() werkt ook :)
<?php

$query = "SELECT * FROM TABLE ORDER BY datum_kolom DESC LIMIT=1 WHERE datum_kolom < NOW()"
?>
@Jurgen: dit zal de vorige wedstrijd weergeven en niet de eerstvolgende. De ORDER BY is inderdaad verstandig, je weet immers niet op welke manier ze in de database ingevoerd zijn. Je moet dan echter wel ASC nemen, aangezien je de kleinste eerstvolgende datum wilt weten ;)


SELECT *
FROM tabel
WHERE datum > NOW()
ORDER BY datum ASC
LIMIT 1
Ok, 2 kleine foutjes. Maar het principe klopt.

Ik heb dit nl. ook voor een site gebruikt:

Projecten waarbij de de einddatum is verstreken worden daarbij niet weergegeven. Vervolgens worden deze automatisch in het archief opgenomen.
Waarom gebruiken jullie alle 3 NOW, is dit beter als CURDATE?
Je gebruikt DATETIME als kolom zei je, NOW geeft ook een datetime en CURDATE alleen de datum.. Ik zou overigens dan wel dit gebruiken:


SELECT *
FROM tabel
WHERE datum >= CURDATE()
ORDER BY datum ASC
LIMIT 1

Nu geeft die de wedstrijd ook nog weer als die vandaag gespeeld wordt, overigens heb ik nu wel curdate gebruikt, omdat die dan pas de dag Nadat de wedstrijd is gespeeld de volgende weergeeft.. Stel dat je op Zaterdag speelt, dan geeft die vanaf zondag de wedstrijd van volgende week weer.
CURDATE is idd enkel de datum(dag) ik kan me voorstellen dat bezoekers na een gespeelde wedstrijd thuiskomen en meteen willen kijken wanneer er weer wordt gespeeld
Klopt, als je met de datetime selecteerd, dan geeft die vanaf de 1e speelminuut van de wedstrijd de volgende wedstrijd weer.
Ja ik had het inderdaad gemerkt, misschien een Interval van 1 hour instellen zodat hij na de speeltijd weergeeft wanneer de volgende wedstrijd is ;)>

Bedank voor de verheldering

Reageren