Jump to content

issues with my Ajax calendar (PHP/MYSQL/AJAX)


Fantasia

Recommended Posts

I have issues with my calendar:Actually it works allright biside that Ones I am forwarding the date the specific user who should get his specific info highlight in the calendar desapears, as far as I know it because of the update of Ajax, the page doesnt get the $req_user = $_GET['user']; as it supposted to do.

The code is the follow first you fing the database and then the Calendar.php (Please HELP  :'():

 

Database:

CREATE DATABASE IF NOT EXISTS southwinds;

USE southwinds;

 

--

-- Definition of table `calendar`

--

 

DROP TABLE IF EXISTS `calendar`;

CREATE TABLE `calendar` (

  `id` int(10) unsigned zerofill NOT NULL auto_increment,

  `day` varchar(2) collate latin1_general_ci NOT NULL,

  `month` varchar(2) collate latin1_general_ci NOT NULL,

  `year` varchar(4) collate latin1_general_ci NOT NULL,

  `link` varchar(255) collate latin1_general_ci NOT NULL,

  `desc` text collate latin1_general_ci NOT NULL,

  `username` varchar(30) collate latin1_general_ci NOT NULL,

  PRIMARY KEY  (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

 

--

-- Dumping data for table `calendar`

--

 

/*!40000 ALTER TABLE `calendar` DISABLE KEYS */;

INSERT INTO `calendar` (`id`,`day`,`month`,`year`,`link`,`desc`,`username`) VALUES

(0000000001,'29','09','2008','www.google.com','hello','admin'),

(0000000002,'06','10','2008','introduction.php','hi','admin'),

(0000000003,'10','10','2008','www.google.com','haha','lea'),

(0000000004,'09','10','2008','www.google.com','ll','admin'),

(0000000005,'10','11','2008','www.isk.kth.se','55','admin');

/*!40000 ALTER TABLE `calendar` ENABLE KEYS */;

 

 

--

-- Definition of table `users`

--

 

DROP TABLE IF EXISTS `users`;

CREATE TABLE `users` (

  `username` varchar(30) collate latin1_general_ci NOT NULL default '',

  `password` varchar(32) collate latin1_general_ci default NULL,

  `userid` varchar(32) collate latin1_general_ci NOT NULL,

  `userlevel` tinyint(1) unsigned NOT NULL,

  `email` varchar(50) collate latin1_general_ci default NULL,

  `timestamp` int(11) unsigned NOT NULL,

  `name` varchar(45) collate latin1_general_ci NOT NULL,

  PRIMARY KEY  (`userid`)

) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

 

--

-- Dumping data for table `users`

--

 

/*!40000 ALTER TABLE `users` DISABLE KEYS */;

INSERT INTO `users` (`username`,`password`,`userid`,`userlevel`,`email`,`timestamp`,`name`) VALUES

('admin','233b47c75b7eb974cd10a4df3c838b9f','e7b326e466db55935d1f9fda6843c41a',1,'admin@dani.com',1223679511,''),

('aaaaaa','670b14728ad9902aecba32e22fa4f6bd','2',1,'admin@dani.com',1222318857,'fff'),

('fdfdfd','1d283bf95ee42cd40c6da74b7196a049','3',1,'anders@gmail.com',1222319017,'fd');

/*!40000 ALTER TABLE `users` ENABLE KEYS */;

 

 

Calendar.php:

<?php 

 

// 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 = 'localhost';

$dbuser = 'root';

$dbpass = '';

$database = "southwinds";

$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.

$req_user = $_GET['user'];

$sql = "SELECT * FROM $tableName WHERE username = '".mysql_escape_string($_REQUEST['user'])."' AND (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_array($rs)) {

extract($rw);

$links[] = array('username'=>$username, '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'])) {

$req_user = $_GET['user'];

$username = $_GET['user'];

?>

<STYLE type="text/css">

.calendar {

/** configure the width 202020 **/

width:220px;

background-color: #272727;

border: 1px solid #000000;

font-family: verdana;

font-size: 12px;

margin:0px;

padding:0px;

text-align:center;

}

.calendar th {

background-color: #FFCC00;

font-weight: bold;

height: 20px; color: #272727;

}

.calendar .header {

background-color: #202020;

font-weight: bold;

height: 24px;

color: #FFFFFF;

}

.calendar .footer {

background-color: #202020;

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: #333333; color: #ffffff; font-weight: bold;

padding: 2px;

}

 

.calendar .link {

width: 18px;

height: 16px;

background-color: #000000; color: #000000; font-weight: bold;

padding: 2px;

border: 1px solid #202020;

}

 

.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 {

background-color: #202020;

color: #ffffff;

}

 

.calendar a.footerNav, .calendar a:link.footerNav, .calendar a:hover.footerNav {

width: 100%;

background-color: #202020;

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)));

var username= '<php $req_user ?>';

http.open('get', 'calendar.php?m='+m+'&y='+y+'&ran='+ran_no+'&user='+username);

  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;

  // thanks adam taylor for modifying this part

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 href=\"{$val['link']}\" 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'><a href=\"javascript:;\" onclick=\"displayQCalendar('{$this->today['month']}','{$this->today['year']}')\" class='footerNav'>Today is {$this->today['day']} ".date('M', mktime(0,0,0,$this->today['month'],1,$this->today['year']))." {$this->today['year']}</a></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'>".$req_user;

}

$cal->render();

if (!isset($_GET['ran'])) {

echo "</div>";

}

?>

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.