login  Naam:   Wachtwoord: 
Registreer je!
 Forum

datum periode in select menu

Offline lau - 11/09/2008 00:43
Avatar van lauHTML 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:
  1. $dag_vd_week = date('w');
  2. $maand_vh_jaar = date('n')-1;
  3. $dagen = array('zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag');
  4. $maanden = array('januarie', 'februarie', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
  5. $dag = $dagen[$dag_vd_week];
  6. $maand = $maanden[$maand_vh_jaar];
  7.  
  8. $start_datum = mktime(0, 0, 0, 11, 10, date('Y'));
  9. $eind_datum = mktime(0, 0, 0, 12, 15, date('Y'));
  10. while ($start_datum <= $eind_datum) {
  11. // doe iets
  12. }


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
Offline Kr4nKz1n - 11/09/2008 08:32
Avatar van Kr4nKz1n Onbekend Ik snap het nog niet helemaal, maar als ik jou was zou ik de maanden array zo doen:
  1. $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?
Offline lau - 11/09/2008 10:11
Avatar van lau 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)
Offline Kr4nKz1n - 11/09/2008 10:23
Avatar van Kr4nKz1n 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?
Offline lau - 11/09/2008 10:45 (laatste wijziging 11/09/2008 10:45)
Avatar van lau 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();
  1. $maanden = array(1 => 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
  2. $start_datum = mktime(0, 0, 0, 11, 10, date('Y'));
  3. $eind_datum = mktime(0, 0, 0, 12, 15, date('Y'));
  4. while ($start_datum <= $eind_datum) {
  5. 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>';
  6. $start_datum = $start_datum + (date('d')+1);
  7. }

Offline Kr4nKz1n - 11/09/2008 10:59 (laatste wijziging 11/09/2008 11:00)
Avatar van Kr4nKz1n Onbekend Wat krijg je nu dan met deze while-loop?

edit
  1. For($iDate = $start; $iDate <= $eind; $iDate + 86400)
  2. {
  3.  
  4. }


Probeer eens
Offline lau - 11/09/2008 13:14
Avatar van lau HTML interesse Ik kirjg dan ontelbaar veel 1006038000. Klopt dus iets niet
  1. $start_datum = mktime(0, 0, 0, 11, 18, date('Y'));
  2. $eind_datum = mktime(0, 0, 0, 12, 05, date('Y'));
  3. for ($iDate = $start_datum; $iDate <= $eind_datum; $iDate + 86400) { // 60*60*24 = 1 dag
  4. echo $iDate.' - ';
  5. }
Offline Kr4nKz1n - 11/09/2008 13:38
Avatar van Kr4nKz1n Onbekend
  1. $iTotalDays = ($eind_datum - $start_datum) / 86400;
  2. For($iDay = 0; $iDay <= $iTotalDays; $iDay++)
  3. {
  4. $iDate[$iDay] = $start_datum * ($iDay + 1);
  5. echo Date("d-m-Y", $iDate[$iDay]);
  6. }
Offline lau - 11/09/2008 19:14
Avatar van lau 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.
Offline Kr4nKz1n - 11/09/2008 19:20 (laatste wijziging 11/09/2008 19:30)
Avatar van Kr4nKz1n Onbekend Lol 

Klopt ook niks van zie ik nu Proberen nog even wat 

Ik probeer wel even wat thuis ;)


  1. $iDate = $start_datum;
  2. While($iDate <= $eind_datum)
  3. {
  4. echo Date("d-m-Y", $iDate).'<br />';
  5. $iDate += 86400;
  6. }


Werkt.

  1. $iTotalDays = ($eind_datum - $start_datum) / 86400;
  2.  
  3. For($iDay = 0; $iDay <= $iTotalDays; $iDay++)
  4. {
  5. $iDate[$iDay] = $start_datum + ($iDay * 86400);
  6. echo Date("d-m-Y", $iDate[$iDay]).'<br />';
  7. }

Die ook 
Offline lau - 11/09/2008 21:01 (laatste wijziging 11/09/2008 21:03)
Avatar van lau 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:
  1. $dagen = array('zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag');
  2. $maanden = array(1 => 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
Offline Kr4nKz1n - 12/09/2008 10:45
Avatar van Kr4nKz1n Onbekend
  1. function PerfectDate($iDate)
  2. {
  3. $aDays = array('zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag');
  4. $aMonths = array(1 => 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
  5.  
  6. return $aDays[Date('w', $iDate)].' '.Date('d', $iDate).' '.$aMonths[Date('n', $iDate)].' '.Date('Y', $iDate);
  7. }
  8.  
  9. $iStartDate = MkTime(0, 0, 0, 11, 10, Date('Y'));
  10. $iEndDate = MkTime(0, 0, 0, 12, 15, Date('Y'));
  11.  
  12. $iTotalDays = ($iEndDate - $iStartDate) / 86400;
  13.  
  14. For($iDay = 0; $iDay <= $iTotalDays; $iDay++)
  15. {
  16. echo PerfectDate($iStartDate + ($iDay * 86400)).'<br />';
  17. }


Of:
  1. $aDays = array('zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag');
  2. $aMonths = array(1 => 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
  3.  
  4. $iStartDate = MkTime(0, 0, 0, 11, 10, Date('Y'));
  5. $iEndDate = MkTime(0, 0, 0, 12, 15, Date('Y'));
  6.  
  7. $iTotalDays = ($iEndDate - $iStartDate) / 86400;
  8.  
  9. For($iDay = 0; $iDay <= $iTotalDays; $iDay++)
  10. {
  11. echo $aDays[Date('w', $iStartDate + ($iDay * 86400))].' '.Date('d', $iStartDate + ($iDay * 86400)).' '.$aMonths[Date('n', $iStartDate + ($iDay * 86400))].' '.Date('Y', $iStartDate + ($iDay * 86400)).'<br />';
  12. }


En anders heb ik nog een functie voor je die nog wat makkelijker is ;)

Stuur me dan maar een PB`tje.
Offline lau - 14/09/2008 00:09
Avatar van lau 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:
  1. $start_datum = mktime(0, 0, 0, 11, 15, date('Y'));
  2. $eind_datum = mktime(0, 0, 0, 12, 05, date('Y'));
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.31s