Connecting Tech Pros Worldwide Help | Site Map

select data in drop-down box

kirke
Guest
 
Posts: n/a
#1: Oct 19 '06
I have a two text box and one select box.

two text box will be filled with date values. (in the form of
dd-mm-year)
First text box is called "start date"
Second is "end date"

Thus, I want to put dates between "start date" and "end date" in select
box.

Is there any way to put automatically in option field?
My idea is, first calculate the date difference
and then, add date till startdate + difference.
Thx.

Rik
Guest
 
Posts: n/a
#2: Oct 19 '06

re: select data in drop-down box


kirke wrote:
Quote:
I have a two text box and one select box.
>
two text box will be filled with date values. (in the form of
dd-mm-year)
First text box is called "start date"
Second is "end date"
>
Thus, I want to put dates between "start date" and "end date" in
select box.
>
Is there any way to put automatically in option field?
My idea is, first calculate the date difference
and then, add date till startdate + difference.
It is possible with PHP when that 'start' date and the 'end' date are known
BEFORE the user requests that page. Simply generate all possible dates
between those two values, and commit them to select boxes. If they're not
known, or they cross month or year barriers, you'll have to rely on
javascript to limit the options (and make unlimited options available
without javascript, on a date outside the possibilities you will produce an
error on submitting).

Ofcourse, on submitting, whether javascript is enabled or not, you'll
always have to check start, interim, and end date on submitting to make
sure it's valid.

On HOW to make a date confirm by js, I'd suggest a trip to
comp.lang.javascript.

--
Grtz,

Rik Wasmus


kirke
Guest
 
Posts: n/a
#3: Oct 19 '06

re: select data in drop-down box


assume that I know the start and end date already.
Then How can I generate dates between two dates?


Rik wrote:
Quote:
kirke wrote:
Quote:
I have a two text box and one select box.

two text box will be filled with date values. (in the form of
dd-mm-year)
First text box is called "start date"
Second is "end date"

Thus, I want to put dates between "start date" and "end date" in
select box.

Is there any way to put automatically in option field?
My idea is, first calculate the date difference
and then, add date till startdate + difference.
>
It is possible with PHP when that 'start' date and the 'end' date are known
BEFORE the user requests that page. Simply generate all possible dates
between those two values, and commit them to select boxes. If they're not
known, or they cross month or year barriers, you'll have to rely on
javascript to limit the options (and make unlimited options available
without javascript, on a date outside the possibilities you will produce an
error on submitting).
>
Ofcourse, on submitting, whether javascript is enabled or not, you'll
always have to check start, interim, and end date on submitting to make
sure it's valid.
>
On HOW to make a date confirm by js, I'd suggest a trip to
comp.lang.javascript.
>
--
Grtz,
>
Rik Wasmus
Rik
Guest
 
Posts: n/a
#4: Oct 19 '06

re: select data in drop-down box


kirke wrote:
Quote:
assume that I know the start and end date already.
Then How can I generate dates between two dates?

Well, that should be easy, whipped together something for you (untested):

/* $start & $end = UNIX timestamps
$step = number of second between steps (60*60*24 for dates offcourse)
$format = returned format as in strftime()
$include_limits = boolean wether the start and end dates should be
included */

function generate_dates($start,$end,$step = 86400,$format =
'',$include_limits = false){
$start_i = intval($start);
$end_i = intval($end);
if($start_i!=$start || $end_i != $end){
trigger_error('No valid timestamps given.');
return false;
}
if($start_i $end_i){
trigger_error('Start date is later then End date.');
return false;
}
if(!is_int($step) || $step <= 0){
trigger_error('Step is either not an integer or zero or less.');
return false;
}
$return = array();
if($include_limits({
$return[] = $start;
}
$current = $start_i + $step;
while($current < $end_i){
$return[] = strftime($format,$current);
$current = ($current + $step);
}
if(end($return) < $end_i){
$return[] = $end;
}
return $return;
}

--
Rik Wasmus


Closed Thread