Datum zoeken adhv week of maand

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

DeZond

DeZond

29/10/2007 20:37:00
Quote Anchor link
Ik heb een select menu met daarin de verschillende mogelijkheden om een concertkalender te doorzoeken:
Mogelijke zoekopties
Deze week
Volgende week
Volgende 2 weken
Deze maand
Volgende maand
Volgende 2 maanden

Deze week / Deze maand / Volgende Week lukt al ! (zie onderstaande code)
Toch lukt "Volgende 2 weken" niet !

Iemand een idee waarom ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($_GET['t'] == '0') $query_rsConcert .= "AND WEEK(Datum) = WEEK(NOW()) "; //deze week
if($_GET['t'] == '3') $query_rsConcert .= "AND MONTH(Datum) = MONTH(NOW()) "; //deze maand
if($_GET['t'] == '1') $query_rsConcert .= "AND WEEK(Datum) = WEEK(NOW(),1) "; //volgende week
if($_GET['t'] == '2') $query_rsConcert .= "AND WEEK(Datum) = WEEK(NOW(),2) "; //volgende 2 weken
?>
Gewijzigd op 01/01/1970 01:00:00 door DeZond
 
PHP hulp

PHP hulp

18/05/2024 19:02:16
 
Jan Koehoorn

Jan Koehoorn

29/10/2007 20:43:00
Quote Anchor link
Dat tweede argument van de functie WEEK heeft een heel andere betekenis dan jij denkt.
Edit:
Tip: kijk eens naar de functie DATEDIFF
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Robert Deiman

Robert Deiman

29/10/2007 20:56:00
Quote Anchor link
Waarom datediff Jan? Is hier DATE_ADD? niet handiger?

Edit:

Laat maar, kan allebij, maar denk dat DATE_ADD wel iets handiger werken is hier. Welke is eigenlijk sneller?
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
DeZond

DeZond

30/10/2007 11:05:00
Quote Anchor link
Idd Jan; de functie WEEK klopt in dit gebruik niet helemaal. Bij de keuze "Deze Week" presenteerde hij niet de evenementen op zondag.
Dus daar moet ik vanaf stappen.

Ik heb zowel DATE_DIFF als DATE_ADD gegoogled tot en met; alle forums.
Heb dit hieronder gevonden, maar faalt steeds.
Vraag me af of je met deze functies wel een week of maand kan specifieren; of 7 dagen; 30 dagen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($_GET['t'] == '0') $query_rsConcert .= "AND Datum = DATE_ADD (NOW(), INTERVAL 1 WEEK)  "; //deze week
?>


of

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($_GET['t'] == '0') $query_rsConcert .= "AND DATE_ADD(`Datum`, INTERVAL 7 DAYS) > NOW(); //deze week
?>
 
Frank -

Frank -

30/10/2007 11:18:00
Quote Anchor link
Quote:
de functie WEEK klopt in dit gebruik niet helemaal. Bij de keuze "Deze Week" presenteerde hij niet de evenementen op zondag.
De eerste dag van de week is de zondag. Wanneer jij wilt kijken wat er van maandag t/m zondag allemaal te doen is, dan zul je dus de huidige week minus zondag + de volgende week minus alle_dagen_behalve_zondag moeten nemen.

En backtics ` in je query verbrand je even, die heb je alleen `nodig` om fouten te verbergen. Totdat je ze vergeet en jij jouw data kwijt raakt... Dan heb je een backup nodig ;)

Edit: Vergeet niet om naar de week-mode te kijken, dan kun je ook instellen dat maandag de eerste dag van de week is. Precies wat jij nodig hebt!
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
DeZond

DeZond

30/10/2007 13:56:00
Quote Anchor link
Van die WEEK-mode was ik al afgestapt, pgFrank.
Misschien is DATE_DIFF en DATE_ADD een betere oplossing, maar dat lukt me momenteel ook niet.

Weet eigenlijk niet meer in welke richting te zoeken.
Heeft er iemand een paar goede links of tips ?
 
Joren de Wit

Joren de Wit

30/10/2007 14:08:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
#Deze week
WHERE WEEK(datumveld) = WEEK(NOW())

#Volgende week (zo - za)
WHERE WEEK(datumveld) = WEEK(DATE_ADD(NOW(), INTERVAL 1 WEEK))

#Komende week (volgende 7 dagen)
WHERE datumveld BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 1 WEEK))

De link:
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

ps. Zelfde principe kun je natuurlijk toepassen voor de maanden...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
DeZond

DeZond

30/10/2007 14:27:00
Quote Anchor link
Dit had ik ook eens getest; alsook die pagina gelezen. Maar tevergeefs.
De echo van de query geeft dit weer:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE Datum BETWEEN NOW() AND DATE_ADD(NOW(),INTERVAL 1 WEEK)) ORDER BY Plaats ASC, Datum ASCYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WEEK)) ORDER BY Plaats ASC, Datum ASC' at line 2


Wat doe ik verkeerd ? Datum is opgeslagen als YYYY-DD-MM

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if($_GET['t'] == '1') $query_rsConcert .= "WEEK(Datum) = WEEK(DATE_ADD(NOW(),INTERVAL 1 WEEK)) ";
if($_GET['t'] == '2') $query_rsConcert .= "Datum BETWEEN NOW() AND DATE_ADD(NOW(),INTERVAL 1 WEEK))  ";
?>

EDIT: ik heb ook nog volgende instelling op pagina. Maar denk dat dit geen invloed heeft. Heb al eens weggedaan en probleem bleef.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
setlocale (LC_ALL, 'nld_nld');      
setlocale (LC_ALL, 'nl_NL');
?>



Zit dan nog met week tot zondag. Zou een instelling zijn; ik kan enkel het bericht vinden omtrent die ISO norm: %W

pgFrank schreef op 30.10.2007 11:18:
Quote:
Vergeet niet om naar de week-mode te kijken, dan kun je ook instellen dat maandag de eerste dag van de week is. Precies wat jij nodig hebt!
Gewijzigd op 01/01/1970 01:00:00 door DeZond
 
Joren de Wit

Joren de Wit

30/10/2007 14:49:00
Quote Anchor link
Wat is de complete query die je gebruikt hebt?
 
DeZond

DeZond

30/10/2007 14:53:00
Quote Anchor link
Hey Blanche, dit is de volledige echo van de query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT p.Plaats, c.IDArtiest, c.Datum, g.Genre, t.Taal, a.Naam, a.Myspace FROM tblPlaats AS p LEFT JOIN tblConcert AS c ON p.IDPlaats = c.IDPlaats LEFT JOIN tblArtiest AS a ON a.IDArtiest = c.IDArtiest LEFT JOIN tblGenre AS g ON g.IDGenre = a.IDGenre LEFT JOIN tblTaal AS t ON t.IDTaal = a.IDTaal WHERE WEEK(Datum) = WEEK(DATE_ADD(NOW(),INTERVAL 1 WEEK)) ORDER BY Plaats ASC, Datum ASC

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WEEK)) ORDER BY Plaats ASC, Datum ASC' at line 2
Edit:

Zo zie je ook de error die er achter staat.
Wordt zo al een stuk duidelijker.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door DeZond
 
Frank -

Frank -

30/10/2007 15:01:00
Quote Anchor link
Maak van 1 WEEK eens 7 DAY. De interval WEEK is pas sinds versie 5 beschikbaar.
 
Joren de Wit

Joren de Wit

30/10/2007 15:07:00
Quote Anchor link
Vreemd, het zou volgens mij gewoon moeten werken. Wat gebeurt er als je 'INTERVAL 1 WEEK' vervangt door 'INTERVAL 7 DAY'?
 
- SanThe -

- SanThe -

30/10/2007 15:11:00
Quote Anchor link
Blanche schreef op 30.10.2007 15:07:
Vreemd, het zou volgens mij gewoon moeten werken. Wat gebeurt er als je 'INTERVAL 1 WEEK' vervangt door 'INTERVAL 7 DAY'?

Lijkt mij hetzelfde. Alleen zoals pgFrank al zei is WEEK pas in versie 5 beschikbaar.
 
Frank -

Frank -

30/10/2007 15:12:00
Quote Anchor link
@Blanche: Uit de handleiding:
WEEK WEEKS 5.0.0

Ik vrees dat de TS nog met ouwe zooi zit opgescheept.
 
Joren de Wit

Joren de Wit

30/10/2007 15:14:00
Quote Anchor link
Hmm, dat zal het probleem zijn :S
 
DeZond

DeZond

30/10/2007 15:24:00
Quote Anchor link
Ouwe zooi !? Via m'n cpanel lees ik PHP version 5.2.3 ! Zijn ze mij in de zak aant zetten ? :-/
Merci; Het werkt nu zowel voor de weken als de maanden; ik zal de code hieronder plaatsen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if($_GET['t'] == '0') $query_rsConcert .= "WEEK(Datum) = WEEK(NOW()) ";
if($_GET['t'] == '3') $query_rsConcert .= "MONTH(Datum) = MONTH(NOW()) ";
if($_GET['t'] == '1') $query_rsConcert .= "WEEK(Datum) = WEEK(DATE_ADD(NOW(),INTERVAL 7 DAY)) ";
if($_GET['t'] == '2') $query_rsConcert .= "WEEK(Datum) = WEEK(DATE_ADD(NOW(),INTERVAL 14 DAY)) ";
if($_GET['t'] == '4') $query_rsConcert .= "MONTH(Datum) = MONTH(DATE_ADD(NOW(),INTERVAL 1 MONTH)) ";
if($_GET['t'] == '5') $query_rsConcert .= "MONTH(Datum) = MONTH(DATE_ADD(NOW(),INTERVAL 2 MONTH)) ";
?>


Natuurlijk zit ik nog met de kl*te-zondag. Alee; welke alien geeft zijn weekstart op een zondag. :-) . Dat ga ik zelf eens uitchecken: kvermoed dat het met DATE_FORMAT moet lukken. Hoop ik :-)
 
- SanThe -

- SanThe -

30/10/2007 15:27:00
Quote Anchor link
DeZond schreef op 30.10.2007 15:24:
Ouwe zooi !? Via m'n cpanel lees ik PHP version 5.2.3 !

En MySQL?
 
DeZond

DeZond

30/10/2007 15:30:00
Quote Anchor link
Kieken dat ik ben ! Natuurlijk zien bij SQL = 4.1.22-standard-log.
Idd Ouwe zooi from Belgium :-)
 
Frank -

Frank -

30/10/2007 15:32:00
Quote Anchor link
Wat snap je niet aan de functie WEEK() ? Je kunt met de mode opgeven wanneer de week moet beginnnen, op een zondag of een maandag en wanneer in januari week 1 begint. Ga nu eens met de voorbeeldjes klooien, met een kalender bij de hand.

DATE_FORMAT gaat je daarbij echt niet helpen, dat gaat alleen over opmaak.
 
DeZond

DeZond

30/10/2007 16:17:00
Quote Anchor link
Ok, snappie. Ik heb mode 5 genomen.
5 Monday 0-53 with a Monday in this year.
Bedankt voor jullie hulp !
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.