Jump to content

php/mysql calendar help


venom792001

Recommended Posts

I'm using a php/mysql calendar from

 

http://evolt.org/quick_calendar_using_ajax...nts_per_page=50

 

 

ive got it on my site and i have info in the database and have it showing when you click on the date on the calendar the problem i am having is having it only show the info for that specific date clicked, right now its showing all info from the database obviously i am doing the query wrong just not sure what....

 

This is the code im using to show the info from the db on selected day

<?php

// CONFIGURE THE DB ACCESS
$dbhost = 'xxxxx';
$dbuser = 'xxxxxx';
$dbpass = 'xxxxx';
$database = "xxxxx";
$dbConnect = mysql_connect($dbhost, $dbuser, $dbpass);
if (!$dbConnect) {
   die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db($database, $dbConnect);
if (!$db_selected) {
   die ('db selection error : ' . mysql_error());
}

// name of table
$tableName = 'calendar';
$date=date("F j, Y");

$sql = "SELECT * FROM $tableName";

$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($query)){
echo "
<table border='0' cellpadding='12' cellspacing='4' width='95%'>
                <tbody>
<tr>
<th align='center'>Home</th>
<th align='center'>Away</th>    
</tr>
<tr>
<td align='center'>$row[home_team]</th>
<td align='center'>$row[away_team]</th>
</tr>
<tr>
<td align='center'>0</th>
<td align='center'>0</th>
</tr>
<tr>
<td align='center' colspan='2'> </td>
</tr>
<tr>
<td align='center' colspan='2'> </td>
</tr>
<tr>
<td align='center' colspan='2'>$date, $row[time]</td>
</tr>
<tr>
<td align='center' colspan='2'> </td>
</tr>
<tr>
<tr>
<td align='center' colspan='2'>$row[location]</td>
</tr>
</table>
</div>";
}
?>

 

Any help is greatly appreciated

Link to comment
Share on other sites

Ouch... why do peopple store dates in such convoluted ways?

There's DATE datatype to store dates...

 

Your query should look like

$day = // selected day
$month = // selectod month
$year = // selected year

$sql =  "SELECT * FROM $tableName WHERE `day` = $day AND `month` = $month AND `month` = $month";

Link to comment
Share on other sites

Thanks for the reply, for some reason because the code for the calendar uses the mysql_fetch_array on the index page, that now any code i have elsewhere that uses mysql_fetch_assoc will shoot off an error

 

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /

Link to comment
Share on other sites

Ok here is all the code im using

 

calendar.php

<?php

/*
* Quick Calendar Using PHP and AJAX
* Copyright (C) 2005-2007
* Version 1.1;
* Last modified: 23 Jan 2007
* Author: Bernard Peh
* Email: bpeh@sitecritic.net
* Website://web-developer.sitecritic.net/
* File Name: quick_calendar.php
*
* LICENSE: 
* This is my contribution back to the open source community. You may modify the codes according 
* to your needs but please keep this section intact.
* 
* DESCRIPTION:
* Generate a simple calendar that can integrate seamlessly into any system with minimal 
* installation. You must be running be running PHP 4 at the minimal. 
* 
* SPECIAL THANKS TO FRIENDS FROM EVOLT.ORG
* Adam Taylor, kirk837
*
*/


// This year
$y = date('Y');
// This month
$m = date('n');
// This Day
$d = date('j');
$today = array('day'=>$d, 'month'=>$m, 'year'=>$y);
// If user specify Day, Month and Year, reset the var
if (isset($_GET['m'])) {
$y = $_GET['y'];
$m = $_GET['m'];
}

// CONFIGURE THE DB ACCESS
$dbhost = '';
$dbuser = '';
$dbpass = '';
$database = "";
$dbConnect = mysql_connect($dbhost, $dbuser, $dbpass);
if (!$dbConnect) {
   die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db($database, $dbConnect);
if (!$db_selected) {
   die ('db selection error : ' . mysql_error());
}

// name of table
$tableName = 'calendar';

// name of css
$css = 'calendar';

// Location of the calendar script file from the root
$ajaxPath = './calendar.php';

// END OF CONFIGURATION. YOU CAN CHANGE THE CSS. THE OTHER CODES CAN BE KEPT AS DEFAULT IF YOU WANT.

$sql = "SELECT * FROM $tableName WHERE (month='$m' AND year='$y') || (month='*' AND year='$y') || (month='$m' AND year='*') || (month='*' AND year='*')";

$rs = mysql_query($sql);
$links = array(); 
while ($rw = mysql_fetch_assoc($rs)) {
extract($rw);
$links[] = array('day'=>$day, 'month'=>$month, 'year'=>$year, 'link'=>$link, 'desc'=>$desc);
}

?>
<?php 
// if called via ajax, dont display style sheet and javascript again
if (!isset($_GET['ran'])) {
?>
<style type="text/css">
.calendar {
/** configure the width **/
width:218px;
background-color: #EEEEEE;
border: 1px solid #000000;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
margin:0px;
padding:0px;
text-align:center;
}
.calendar th {
background:url('images/header2.jpg');
font-weight: bold;
height: 20px;
color: #ffffff;
}
.calendar .header {
background:url('images/header.jpg');
font-weight: bold;
height: 24px;
color: #FFFFFF;
}
.calendar .footer {
background:url('images/header2.jpg');
font-weight: bold;
font-size:0.8em;
color: #FFFFFF;
width:100%;
}
.calendar td {
width: 22px;
height: 20px;
text-align: center;
font-size:0.9em;
padding: 2px;
}
.calendar .today {
width: 18px;
height: 16px;
background-color: #36393D;
padding: 2px;
border: 1px solid #000000;
font-weight: bold;
color: #ffffff;
}

.calendar .home {
width: 18px;
height: 16px;
background-color: #B71313;
padding: 2px;
border: 1px solid #000000;
font-weight: bold;
color: #ffffff;
}

.calendar .away {
width: 18px;
height: 16px;
background-color: #000000;
padding: 2px;
border: 1px solid #EEEEEE;
font-weight: bold;
color: #ffffff;
}

.calendar .link {
width: 18px;
height: 16px;
color: #ffffff;
font-weight:bold;
background-color: #B71313;
padding: 2px;
border: 1px solid #000000;
}

.calendar a, .calendar a:link, .calendar a:hover {
font-weight: bold;
text-decoration: underline;
color: #ffffff;

}
.calendar a.headerNav, .calendar a:link.headerNav, .calendar a:hover.headerNav {

color: #ffffff;
}

.calendar a.footerNav, .calendar a:link.footerNav, .calendar a:hover.footerNav {
width: 100%;
color: #ffffff;
}
</style>
<script language="javascript">

function createQCObject() { 
   var req; 
   if(window.XMLHttpRequest){ 
      // Firefox, Safari, Opera... 
      req = new XMLHttpRequest(); 
   } else if(window.ActiveXObject) { 
      // Internet Explorer 5+ 
      req = new ActiveXObject("Microsoft.XMLHTTP"); 
   } else { 
      alert('Problem creating the XMLHttpRequest object'); 
   } 
   return req; 
} 

// Make the XMLHttpRequest object 
var http = createQCObject(); 

function displayQCalendar(m,y) {
var ran_no=(Math.round((Math.random()*9999))); 
http.open('get', '<?= $ajaxPath; ?>?m='+m+'&y='+y+'&ran='+ran_no);
   	http.onreadystatechange = function() {
	if(http.readyState == 4 && http.status == 200) { 
      		var response = http.responseText;
      		if(response) { 
			document.getElementById("quickCalender").innerHTML = http.responseText; 
      		} 
   		} 
} 
   	http.send(null); 
}
</script>
<?php 
}
?>
<?php
class CreateQCalendarArray {

var $daysInMonth;
var $weeksInMonth;
var $firstDay;
var $week;
var $month;
var $year;

function CreateQCalendarArray($month, $year) {
	$this->month = $month;
	$this->year = $year;
	$this->week = array();
	$this->daysInMonth = date("t",mktime(0,0,0,$month,1,$year));
	// get first day of the month
	$this->firstDay = date("w", mktime(0,0,0,$month,1,$year));
	$tempDays = $this->firstDay + $this->daysInMonth;
	$this->weeksInMonth = ceil($tempDays/7);
	$this->fillArray();
}

function fillArray() {
	// create a 2-d array
	for($j=0;$j<$this->weeksInMonth;$j++) {
		for($i=0;$i<7;$i++) {
			$counter++;
			$this->week[$j][$i] = $counter; 
			// offset the days
			$this->week[$j][$i] -= $this->firstDay;
			if (($this->week[$j][$i] < 1) || ($this->week[$j][$i] > $this->daysInMonth)) {	
				$this->week[$j][$i] = "";
			}
		}
	}
}
}

class QCalendar {

var $html;
var $weeksInMonth;
var $week;
var $month;
var $year;
var $today;
var $links;
var $css;

function QCalendar($cArray, $today, &$links, $css='') {
	$this->month = $cArray->month;
	$this->year = $cArray->year;
	$this->weeksInMonth = $cArray->weeksInMonth;
	$this->week = $cArray->week;
	$this->today = $today;
	$this->links = $links;
	$this->css = $css;
	$this->createHeader();
	$this->createBody();
	$this->createFooter();
}

function createHeader() {
  		$header = date('M', mktime(0,0,0,$this->month,1,$this->year)).' '.$this->year;
  		$nextMonth = $this->month+1;
  		$prevMonth = $this->month-1;
	switch($this->month) {
		case 1:
   			$lYear = $this->year;
   				$pYear = $this->year-1;
   				$nextMonth=2;
   				$prevMonth=12;
   				break;
  			case 12:
   				$lYear = $this->year+1;
   				$pYear = $this->year;
   				$nextMonth=1;
   				$prevMonth=11;
      			break;
  			default:
      			$lYear = $this->year;
   			$pYear = $this->year;
    	  		break;
  		}
	// --
	$this->html = "<table cellspacing='0' cellpadding='0' class='$this->css'>
	<tr>
	<th class='header'> <a href=\"javascript:;\" onclick=\"displayQCalendar('$this->month','".($this->year-1)."')\" class='headerNav' title='Prev Year'><<</a></th>
	<th class='header'> <a href=\"javascript:;\" onclick=\"displayQCalendar('$prevMonth','$pYear')\" class='headerNav' title='Prev Month'><</a></th>
	<th colspan='3' class='header'>$header</th>
	<th class='header'><a href=\"javascript:;\" onclick=\"displayQCalendar('$nextMonth','$lYear')\" class='headerNav' title='Next Month'>></a> </th>
	<th class='header'> <a href=\"javascript:;\" onclick=\"displayQCalendar('$this->month','".($this->year+1)."')\"  class='headerNav' title='Next Year'>>></a></th>
	</tr>";
}

function createBody(){
	// start rendering table
	$this->html.= "<tr><th>S</th><th>M</th><th>T</th><th>W</th><th>Th</th><th>F</th><th>S</th></tr>";
	for($j=0;$j<$this->weeksInMonth;$j++) {
		$this->html.= "<tr>";
		for ($i=0;$i<7;$i++) {
			$cellValue = $this->week[$j][$i];
			// if today
			if (($this->today['day'] == $cellValue) && ($this->today['month'] == $this->month) && ($this->today['year'] == $this->year)) {
				$cell = "<div class='today'>$cellValue</div>";
			}
			// else normal day
			else {
				$cell = "$cellValue";
			}
			// if days with link
			foreach ($this->links as $val) {
				if (($val['day'] == $cellValue) && (($val['month'] == $this->month) || ($val['month'] == '*')) && (($val['year'] == $this->year) || ($val['year'] == '*'))) {
					$cell = "<div class='link'><a rel=\"facebox\" href=\"cal_games.php\" title='{$val['desc']}'>$cellValue</a></div>";
					break;
				}
			}	
			$this->html.= "<td>$cell</td>";
		}
		$this->html.= "</tr>";
	}	
}

function createFooter() {
	$this->html .= "<tr><td colspan='7' class='footer'><span class='home'>   </span> Game Nights</td></tr></table>";
}

function render() {
	echo $this->html;
}
}
?>

<?php
// render calendar now
$cArray = &new CreateQCalendarArray($m, $y);
$cal = &new QCalendar($cArray, $today, $links, $css);
if (!isset($_GET['ran'])) {
echo "<div id='quickCalender'>";
}
$cal->render();
if (!isset($_GET['ran'])) {
echo "</div>";
}
?>

 

 

and the code im using to call the info from the db via a modal box

<?php


// CONFIGURE THE DB ACCESS
$dbhost = '';
$dbuser = '';
$dbpass = '';
$database = "";
$dbConnect = mysql_connect($dbhost, $dbuser, $dbpass);
if (!$dbConnect) {
   die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db($database, $dbConnect);
if (!$db_selected) {
   die ('db selection error : ' . mysql_error());
}

// name of table
$tableName = 'calendar';
$date=date("F j, Y");

$day = // selected day
$month = // selectod month
$year = // selected year

$sql =  "SELECT * FROM $tableName WHERE `day` = $day AND `month` = $month AND `month` = $month";
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($query)){
echo "
<table border='0' cellpadding='12' cellspacing='4' width='95%'>
			<tbody>
<tr>
<th align='center'>Home</th> 
<th align='center'>Away</th>     
</tr>
<tr>
<td align='center'>$row[home_team]</th> 
<td align='center'>$row[away_team]</th>
</tr>
<tr>
<td align='center'>0</th> 
<td align='center'>0</th>
</tr>
<tr>
<td align='center' colspan='2'> </td>
</tr>
<tr>
<td align='center' colspan='2'> </td>
</tr>
<tr>
<td align='center' colspan='2'>$date, $row[time]</td>
</tr>
<tr>
<td align='center' colspan='2'> </td>
</tr>
<tr>
<tr>
<td align='center' colspan='2'>$row[location]</td>
</tr>
</table>
</div>";
}

?>

 

If you now of a better way to store the date for this i would love your input if it makes it easier i appreciate all your input and patience!!

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.