Beginner question

Yes_sir21

Weaksauce
Joined
Dec 31, 2009
Messages
85
I am creating my first site and im new to programming so be nice :p. , I have a calender on my site which has next, previous month button. But when i press the press those buttons it takes me out of the my site and the next month appears alone on a blank site. How can i get this right ?

This is the code calendar code.
Code:
<?php


function generate_calendar($year, $month, $days = array(), $day_name_length = 3, $month_href = NULL, $first_day = 0, $pn = array()){
	$first_of_month = gmmktime(0,0,0,$month,1,$year);

	$day_names = array(); #generate all the day names according to the current locale
	for($n=0,$t=(3+$first_day)*86400; $n<7; $n++,$t+=86400) #January 4, 1970 was a Sunday
		$day_names[$n] = ucfirst(gmstrftime('%A',$t)); #%A means full textual day name

	list($month, $year, $month_name, $weekday) = explode(',',gmstrftime('%m,%Y,%B,%w',$first_of_month));
	$weekday = ($weekday + 7 - $first_day) % 7; #adjust for $first_day
	$title   = htmlentities(ucfirst($month_name)).'&nbsp;'.$year;  #note that some locales don't capitalize month and day names

	
	@list($p, $pl) = each($pn); @list($n, $nl) = each($pn); #previous and next links, if applicable
	if($p) $p = '<span class="calendar-prev">'.($pl ? '<a href="'.htmlspecialchars($pl).'">'.$p.'</a>' : $p).'</span>&nbsp;';
	if($n) $n = '&nbsp;<span class="calendar-next">'.($nl ? '<a href="'.htmlspecialchars($nl).'">'.$n.'</a>' : $n).'</span>';
	$calendar = '<table class="calendar">'."\n".
		'<caption class="calendar-month">'.$p.($month_href ? '<a href="'.htmlspecialchars($month_href).'">'.$title.'</a>' : $title).$n."</caption>\n<tr>";

	if($day_name_length){ #if the day names should be shown ($day_name_length > 0)
		#if day_name_length is >3, the full name of the day will be printed
		foreach($day_names as $d)
			$calendar .= '<th abbr="'.htmlentities($d).'">'.htmlentities($day_name_length < 4 ? substr($d,0,$day_name_length) : $d).'</th>';
		$calendar .= "</tr>\n<tr>";
	}

	if($weekday > 0) $calendar .= '<td colspan="'.$weekday.'">&nbsp;</td>'; #initial 'empty' days
	for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month; $day++,$weekday++){
		if($weekday == 7){
			$weekday   = 0; #start a new week
			$calendar .= "</tr>\n<tr>";
		}
		if(isset($days[$day]) and is_array($days[$day])){
			@list($link, $classes, $content) = $days[$day];
			if(is_null($content))  $content  = $day;
			$calendar .= '<td'.($classes ? ' class="'.htmlspecialchars($classes).'">' : '>').
				($link ? '<a href="'.htmlspecialchars($link).'">'.$content.'</a>' : $content).'</td>';
		}
		else $calendar .= "<td>$day</td>";
	}
	if($weekday != 7) $calendar .= '<td colspan="'.(7-$weekday).'">&nbsp;</td>'; #remaining "empty" days

	return $calendar."</tr>\n</table>\n";
}
$time = time();
$oldlocale = setlocale(LC_TIME, NULL); #save current locale 
    setlocale(LC_TIME, 'nl_NL'); #dutch 
   
    setlocale(LC_TIME, $oldlocale); 

$days = array( 
        2=>array('cal.php','linked-day'), 
        3=>array('/weblog/archive/2004/Jan/03','linked-day'), 
        8=>array('/weblog/archive/2004/Jan/08','linked-day'), 
        22=>array('/weblog/archive/2004/Jan/22','linked-day'),
    );  

    $pn = array('&laquo;'=>'juni.php', '&raquo;'=>'juni.php');
    
echo generate_calendar(date('Y', $time), 7,$days,3,null,0,$pn); 
?>

this links the button to the next or previous button, but how do can get it to stay on the site?
$pn = array('&laquo;'=>'june.php', '&raquo;'=>'may.php');

i might be wrong but i assume have to use GET function ?
 
I personally would handle the calendar via ajax, that would save you from having to do any page loads at all. If you're comfortable with javascript I'd look into it, its a fairly simple concept if you understand basic JS and backend programming.

A tutorial site I recommend for a lot of intro coding:

http://www.tizag.com/ajaxTutorial/

btw it taking you to a new page is an issue with the links you're using, I assume the link code is something like:

Code:
&lt;a href="calendar.php?month=next/july"&gt;Next&lt;/a&gt;
 
I personally would handle the calendar via ajax, that would save you from having to do any page loads at all. If you're comfortable with javascript I'd look into it, its a fairly simple concept if you understand basic JS and backend programming.

A tutorial site I recommend for a lot of intro coding:

http://www.tizag.com/ajaxTutorial/

btw it taking you to a new page is an issue with the links you're using, I assume the link code is something like:

Code:
&lt;a href="calendar.php?month=next/july"&gt;Next&lt;/a&gt;

ajax would be the best and safest bet, your next option would be using a jquery code which can be a little more unnerving, but the outcome would be pretty sleek looking.
 
Because your new, I'll also point out that calendar functionality has been implemented using many different frameworks/languages. For example, dojo, jquery, flex, and maybe even html5 (?).
 
Unfortunately i haven't used Ajax before and after google it does seems like a large subject.
Any tips on I how can implement ajax with that code ??
I need to solve this quickly, help is much appreciated.

http://www.tizag.com/ajaxTutorial/ wasnt that clear to me.
 
IBM has a very good introduction to AJAX:
http://www.ibm.com/developerworks/views/web/libraryview.jsp?search_by=Mastering+Ajax

It's in multiple parts, and it's a very long read. You could easily skip the later chapters, however, as they go off in tangents a bit.

tizag is pretty good, I learned a lot from that website.

I would suggest jQuery with some calendar plugin. You have to know some jQuery, but there are usually tutorials associated with each plugin, so it's not too bad.

Some good ones:
http://www.1stwebdesigner.com/freebies/jquery-calendar-plugins/
 
If you're writing AJAX for anything beyond personal enjoyment, I strongly recommend that you use JQuery or some other framework rather than low-level calls. There's enough difference in the javascript implementations of various browsers that, in order to get them all working, you'll have to write pages of code to test, identify & work with various browsers. Any worthwhile framework will take care of this for you and provides higher-level abstractions of the underlying AJAX functionality.

Also, don't take the "X" in AJAX too seriously - JSON and YAML are far more pleasant to deal with.
 
Back
Top