Forum Moderators: coopster

Message Too Old, No Replies

Calender Query...

         

woldie

8:49 am on May 11, 2004 (gmt 0)

10+ Year Member



Hello,

I've got this calender where by when you click on a particular date it displays the daily stats for that day. However when you when goto the next month and click on a day to retrieve the stats it goes back to May.

I think the problem lies when it uses getdate(). I've tried passing some values but I can't figure it out how to get pass the getdate().

Hope this makes sense....

Here's the code:

// Check for a Month Change submission
if ($submit)
{
// Subtract one from the month for previous, add one for next
if ($submit == "Prev")
{
$month_now--;
}
else
{
$month_now++;
}

$date = getdate(mktime(0,0,0,$month_now,1,$year_now));

}
else
{
// I think this is where the problem may lie
$date = getdate();
}

$month_num = $date["mon"];
$month_name = $date["month"];
$year = $date["year"];
$date_today = getdate(mktime(0,0,0,$month_num,1,$year));
$first_week_day = $date_today["wday"];
$cont = true;
$today = 27;

while (($today <= 32) && ($cont))
{
$date_today = getdate(mktime(0,0,0,$month_num,$today,$year));
if ($date_today["mon"]!= $month_num)
{
$lastday = $today - 1;
$cont = false;
}
$today++;
}

<!-- START CALENDER -->
<form action="callback_cal.php" method="POST" name="calendar">
<input type="hidden" name="month_now" value=<? echo $month_num?>>
<input type="hidden" name="year_now" value=<? echo $year?>>
<table width="200">
<tr>
<td><input type="submit" name="submit" style="BACKGROUND-COLOR: #663399; color: #FFFFFF; font-weight: bold" value="Prev"></td>
<td align="right"><input type="submit" name="submit" style="BACKGROUND-COLOR: #663399; color: #FFFFFF; font-weight: bold"value="Next"></td>
</tr>
</table>
</form>

<table width="160" border="1" cellspacing=0 cellpadding=2>
<tr>
<td colspan="7"><? echo $month_name . " " . $year?></td>
</tr>
<tr>
<td>Su</td>
<td>M</td>
<td>T</td>
<td>W</td>
<td>Th</td>
<td>F</td>
<td>Sat</td>
</tr>
<?
// begin placement of days according to their beginning weekday
$day = 1;
$wday = $first_week_day;
$firstweek = true;
while ($day <= $lastday)
{
if ($firstweek)
{
echo '<tr>';
for ($i=1; $i<=$first_week_day; $i++)
{
echo '<TD> </td>';
}
$firstweek = false;
}
if ($wday==0)
{
echo '<tr>';
}

// make each day linkable to the following result.php page
if (intval($month_num) < 10)
{
$new_month_num = "0$month_num";
}
elseif (intval($month_num) >= 10)
{
$new_month_num = $month_num;
}

if ( intval($day) < 10)
{
$new_day = "0$day";
}
elseif (intval($day) >= 10)
{
$new_day = $day;
}

$link_date = "$year-$new_month_num-$new_day";

// I've tried passing variables here
echo "<td><a href=callback_cal.php?eventid=$link_date&year=$year&month_name=$month_name&month_num=$month_num> $day </a></td>";

if ($wday==6)
{
echo '</tr>';
}

$wday++;
$wday = $wday % 7;
$day++;
}

?>
</table>
<!-- END CALENDER -->

<b>Result</b><br><br>
<?
if ($eventid!='')
{
$result=mysql_query("select count(*) as clicked
from tablename
where chat_date='$eventid'");

list($DBclicked)=mysql_fetch_row($result);

echo $DBclicked;
}
?>

Thanks for your help

:o)

woldie

2:15 pm on May 11, 2004 (gmt 0)

10+ Year Member



I'm still having problems with this, but just wondering because I am calling the same page which causes problems so, any ideas on this.

Thanks

coopster

5:44 pm on May 13, 2004 (gmt 0)

WebmasterWorld Administrator 10+ Year Member



The reason this is happening is that getdate() [php.net] will return the current local time if no timestamp parameter is given. You are going back into your code and assigning the current date to your variable without first checking to see if there has been a date passed in via the $_GET query string from your hyperlinks in the table.

woldie

7:53 am on May 14, 2004 (gmt 0)

10+ Year Member



Coopster,

I've actually cracked the problem around that, yes you are right in what you are saying, but I've created an iframe within the page and it works well. Not SEO friendly but I'm using it for stats so I can handle that.