[PHP/SQL] Evenementen in agenda een paar dagen vooruit tonen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • KeaveXL
  • Registratie: Oktober 2004
  • Laatst online: 03-04 20:39
Hoi,

Ik ben bezig met het schrijven van een agenda functie in php met een mysql database.

Nu heb ik de agenda werkend gekregen zodat wanneer de startdatum van een agenda punt gelijk aan de huidige datum is deze op de website getoont wordt en wanneer er een einddatum is het agenda punt weer verdwijnt als deze gelijk is aan de huidige datum.

Nu wil ik hem zo maken dat je al van te voren kunt zien wanneer er een agenda punt op komst is, en wat helemaal mooi zou zijn dat je zelf kan bepalen hoeveel dagen of weken deze van te voren getoont zal worden.

Dit is mijn huidige query:

code:
1
2
3
4
$sql="SELECT DATE_FORMAT(startdatum , '%d' ) dag , DATE_FORMAT(startdatum, '%M') maand, DATE_FORMAT(startdatum, '%Y') jaar, titel, nieuwslink FROM agenda WHERE CURRENT_DATE BETWEEN  startdatum  AND einddatum ORDER BY startdatum ASC Limit 5";
$resultaat=mysql_query($sql);

while ($rij=mysql_fetch_array($resultaat)){


Nu heb ik zelf al wat zoek werk gedaan maar ik werd hier niet veel wijzer van, hoppelijk kan iemand mij helpen.

BVD.

Edit: oops, titel verkeerd :X

PSN: KeaveXL


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 12:45

MueR

Admin Tweakers Discord

is niet lief

Deze query zal volgens mij niet gaan werken. Ik weet niet of dat het probleem is, aangezien je niet aangeeft wat er precies niet lukt.
Je selecteerd geformatteerde velden, en plakt daar vervolgens de naam achter die je ze wilt geven. MySQL snapt dit bij mijn weten niet. Je zal iets moeten doen in de zin van:
SQL:
1
2
3
4
5
6
7
8
9
SELECT  DATE_FORMAT(startdatum , '%d' ) AS dag,
        DATE_FORMAT(startdatum, '%m') AS maand,
        DATE_FORMAT(startdatum, '%Y') AS jaar,
        titel,
        nieuwslink
FROM    agenda
WHERE   CURRENT_DATE() BETWEEN startdatum AND einddatum
ORDER   BY  startdatum  ASC
LIMIT   5


Je eigen query:
SQL:
1
2
3
4
5
6
7
8
9
SELECT  DATE_FORMAT(startdatum , '%d' ) dag ,
        DATE_FORMAT(startdatum, '%M') maand,
        DATE_FORMAT(startdatum, '%Y') jaar, 
        titel, 
        nieuwslink 
FROM    agenda
WHERE   CURRENT_DATE BETWEEN  startdatum  AND einddatum
ORDER   BY  startdatum  ASC
Limit   5


Overigens weet je hopelijk dat %M in DATE_FORMAT() een maandnaam is, en geen numerieke waarde? Je zal, aangezien je met CURDATE() vergelijkt, de numerieke %m moeten pakken.

[ Voor 29% gewijzigd door MueR op 01-09-2007 18:43 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Walance
  • Registratie: September 2005
  • Laatst online: 11-09 15:12

Walance

Hm.. wat zal ik hier schrijven

om van te voren te zien wanneer er een agenda punt op komst is zou je eens zoiets kunnen proberen:
SQL:
1
DATE_ADD(startdatum, INTERVAL +1 DAY)

je kunt dit ook zelf laten bepalen door een variable te gebruiken zoals dit:
PHP:
1
$sSQL = "SELECT * FROM bla WHERE DATE_ADD(NOW(), INTERVAL +" . $iAantalDagen . " DAY)";

Volgens mij zou dit wel moeten werken zo (heb dit niet getest).

Acties:
  • 0 Henk 'm!

  • KeaveXL
  • Registratie: Oktober 2004
  • Laatst online: 03-04 20:39
MueR schreef op zaterdag 01 september 2007 @ 18:40:
Deze query zal volgens mij niet gaan werken. Ik weet niet of dat het probleem is, aangezien je niet aangeeft wat er precies niet lukt.
Je selecteerd geformatteerde velden, en plakt daar vervolgens de naam achter die je ze wilt geven. MySQL snapt dit bij mijn weten niet. Je zal iets moeten doen in de zin van:
SQL:
1
*knip


Je eigen query:
SQL:
1
*knip


Overigens weet je hopelijk dat %M in DATE_FORMAT() een maandnaam is, en geen numerieke waarde? Je zal, aangezien je met CURDATE() vergelijkt, de numerieke %m moeten pakken.
De query die ik had gemaakt werkt wel gewoon goed, de manier die jij aangeeft is alleen een stuk netter en ik zal deze ook aanpassen ivm compabiliteit etc.
Conquerer schreef op zaterdag 01 september 2007 @ 19:05:
om van te voren te zien wanneer er een agenda punt op komst is zou je eens zoiets kunnen proberen:
SQL:
1
DATE_ADD(startdatum, INTERVAL +1 DAY)

je kunt dit ook zelf laten bepalen door een variable te gebruiken zoals dit:
PHP:
1
*knip

Volgens mij zou dit wel moeten werken zo (heb dit niet getest).
Dit is hem, geweldig! Interval op -14 dagen gezet en alle agenda punten worden netjes 2 weken van te voren getoont.

Bedankt allebij :)

PSN: KeaveXL


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

.oisyn schreef op zondag 09 mei 2004 @ 23:40:
Mocht je het zelf nou zien dat je een topictitel vergeten bent, ga dan niet heel stom je bericht lopen editten met iets als

oh wat stom, ik ben de titel vergeten 8)7

Daar hebben wij namelijk weinig aan :P.
;)

Maak de volgende keer even een topic report met een suggestie voor een andere titel. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • KeaveXL
  • Registratie: Oktober 2004
  • Laatst online: 03-04 20:39
-NMe- schreef op zondag 02 september 2007 @ 15:00:
[...]

;)

Maak de volgende keer even een topic report met een suggestie voor een andere titel. :)
Sorry O+

Maar volgende keer zorg ik er wel voor dat ik de titel niet vergeet ;)

PSN: KeaveXL

Pagina: 1