Ik heb een CMS gemaakt waarin nieuwsberichten gezet kunnen worden.

Gegevens zijn o.a.

- Titel
- Tekst
- Status (Actief/Inactief)
- Publicatiedatum
- Publicatietijd

Nu wil ik op een pagina op de site het laatste nieuwsbericht tonen.

Check moet zijn dat het bericht:
- actief is (dus status='1')
- tijdnu >= publicatiedatum + publicatietijd
(de publicatiedatum en tijd moeten dus geweest zijn)

De gebruiker kan dus in het CMS aangeven of het bericht actief moet zijn en wanneer het gepubliceerd moet worden.

Over het laatste heb ik al een dag lopen kloten en ik kom er niet uit.

Wie kan mij helpen?
Het stellen van de vraag is in dit geval het geven van het antwoord. Alleen dat kleine duwtje nog.

Simpelste oplossing:

Maak van pub.datum en tijd een datetime veld.

je where close wordt dan ongeveer zo:

WHERE status = 1 AND publicatiedatetime >= NOW()

Complimenten voor je duidelijke vraag en eigen inbreng

SELECT * FROM tabel WHERE status = 1;

Volgens mij ben je er dan al...
MarDek schreef op 22.03.2006 12:26
Het stellen van de vraag is in dit geval het geven van het antwoord. Alleen dat kleine duwtje nog.

Simpelste oplossing:

Maak van pub.datum en tijd een datetime veld.

je where close wordt dan ongeveer zo:

WHERE status = 1 AND publicatiedatetime >= NOW()

Complimenten voor je duidelijke vraag en eigen inbreng



Bedankt voor het duwtje.

Heb alleen nog een zetje nodig:

hoe maak ik van de velden "publicatiedatum" en "publicatietijd" één veld "publicatiedatetime" meteen in de query, zodat ik daarop kan selecteren?

Want het zijn 2 aparte kolommen publicatiedatum" en "publicatietijd"
Arjan Kapteijn schreef op 22.03.2006 12:30
SELECT * FROM tabel WHERE status = 1;

Volgens mij ben je er dan al...


Volgens mij niet, want dan neemt ie ook alle berichten mee die nog geplaatst moeten worden in de toekomst. toch? Dus waarvan de publicatijdatum nog niet is geweest.
publicatiedatetime DATETIME NOT NULL default '0000-00-00 00:00:00',

SELECT * FROM tabel WHERE status = 1 AND publicatiedatetime >= NOW()

laatste bericht tonen doe je op de volgende manier:

SELECT * FROM tabel ORDER BY datum DESC
Nee, wat die berichtjes hebben toch geen status 1?

Maar als jij berichten wilt publiceren op een datum in de toekomst, en wel alvast een status 1 meegeven..

Dan word het iets als

SELECT * FROM tabel WHERE status = 1 AND datum <= NOW();

Dan haal je alle berichten op met de status 1, en een datum die minder of gelijk is aan 'nu'.
@arjan jij had toch les?

Tom wil ook op tijd selecteren zie eerste post vandaar de datetiime en NOW()
Ja, afgelopen, zomenteen weer terug :).
Erik schreef op 22.03.2006 12:48
publicatiedatetime DATETIME NOT NULL default '0000-00-00 00:00:00',

SELECT * FROM tabel WHERE status = 1 AND publicatiedatetime >= NOW()

laatste bericht tonen doe je op de volgende manier:

SELECT * FROM tabel ORDER BY datum DESC


Maar dan moet ik dus in de database een nieuwe kolom aanmaken?

Dat wil ik eigenlijk juist niet. Tenzij het niet anders kan.

Kan ik dus 2 kolommen (strings) samenvoegen in een query en dan vervolgens sorteren daarop?
Ik ga er eigenlijkvanuit dat je al een datum als datetime in je database heb staan. Anders zou je database opzet niet echt doordacht wezen...

Je wilt toch weten waneer een bericht geplaatst is :+.

Reageren