database output van volgende week
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";
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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');
}
?>
$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)
1
<?php "... WHERE datum >= ". $next_week ." AND datum < ( ". $next_week ." + INTERVAL 5 day ) ..." ?>
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
Je kunt het toch gewoon met de db doen:
Wel, het moet niet beginnen met deze dag, maar telkens met maandag.
Bedankt voor de reactie, ik ga het proberen.
Groeten,
Gijs
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.
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
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
wellicht snap ik het niet. Maar dan pakt hij toch nog steeds vandaag tot vandaag plus 7 dagen?
Emmanuel Delay schreef op 09.06.2009 20:01:
Hiermee kan je komende maandag berekenen
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)
1
2
3
4
5
6
7
8
9
10
11
12
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');
}
?>
$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
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::
Gewijzigd op 01/01/1970 01:00:00 door gijs
Een tip: voer hem eerst in PHPmyAdmin uit (als je dat gebruikt) dan kun je zien of de query werkt.
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.
Ok, ik heb voor je even opgezocht op 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.
Dus:
gijs