datum periode in select menu
lau - 11/09/2008 00:43
HTML interesse
Ik ben dus bezig met een boekingformulier die moet lopen van 10 november tot 15 december. Een volledige pickup kalender is dus nutteloos omdat hij maar 1 maand als boekingssysteem wordt gebruikt. Dus ik probeer het via een select menu (dropdown) te doen waar de klant dus een datum kan uitpikken.
Het verloopt niet helemaal soepel, ik heb nu het volgende:
$dag_vd_week = date('w');
$maand_vh_jaar = date('n')-1;
$dagen = array('zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag');
$maanden = array('januarie', 'februarie', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
$dag = $dagen[$dag_vd_week];
$maand = $maanden[$maand_vh_jaar];
$start_datum = mktime(0, 0, 0, 11, 10, date('Y'));
$eind_datum = mktime(0, 0, 0, 12, 15, date('Y'));
while ($start_datum <= $eind_datum) {
// doe iets
}
$dag_vd_week = date ( 'w' ) ; $maand_vh_jaar = date ( 'n' ) - 1 ; $dagen = array ( 'zondag' , 'maandag' , 'dinsdag' , 'woensdag' , 'donderdag' , 'vrijdag' , 'zaterdag' ) ; $maanden = array ( 'januarie' , 'februarie' , 'maart' , 'april' , 'mei' , 'juni' , 'juli' , 'augustus' , 'september' , 'oktober' , 'november' , 'december' ) ; $dag = $dagen [ $dag_vd_week ] ;
$maand = $maanden [ $maand_vh_jaar ] ;
$start_datum = mktime ( 0 , 0 , 0 , 11 , 10 , date ( 'Y' ) ) ; while ( $start_datum <= $eind_datum ) {
// doe iets
}
Ik weet dus niet wat ik bij 'doe iets' moet invullen. Wie kan me hierbij helpen?
Select menu moet eruit zien als zoiets:
maandag 10 november 2008
dinsdag 11 november 2008
etc.
Uiteindelijk moeten de data's uit een database komen, want begindatum kan wel eens 1 of 2 dagen verschillen in verband met zondag/maandag issue
12 antwoorden
Gesponsorde links
Kr4nKz1n - 11/09/2008 08:32
Onbekend
Ik snap het nog niet helemaal, maar als ik jou was zou ik de maanden array zo doen:
$maanden = array(1 => 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
$maanden = array ( 1 => 'januari' , 'februari' , 'maart' , 'april' , 'mei' , 'juni' , 'juli' , 'augustus' , 'september' , 'oktober' , 'november' , 'december' ) ;
Nu wordt januari 1, februari 2 etc. etc.
Maar je wilt een lijstje met alle begindata`s hebben?
lau - 11/09/2008 10:11
HTML interesse
Jah.. ik wil een dropdown (select menu) met alle data's die ik in die periode wil laten weergeven, dus van 10 november t/m 15 december in een format als:
maandag 10 november 2008
dinsdag 11 november 2008
etc
(dus met dagaanduiding en volledige maand in het engels)
Kr4nKz1n - 11/09/2008 10:23
Onbekend
In het engels? Waarom heb je dan die array`s gemaakt en waarom zeg je dat maandag en dinsdag?
Maar je kunt gewoon dingen in de data zetten, met MkTime, en uitlezen.
Dat veld kun je dan door Date() halen.
En wat als er op dinsdag 11 november 2008 niks is? Moet die wel worden weergegeven?
lau - 11/09/2008 10:45 (laatste wijziging 11/09/2008 10:45)
HTML interesse
Ik bedoel in het Nederlands, sorry, het moet dus in het Nederlands.
Alle data moeten gewoon weergegeven worden vanaf die datum tot en met die andere datum.
maar krijg het dus niet voor mekaar met mktime();
$maanden = array(1 => 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
$start_datum = mktime(0, 0, 0, 11, 10, date('Y'));
$eind_datum = mktime(0, 0, 0, 12, 15, date('Y'));
while ($start_datum <= $eind_datum) {
echo '<option'.($pDatum == date('m-d-Y', $start_datum) ? ' selected="selected" ' : ' ').'value="'.date('m-d-Y', $start_datum).'">'.date('m-d-Y', $start_datum).'</option>';
$start_datum = $start_datum + (date('d')+1);
}
$maanden = array ( 1 => 'januari' , 'februari' , 'maart' , 'april' , 'mei' , 'juni' , 'juli' , 'augustus' , 'september' , 'oktober' , 'november' , 'december' ) ; $start_datum = mktime ( 0 , 0 , 0 , 11 , 10 , date ( 'Y' ) ) ; while ( $start_datum <= $eind_datum ) {
echo '<option' . ( $pDatum == date ( 'm-d-Y' , $start_datum ) ?
' selected="selected" ' : ' ' ) . 'value="' . date ( 'm-d-Y' , $start_datum ) . '">' . date ( 'm-d-Y' , $start_datum ) . '</option>' ; $start_datum = $start_datum + ( date ( 'd' ) + 1 ) ; }
Kr4nKz1n - 11/09/2008 10:59 (laatste wijziging 11/09/2008 11:00)
Onbekend
Wat krijg je nu dan met deze while-loop?
edit
For($iDate = $start; $iDate <= $eind; $iDate + 86400)
{
}
For ( $iDate = $start ; $iDate <= $eind ; $iDate + 86400 )
{
}
Probeer eens
lau - 11/09/2008 13:14
HTML interesse
Ik kirjg dan ontelbaar veel 1006038000. Klopt dus iets niet
$start_datum = mktime(0, 0, 0, 11, 18, date('Y'));
$eind_datum = mktime(0, 0, 0, 12, 05, date('Y'));
for ($iDate = $start_datum; $iDate <= $eind_datum; $iDate + 86400) { // 60*60*24 = 1 dag
echo $iDate.' - ';
}
$start_datum = mktime ( 0 , 0 , 0 , 11 , 18 , date ( 'Y' ) ) ; for ( $iDate = $start_datum ; $iDate <= $eind_datum ; $iDate + 86400 ) { // 60*60*24 = 1 dag
}
Kr4nKz1n - 11/09/2008 13:38
Onbekend
$iTotalDays = ($eind_datum - $start_datum) / 86400;
For($iDay = 0; $iDay <= $iTotalDays; $iDay++)
{
$iDate[$iDay] = $start_datum * ($iDay + 1);
echo Date("d-m-Y", $iDate[$iDay]);
}
$iTotalDays = ( $eind_datum - $start_datum ) / 86400 ;
For ( $iDay = 0 ; $iDay <= $iTotalDays ; $iDay ++ )
{
$iDate [ $iDay ] = $start_datum * ( $iDay + 1 ) ;
}
lau - 11/09/2008 19:14
HTML interesse
Nee dat werkt ook niet, ik krijg verschillende data, zoals:
18-11-2008
30-08-1911
17-07-1950
03-06-1989
20-04-2028
31-01-1931
etc
Allemaal rare data.
Kr4nKz1n - 11/09/2008 19:20 (laatste wijziging 11/09/2008 19:30)
Onbekend
Lol
Klopt ook niks van zie ik nu Proberen nog even wat
Ik probeer wel even wat thuis ;)
$iDate = $start_datum;
While($iDate <= $eind_datum)
{
echo Date("d-m-Y", $iDate).'<br />';
$iDate += 86400;
}
$iDate = $start_datum ;
While ( $iDate <= $eind_datum )
{
$iDate += 86400 ;
}
Werkt.
$iTotalDays = ($eind_datum - $start_datum) / 86400;
For($iDay = 0; $iDay <= $iTotalDays; $iDay++)
{
$iDate[$iDay] = $start_datum + ($iDay * 86400);
echo Date("d-m-Y", $iDate[$iDay]).'<br />';
}
$iTotalDays = ( $eind_datum - $start_datum ) / 86400 ;
For ( $iDay = 0 ; $iDay <= $iTotalDays ; $iDay ++ )
{
$iDate [ $iDay ] = $start_datum + ( $iDay * 86400 ) ;
echo Date ( "d-m-Y" , $iDate [ $iDay ] ) . '<br />' ; }
Die ook
lau - 11/09/2008 21:01 (laatste wijziging 11/09/2008 21:03)
HTML interesse
Hmm.. jah... welke is het handigst om te gebruiken?
Ik wil ze nu nog omzetten naar een dagaanduiding (maandag, dinsdag etc) en de maand omzetten naar nederlandse maanden (november, december). Hoe moet ik onderstaande toepassen in je eerste voorbeeld:
$dagen = array('zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag');
$maanden = array(1 => 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
$dagen = array ( 'zondag' , 'maandag' , 'dinsdag' , 'woensdag' , 'donderdag' , 'vrijdag' , 'zaterdag' ) ; $maanden = array ( 1 => 'januari' , 'februari' , 'maart' , 'april' , 'mei' , 'juni' , 'juli' , 'augustus' , 'september' , 'oktober' , 'november' , 'december' ) ;
Kr4nKz1n - 12/09/2008 10:45
Onbekend
function PerfectDate($iDate)
{
$aDays = array('zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag');
$aMonths = array(1 => 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
return $aDays[Date('w', $iDate)].' '.Date('d', $iDate).' '.$aMonths[Date('n', $iDate)].' '.Date('Y', $iDate);
}
$iStartDate = MkTime(0, 0, 0, 11, 10, Date('Y'));
$iEndDate = MkTime(0, 0, 0, 12, 15, Date('Y'));
$iTotalDays = ($iEndDate - $iStartDate) / 86400;
For($iDay = 0; $iDay <= $iTotalDays; $iDay++)
{
echo PerfectDate($iStartDate + ($iDay * 86400)).'<br />';
}
function PerfectDate( $iDate )
{
$aDays = array ( 'zondag' , 'maandag' , 'dinsdag' , 'woensdag' , 'donderdag' , 'vrijdag' , 'zaterdag' ) ; $aMonths = array ( 1 => 'januari' , 'februari' , 'maart' , 'april' , 'mei' , 'juni' , 'juli' , 'augustus' , 'september' , 'oktober' , 'november' , 'december' ) ;
return $aDays [ Date ( 'w' , $iDate ) ] . ' ' . Date ( 'd' , $iDate ) . ' ' . $aMonths [ Date ( 'n' , $iDate ) ] . ' ' . Date ( 'Y' , $iDate ) ; }
$iTotalDays = ( $iEndDate - $iStartDate ) / 86400 ;
For ( $iDay = 0 ; $iDay <= $iTotalDays ; $iDay ++ )
{
echo PerfectDate
( $iStartDate + ( $iDay * 86400 ) ) . '<br />' ; }
Of:
$aDays = array('zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag');
$aMonths = array(1 => 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
$iStartDate = MkTime(0, 0, 0, 11, 10, Date('Y'));
$iEndDate = MkTime(0, 0, 0, 12, 15, Date('Y'));
$iTotalDays = ($iEndDate - $iStartDate) / 86400;
For($iDay = 0; $iDay <= $iTotalDays; $iDay++)
{
echo $aDays[Date('w', $iStartDate + ($iDay * 86400))].' '.Date('d', $iStartDate + ($iDay * 86400)).' '.$aMonths[Date('n', $iStartDate + ($iDay * 86400))].' '.Date('Y', $iStartDate + ($iDay * 86400)).'<br />';
}
$aDays = array ( 'zondag' , 'maandag' , 'dinsdag' , 'woensdag' , 'donderdag' , 'vrijdag' , 'zaterdag' ) ; $aMonths = array ( 1 => 'januari' , 'februari' , 'maart' , 'april' , 'mei' , 'juni' , 'juli' , 'augustus' , 'september' , 'oktober' , 'november' , 'december' ) ;
$iTotalDays = ( $iEndDate - $iStartDate ) / 86400 ;
For ( $iDay = 0 ; $iDay <= $iTotalDays ; $iDay ++ )
{
echo $aDays [ Date ( 'w' , $iStartDate + ( $iDay * 86400 ) ) ] . ' ' . Date ( 'd' , $iStartDate + ( $iDay * 86400 ) ) . ' ' . $aMonths [ Date ( 'n' , $iStartDate + ( $iDay * 86400 ) ) ] . ' ' . Date ( 'Y' , $iStartDate + ( $iDay * 86400 ) ) . '<br />' ; }
En anders heb ik nog een functie voor je die nog wat makkelijker is ;)
Stuur me dan maar een PB`tje.
lau - 14/09/2008 00:09
HTML interesse
Hartelijk dank,
Ik probeer het volgende in te bouwen.
Als begintijd verstreken is door de huidige tijd, moet huidige tijd als begintijd worden aangenomen. Maar als eindtijd ook door huidige tijd is verstreken, moet het jaar van begintijd en eindtijd met 1 opgeteld, zodat mensen datum kunnen kiezen voor volgend jaar. Natuurlijk, moet als je zodra in 2009 zit, wel gewoon begintijd en eindtijd worden genomen:
$start_datum = mktime(0, 0, 0, 11, 15, date('Y'));
$eind_datum = mktime(0, 0, 0, 12, 05, date('Y'));
$start_datum = mktime ( 0 , 0 , 0 , 11 , 15 , date ( 'Y' ) ) ;
Gesponsorde links
Dit onderwerp is gesloten .