Ik probeer een functie in een script in te bouwen, die een bericht pas laat zien als de vooraf ingevoerde datum is bereikt. Ik heb een invoerveld die de datum alsvolgt weergeeft;
$date_format = 'H:i - d. m. Y';
Die schrijft netjes de gegevens naar de database. nu heb ik een invoervak die ik "embargo" noem, waarin de de datum komt (in hetzelfde formaat als hierboven) waarop het bericht pas zichtbaar mag worden. In de query vraag ik dus alle berichten op waarbij de 2e ingevoerde datum (het embargo) al voorbij is, zodat berichten die over een week pas mogen worden vertoont nog niet worden afgeroepen. Ik vergelijk hem met de dag van vandaag door dezelfde code te gebruiken als hoe hij de datum wegschrijft.Ik heb al van alles geprobeerd om het voor elkaar te krijgen, maar dichterbij als hieronder kom ik niet, en het werkt dus ook nog niet... ;-(
$query = mysql_query("SELECT * FROM $mysql_posts_table WHERE embargo <= 'H:i - d. m. Y' ORDER BY id DESC
LIMIT $posts_per_page OFFSET $offset");
Een datum / tijd zet je in de database, als type DATETIME, alleen dan kan je ook juiste vergelijkingen hiermee uitvoeren.
Voor een overzicht van alles wat je met DATETIME kunt kijk je hier. (ten minste als je MySQL gebruikt.)
Er zijn geen belangrijke gegevens, het is nog in de ontwerpfase. Ik ben alleen een werkend script aan het aanpassen.
De hulp-site van mysql staat wel erg vol info. Ik hoop dat ik het goeie er uit weet te halen...
Ja klopt, je kan het eens globaal door lezen en dan weet later waar je moet kijken als je iets nodig hebt. Je kan ook eerst bedenken wat je nodig hebt en het dan gaan zoeken.
Volgens je laatste bericht, de tutorial, wordt de datum verdeeld over meerdere kolommen. Is dat dus essentieel voor een vergelijking zoals je aangaf in je eerste reactie?
In de tutorial, wordt juist uitgelegd hoe je de datum die verdeelt is over meer velden omzet naar een datum veld van het type DATE. Maar in jou geval zou je het naar het type DATETIME moeten omzetten omdat jij ook de tijd gebruikt.
En ja, voor een vergelijking is het essentieel het juiste data type te kiezen.
Nee, dat zou ik juist afraden. Een datum sla je op in een DATE veld en een tijstip (datum + tijd) in een DATETIME veld. Alleen dan kun je de vele datum/tijd functies gebruiken die mysql je biedt.
Zie ook hoofdstuk 12.5 van de mysql handleiding voor deze functies.
Nee, invoegen in de database doe je in het formaat 'yyyy-mm-dd' eventueel met een tijdstip erachter. En uitlezen uit de database doe je met de functie DATE_FORMAT() van mysql:
SELECT
DATE_FORMAT(datum, '%d-%m-%Y') AS formatted_date
FROM
tabel