database output van volgende week

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gijs

gijs

09/06/2009 17:20:00
Quote Anchor link
Hallo,

Ik heb de onderstaande query. Graag zou ik met deze query alles uit de database halen van volgende week.

Dus dat hij alles menu's van maandag tot en met vrijdag er uit haald. en volgende week dus weer het zelfde grapje voor de week er op.

Hoop dat iemand kan helpen.

Groeten,

Gijs

$sql="select datum as xxx,
DAYOFWEEK(datum) as dag,
date_format(datum,'%e') as toondatum,
date_format(datum,'%m') as toonmaand,
voorg.omschrijving,
hoofdg.omschrijving,
nag.omschrijving,
voorg.plaatje,
hoofdg.plaatje,
nag.plaatje
from Dagmenu dm,
Gerecht as voorg,
Gerecht as hoofdg,
Gerecht as nag
where datum > date_sub(now(),interval 1 day)
and ((voorg.id=dm.voorgerecht_id
and hoofdg.id=dm.hoofdgerecht_id
and nag.id=dm.nagerecht_id )
or (voorg.id=dm.overig_id
and hoofdg.id=dm.overig_id
and nag.id=dm.overig_id ))
order by datum asc limit 1";
 
PHP hulp

PHP hulp

21/11/2024 19:26:38
 
Emmanuel Delay

Emmanuel Delay

09/06/2009 20:01:00
Quote Anchor link
Hiermee kan je komende maandag berekenen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$next_week
= getNextWeek();
echo $next_week;
function
getNextWeek($datumstring="now")  // return: komende maandag.  Indien het nu maandag is, wordt de dag van vandaag teruggegeven.  Haal eventueel lijn 8 weg indien je in dat geval toch de maandag daarop wil.
{
  $m_next = new DateTime($datumstring);
  $dag = ($m_next->format('N') > 0 ? $m_next->format('N') - 1 : 6 );
  if ($dag > 0)
    $m_next->modify('+'. (7 - $dag) .' day');
  return $m_next->format('Y-m-d');
}

?>

meer info over de DateTime klasse: http://ditio.net/2008/06/03/php-datetime-and-datetimezone-tutorial/

Dan rest enkel nog $next_week in je sql te zetten.
Iets als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php "... WHERE datum >= ".  $next_week ." AND datum < ( ".  $next_week ." + INTERVAL 5 day ) ..." ?>
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 

09/06/2009 20:13:00
Quote Anchor link
Je hoeft dat toch niet om te zetten met php?
Je kunt het toch gewoon met de db doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT blaat
FROM tabel
WHERE tijd
BETWEEN NOW() AND NOW()+7DAY
 
Emmanuel Delay

Emmanuel Delay

09/06/2009 22:02:00
Quote Anchor link
Wel, het moet niet beginnen met deze dag, maar telkens met maandag.
 
Gijs

gijs

10/06/2009 10:33:00
Quote Anchor link
@ Emmanuel Delay,

Bedankt voor de reactie, ik ga het proberen.

Groeten,

Gijs
 
Jurgen assaasas

Jurgen assaasas

10/06/2009 10:39:00
Quote Anchor link
Ik zou persoonlijk voor Karl zijn oplossing pakken. Heb je meteen alles en hoef je niets met PHP te berekenen. De database is veel beter in dit soort berekeningen.
 
Gijs

gijs

10/06/2009 10:42:00
Quote Anchor link
Ik wil eigenlijk mensen deze week (maakt niet uit welke dag) de dagmenu's kunnen mailen van aankomende maandag tot en met vrijdag.

Dus onafhankelijk op welke datum we zitten wil ik de eerst volgende maandag tot vrijdag hebben. volgens mij werkt dat niet met BETWEEN NOW() AND NOW()+7DAY

Groeten,

Gijs
 
Jurgen assaasas

Jurgen assaasas

10/06/2009 10:48:00
Quote Anchor link
Tuurlijk wel. NOW kun je nog veranderen door CURRENT_DATE(), NOW() geeft de exacte tijd aan. dus BETWEEN CURRENT_DATE() AND CURRENT_DATE()+ 7 DAY
 
Gijs

gijs

10/06/2009 10:51:00
Quote Anchor link
wellicht snap ik het niet. Maar dan pakt hij toch nog steeds vandaag tot vandaag plus 7 dagen?
 
Gijs

gijs

10/06/2009 11:37:00
Quote Anchor link
Emmanuel Delay schreef op 09.06.2009 20:01:
Hiermee kan je komende maandag berekenen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$next_week
= getNextWeek();
echo $next_week;
function
getNextWeek($datumstring="now")  // return: komende maandag.  Indien het nu maandag is, wordt de dag van vandaag teruggegeven.  Haal eventueel lijn 8 weg indien je in dat geval toch de maandag daarop wil.
{
  $m_next = new DateTime($datumstring);
  $dag = ($m_next->format('N') > 0 ? $m_next->format('N') - 1 : 6 );
  if ($dag > 0)
    $m_next->modify('+'. (7 - $dag) .' day');
  return $m_next->format('Y-m-d');
}

?>

meer info over de DateTime klasse: http://ditio.net/2008/06/03/php-datetime-and-datetimezone-tutorial/

Dan rest enkel nog $next_week in je sql te zetten.
Iets als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php "... WHERE datum >= ".  $next_week ." AND datum < ( ".  $next_week ." + INTERVAL 5 day ) ..." ?>


Hallo,

Ik loop bij regel 2 al vast. $next_week = getNextWeek();
Ben helaas niet goed genoeg in php om te snappen waarom het script niet door loopt. Zou je kunnen helpen?

Groeten,

Gijs

Gelieve Niet Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door gijs
 
Jurgen assaasas

Jurgen assaasas

11/06/2009 10:13:00
Quote Anchor link
Gebruik gewoon de methode die ik je gaf. Dan hoef je helemaal geen ingewikkelde PHP functies te schrijven. Heb je meteen het resultaat wat je wil.

Een tip: voer hem eerst in PHPmyAdmin uit (als je dat gebruikt) dan kun je zien of de query werkt.
 
Hipska BE

Hipska BE

11/06/2009 11:19:00
Quote Anchor link
Ok, ik heb voor je even opgezocht op http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_week

Dit zul je nodig hebben:
SELECT iets FROM tabel WHERE WEEK(dag) = WEEK(CURRENT_DATE())+1

Deze toont altijd alle rijen van de volgende week.
 
Joren de Wit

Joren de Wit

11/06/2009 11:23:00
Quote Anchor link
Het is waarschijnlijk verstandig om in die query ook een jaartal te specificeren omdat anders ook records uit voorgaande en komende jaren met dat betreffende weeknummer getoond zullen worden.

Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT iets
FROM tabel
WHERE WEEK(datum) = WEEK(CURRENT_DATE) + 1
AND YEAR(datum) = YEAR(CURRENT_DATE)
 
Gijs

gijs

26/06/2009 13:12:00
Quote Anchor link
Het is gelukt, thanks voor de hulp. Groeten,

gijs
 



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.