Komende week uitlezen uit db

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Davy Jansen

Davy Jansen

18/03/2007 11:01:00
Quote Anchor link
Hallo allemaal,

Ik wil van de komende week de vrijdag en zaterdag uitlezen. En weergeven.
Zover ben ik, dit werkt ook, maar nu moet ik alleen de vrijdag en zaterdag eruit filteren?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$kalender
= mysql_query("
SELECT * ,
 DATE_FORMAT(datum, '%d-%m-%Y') AS dedatum
WHERE
  datum >= NOW() AND
  datum <= NOW() + INTERVAL 7 DAY
ORDER BY
  titel ASC
"
) or die (mysql_error());
?>


Kan dit? En zo ja, heeft iemand enig idee, hoe ik dit kan oplossen?
Gewijzigd op 01/01/1970 01:00:00 door Davy Jansen
 
PHP hulp

PHP hulp

22/12/2024 04:52:44
 
RT

RT

18/03/2007 11:25:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$kalender
= mysql_query("
SELECT * ,
 DATE_FORMAT(datum, '%d-%m-%Y') AS dedatum
WHERE
  datum >= NOW() AND
  DAYNAME(datum) = 'Friday' AND
  DAYNAME(datum) = 'Saturday'
ORDER BY
  titel ASC
"
) or die (mysql_error());
?>


Zoiets miss
Gewijzigd op 01/01/1970 01:00:00 door RT
 
Davy Jansen

Davy Jansen

18/03/2007 11:27:00
Quote Anchor link
Maar stel dat het nu vrijdag is, dan laat hij alleen
zaterdag en de vrijdag van de volgend week zien of niet?
 
RT

RT

18/03/2007 11:30:00
Quote Anchor link
Sorrie, niet goed gelezen, dus je wilt juist de vrijdag en zaterdag van de volgende week uitlezen, en als het nu vrijdag is, ook de zaterdag (morgen dus)?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$kalender
= mysql_query("
SELECT * ,
 DATE_FORMAT(datum, '%d-%m-%Y') AS dedatum
WHERE
  datum >= NOW() AND
  datum <= NOW() + INTERVAL 7 + 7 - DAYOFWEEK(NOW())  DAY AND
  DAYNAME(datum) = 'Friday' AND
  DAYNAME(datum) = 'Saturday'
ORDER BY
  titel ASC
"
) or die (mysql_error());
?>


Edit: zoiets?
Gewijzigd op 01/01/1970 01:00:00 door RT
 
Davy Jansen

Davy Jansen

18/03/2007 13:25:00
Quote Anchor link
Nee, hij leest nu niks uit..
Ik heb datums erin staan van deze vrijdag en zaterdag, en van volgende week vrijdag en zaterdag. En hij leest ze alle 4 niet uit?

Ik had ook al geprobeer dit:
DAYNAME(datum) = 'Friday' AND
DAYNAME(datum) = 'Saturday'

te veranderen in:
DAYNAME(datum) = 'Friday' OR
DAYNAME(datum) = 'Saturday'

omdat je niet verplicht 2 dingen moet uitlezen, want het kan voorkomen dat op 1 datum geen agenda punt staat ingevuld. Maar dat werkte ook niet.

Iemand nog een idee?
 
Davy Jansen

Davy Jansen

18/03/2007 13:33:00
Quote Anchor link
@RT, je bovenste werkt wel, met dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT * ,
 DATE_FORMAT(datum, '%d-%m-%Y') AS dedatum
WHERE
  datum >= NOW() AND
  DAYNAME(datum) = 'Friday' AND
  DAYNAME(datum) = 'Saturday'


Maar dan laat hij van alle weken zien, en niet alleen de vrijdag en zaterdag van deze week en van volgende week?

Als je hier ook nog een oplossing voor hebt, zou het helemaal perfect zijn?
Alvast super bedankt.
 
Davy Jansen

Davy Jansen

18/03/2007 14:31:00
Quote Anchor link
@iedereen het probleem is opgelost :)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
 $kalender
= mysql_query("
 SELECT * , DATE_FORMAT(datum, '%d-%m-%Y') AS dedatum FROM agendaniki
 WHERE datum <= DATE_ADD(NOW(), INTERVAL 14 DAY) AND DAYOFWEEK(datum) IN (6,7)
 ORDER BY datum ASC"
) or die (mysql_error());
?>


ipv van DAYNAME, kan iik ook gebruik maken van DAYOFWEEK.
En door INTERVAL op 14 te zetten, kan ik de vrijdagen en zaterdagen van deze week en van de volgende week opvragen.

Bedankt voor jullie hulp.
-Chupskie
 
Davy Jansen

Davy Jansen

18/03/2007 16:40:00
Quote Anchor link
Stel dat ik de agenda van deze week wil, dan doe ik dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE datum <= DATE_ADD(NOW(), INTERVAL 7 DAY) AND DAYOFWEEK(datum) IN (6,7)

Als ik de agenda wil van de deze week EN volgende week, doe ik dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE datum <= DATE_ADD(NOW(), INTERVAL 14 DAY) AND DAYOFWEEK(datum) IN (6,7)

Maar als ik de agenda wil van volgend week loop ik vast bij dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE datum <= NOW() + 7 + INTERVAL 14 DAY AND DAYOFWEEK(datum) IN (6,7)


Hoe krijg ik het nou zo, dat ik de agenda krijg van alleen volgende week.
Het zou toch zoiets moeten, maar ik kom er niet uit?

Alvast bedankt
-Chupskie
 
RT

RT

18/03/2007 17:02:00
Quote Anchor link
In mijn scriptje probeerde ik dit te verhelpen. Alleen ken ik de juiste syntax niet. Even de site van mysql raadplegen. Wat je moet doen is het aantal dagen die in deze week al voorbij zijn tellen, dit aftrekken van 7 en de uitkomst weer optellen bij 7. Dus stel je zit nu in week 1 en het is donderdag, dan zijn er : zo, ma, di, wo, do = 5 dagen verstreken in deze week. Dus er zijn nog 7 - 5 = 2 dagen over. Dit tel je op bij 7 en je krijgt 9 dagen. Je krijgt dus vrijdag, zaterdag, zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag. Maar omdat je aangeeft in je query dat je alleen vrijdagen en zaterdagen wilt hebben krijg je natuurlijk alleen vrijdag, vrijdag, zaterdag, zaterdag terug.

//Edit:
Als je deze regel vertaald naar de goede syntax, is het probleem opgelost:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
datum <= NOW() + INTERVAL 7 + 7 - DAYOFWEEK(NOW())  DAY
Gewijzigd op 01/01/1970 01:00:00 door RT
 
Davy Jansen

Davy Jansen

18/03/2007 17:25:00
Quote Anchor link
Ik had de site van mysql aan door gespeurd. Daar staat zat op over DATE_ADD, en over INTERVAL, maar niet over de situatie waarin ik zit.

Met jou code:
WHERE datum <= datum <= NOW() + INTERVAL 7 + 7 - DAYOFWEEK(NOW()) DAY AND DAYOFWEEK(datum) IN (6,7)

krijg ik hetzelfde resultaat (alles van de komende 2weken)
Als dat ik mijn code laat staan:
WHERE datum <= DATE_ADD(NOW() + 7, INTERVAL 14 DAY) AND DAYOFWEEK(datum) IN (6,7)

Ik kom er maar niet uit. Logisch gezien, zou je toch alleen een week (7dagen) moeten optellen bij NOW, en daarna gewoon normaal de interval van 7 dagen.
Dan wordt het dus DATE_ADD(25-03-2007, INTERVAL 7 DAY) AND

Lijkt me dat dat wel moet werken, maar dat doet het ook niet?
Iemand enig idee?
 
RT

RT

18/03/2007 18:14:00
Quote Anchor link
Interval 14 kun je niet zomaar laten staan, namelijk als je dit op een vrijdag bv opvraagt, krijg je dus 3 vrijdagen terug en 2 zaterdagen. Daarom moet je je aanpassen aan de dag van de week. Uiteraard geeft mijn code nu hetzelfde resultaat als jouw code, maar dat is lang niet altijd het geval.
 
Davy Jansen

Davy Jansen

18/03/2007 18:56:00
Quote Anchor link
Ah okee, dat klinkt heel duidelijk ja.. dat zal ik meteen aanpassen. :)
Alleen nu zit ik nog steeds met het volgende week uitlees probleem?
 
Jan Koehoorn

Jan Koehoorn

18/03/2007 19:02:00
Quote Anchor link
Beschrijf nu eens zo precies mogelijk welke dagen je nu eigenlijk wilt hebben?
 
Davy Jansen

Davy Jansen

18/03/2007 19:17:00
Quote Anchor link
Ik wil het eigenlijk zo hebben:

Deze week:
- Vrijdag 23 Maart 2007
- Zaterdag 24 Maart 2007

Volgende week:
- Vrijdag 30 Maart 2007
- Zaterdag 31 Maart 2007

De eerste week is al gelukt.
De tweede week, weergeeft alles, dus ook van de eerste week.

Ik hoop dat het zo duidelijker is?
-Chupskie
 
Jan Koehoorn

Jan Koehoorn

18/03/2007 19:18:00
Quote Anchor link
Dus de vrij- en zaterdagen die binnen de komende 14 dagen vallen?
 
Davy Jansen

Davy Jansen

18/03/2007 20:26:00
Quote Anchor link
ja, dat is helemaal correct.
 
RT

RT

19/03/2007 16:44:00
Quote Anchor link
Kun je niet de functie WEEKOFYEAR gebruiken?

vrij- en zaterdagen van deze week:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE WEEKOFYEAR(datum) = WEEKOFYEAR(NOW()) AND DAYOFWEEK(datum) IN (6,7)


Die van volgende week:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
WHERE WEEKOFYEAR(datum) = WEEKOFYEAR(NOW(), INTERVAL +1 WEEK) AND DAYOFWEEK(datum) IN (6,7)
Gewijzigd op 01/01/1970 01:00:00 door RT
 



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.