Re: Weird problems passing variables
| From: | Richard Lynch | Date: | Sun, 19 Aug 2001 03:15:50 +0000 |
| Subject: | Re: Weird problems passing variables | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-63333@lists.php.net to get a copy of this message | ||
> I've got some strange problems whilst passing variables from forms into my
> php-script. When I use IE5 it works like a charm. Using Opera or IE4* the
> referred "action" script crashes due to memory restrictions on the server,
> in a function I use to get all the dates between two given dates,
presumably
> due to my while condition never turning false. This lead me to believe
that
> my variables were being gargled in some way as to make the parsing fail,
> this is however not the case as far as I can tell.
Are you printing out the data?...
> This is the function I use to retrieve all the dates inbetween $from and
$to
> inclusive (yes, it's butt ugly, I know, but I'm in kinda of a hurry, my
> deadline is approaching ;) :
>
> /*
> Function geDates(from, to) takes strings containing dates in the form
> "YYYY-MM-DD"
> and returns an array containing the dates between "from" and "to"
> inclusive
> */
>
> function getDates($from, $to) {
> (int) $year=substr($from,0,4)+0; /* Adding the zero is a kluge to force
> away leading zeros */
> (int) $month=substr($from,5,2)+0;
>
> (int) $day=substr($from,8,2)+0;
>
> $datearray[0]=$from;
> $current=$from;
> while($current!=$to) {
> $day=$day+1;
> if(checkdate($month, $day, $year)) {
> $current=zeroPadDate($year, $month, $day);
> $datearray[]=$current;
> } else {
> $month=$month+1;
> $day=1;
> if (checkdate($month, $day, $year)) {
> $current=zeroPadDate($year, $month, $day);
> $datearray[]=$current;
> } else {
> $year=$year+1;
> $month=1;
> $current=zeroPadDate($year, $month, $day);
> $datearray[]=$current;
> }
> }
>
> }
> return $datearray;
> }
Uhhh. You're working *WAY* too hard :-)
function getDates($from, $to){
# Change the 1's to 0's to turn off debugging output:
if (1){
echo "Computing Dates Between '$from' and '$to'<BR>\n";
}
$year = substr($from, 0, 4);
$month = substr($from, 5, 2);
$day = substr($from, 8, 2);
$start = mktime(0, 0, 0, $month, $day, $year);
$year = substr($to, 0, 4);
$month = substr($to, 5, 2);
$day = substr($to, 8, 2);
$end = mktime(0, 0, 0, $month, $day, $year);
# Change this to <= to get the $end date included:
while ($start < $end){
$datearray[] = date('Y-m-d', $start);
if (1){
echo $datearray[count($datearray)-1], "<BR>\n";
}
$day++;
# Let PHP worry about wrapping days and months and leap years
$start = mktime(0, 0, 0, $month, $day, $year);
}
return $datearray;
?>
> /* Accessory function to getDates above. */
>
> function zeroPadDate($year, $month, $day) {
> if ($month<10) $mstr="0$month";
> if ($day<10) $dstr="0$day";
> return "$year-$mstr-$dstr";
> }
You don't need this function. :-)
> What could it possibly be due to? Are there any differencies in the way
the
> above mentioned browsers pass the form variables?
>
> If you do find it in your heart to help me out with this one, please also
> reply by e-mail to webmaster@palladiumbio.com
>
> Thanks in advance,
>
> Claes Andersson
> Webmaster, www.palladiumbio.com
>
> PS Exchanging "GET" and "POST" in the referring form made no difference in
> the world DS
>
>
>
--
WARNING richard@zend.com address is an endangered species -- Use
ceo@l-i-e.com
Wanna help me out? Like Music? Buy a CD: http://l-i-e.com/artists.htm
Volunteer a little time: http://chatmusic.com/volunteer.htm