Jump to content

Event Calendar script help requested


speedshrew

Recommended Posts

Hi guys and girls,

 

Am working on this tutorial for an events calendar, ajusting as I go for bugs etc, however, the last 4 echo statements are throwing up T-STRING errors and I am frankly stumped. Any help you can give would be much apprichated! Ive pasted the whole code so that if theres an error on another lne thats causing it.

<?php

/* Open up a connection to the mysql database on the same server as website */

$db_link = mysql_connect("localhost", "root", "") or die("Unable to connect to mysql database");

/* Select our database (there is more than one in my server) */

mysql_select_db("trains", $db_link);

/* draws a calendar */function draw_calendar($month,$year,$events = array()){

/* draw table */ $calendar = '<table cellpadding="0" cellspacing="0" class="calendar">';

/* table headings */ $headings = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');

$calendar.= '<tr class="calendar-row"><td class="calendar-day-head">'.implode('</td><td class="calendar-day-head">',$headings).'</td></tr>';

/* days and weeks vars now ... */ $running_day = date('w',mktime(0,0,0,$month,1,$year));

$days_in_month = date('t',mktime(0,0,0,$month,1,$year));

$days_in_this_week = 1;

$day_counter = 0;

$dates_array = array();

/* row for week one */

$calendar.= '<tr class="calendar-row">';

/* print "blank" days until the first of the current week */

for($x = 0; $x < $running_day; $x++):

$calendar.= '<td class="calendar-day-np"> </td>';

$days_in_this_week++;

endfor;

/* keep going with days.... */

for($list_day = 1; $list_day <= $days_in_month; $list_day++):

$calendar.= '';

/* add leading zero in the day number */

if($list_day < 10) {

$list_day = str_pad($list_day, 2, '0', STR_PAD_LEFT);

}

/* add leading zero in the month number */

if($month < 10) {

$month = str_pad($month, 2, '0', STR_PAD_LEFT);

}

$event_day = $year.'-'.$month.'-'.$list_day;

$calendar.= '<td class="calendar-day"><div style="position:relative;height:100px;">';

/* add in the day number */

$calendar.= '<div class="day-number">'.$list_day.'</div>';

$event_day = $year.'-'.$month.'-'.$list_day;

echo $event_day;

echo "<br />"; if(isset($events[$event_day])) {

foreach($events[$event_day] as $event) {

$calendar.= '<div class="event">'.$event['title'].'</div>';

}

}

else {

$calendar.= str_repeat('<p> </p>',2);

} $calendar.= '</div></td>';

if($running_day == 6):

$calendar.= '</tr>';

if(($day_counter+1) != $days_in_month):

$calendar.= '<tr class="calendar-row">';

endif;

$running_day = -1;

$days_in_this_week = 0;

endif;

$days_in_this_week++;

$running_day++;

$day_counter++;

endfor;

/* finish the rest of the days in the week */

if($days_in_this_week < 8):

for($x = 1; $x <= (8 - $days_in_this_week); $x++):

$calendar.= '<td class="calendar-day-np"> </td>';

endfor;

endif;

/* final row */

$calendar.= '</tr>';

/* end the table */

$calendar.= '</table>';

/** DEBUG **/

$calendar = str_replace('</td>','</td>'."\n",$calendar);

$calendar = str_replace('</tr>','</tr>'."\n",$calendar);

/* all done, return result */

return $calendar;

}

function random_number() {

srand(time());

return (rand() % 7);

}

/* date settings */

$month = (int) (isset($_GET['month']) ? $_GET['month'] : date('m'));$year = (int) (isset($_GET['year']) ? $_GET['year'] : date('Y'));

/* select month control */

$select_month_control = '<select name="month" id="month">';

for($x = 1; $x <= 12; $x++) { $select_month_control.= '<option value="'.$x.'"'.($x != $month ? '' : ' selected="selected"').'>'.date('F',mktime(0,0,0,$x,1,$year)).'</option>';

}$select_month_control.= '</select>';

/* select year control */

$year_range = 7;

$select_year_control = '<select name="year" id="year">';

for($x = ($year-floor($year_range/2));

$x <= ($year+floor($year_range/2));

$x++) {

$select_year_control.= '<option value="'.$x.'"'.($x != $year ? '' : ' selected="selected"').'>'.$x.'</option>';}$select_year_control.= '</select>';

/* "next month" control */

$next_month_link = '<a href="?month='.($month != 12 ? $month + 1 : 1).'&year='.($month != 12 ? $year : $year + 1).'" class="control">Next Month >></a>';

/* "previous month" control */

$previous_month_link = '<a href="?month='.($month != 1 ? $month - 1 : 12).'&year='.($month != 1 ? $year : $year - 1).'" class="control"><< Previous Month</a>';

/* bringing the controls together */

$controls = '<form method="get">'.$select_month_control.$select_year_control.' <input type="submit" name="submit" value="Go" />      '.$previous_month_link.'     '.$next_month_link.' </form>';

/* get all events for the given month I had to rewrite this query to get anything usable out of the mysql database we already had. */

$events = array();

$query = SELECT event_title, event_shortdesc, event_date DATE_FORMAT(Date,'%Y-%m-%d') AS Date

FROM calendar_events

WHERE Date LIKE '$year-$month%'

/* verify the query is correct */

echo "<hr />";

echo "<br />";

$result = mysql_query($query,$db_link) or die('error 2');while($row = mysql_fetch_assoc($result)) {

$events[$row['event_date']][] = $row;

echo $result;

/* verify that the query gets results.

Also generates a list of this months events */

echo $row['event_name']." ----- ".$row['event_shortdesc']." ----- ".$row['event_date'];"

}

echo '<h2 style='float:left; padding-right:30px;">'.date('F',mktime(0,0,0,$month,1,$year)).' '.$year';

echo '<div style='float:left;>.$controls. `</div>`;

echo '<div style='clear:both'> </div>';

echo draw_calendar($month,$year,$events);

echo '<br /><br />';

?>

Link to comment
https://forums.phpfreaks.com/topic/274678-event-calendar-script-help-requested/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.