Saturday 29 March 2008

Active Calender to MySQL script

i am looking at making a booking form for a website.
What I need to do is find a calender - make it clickable and get it to send information to my mysql database.

http://www.phpclasses.org/browse/package/1870.html


pages to adapt to get the result I need

open /source/activecalendar.php

[script]
FIND:

function mkDay($var)

REPLACE the function with

function mkDay($var){


$eventContent=$this->mkEventContent($var);
$linkstr=$this->mkUrl($this->actyear,$this->actmonth,$var);
// delete string // key to this is function mkDelUrl that appears below

$deleteStr=$this->mkDelUrl($this->actyear,$this->actmonth,$var);


// I have added the following code to give the full date and a week count with year number :Deej
$this->thedaysfulldate = $this->actday.$this->actmonth.$this->actyear;

$weekCount = $this->getWeekNum($var).$this->actyear;


if ($this->javaScriptDay) $linkstr="javaScriptDay."(".$this->actyear.",".$this->actmonth.",".$var.")\">".$var."";
if ($this->isEvent($var)){
if ($this->eventUrl){
$out="eventID."\">eventUrl."\">".$var."".$eventContent."";
$this->eventUrl=false;
}
elseif (!$this->dayLinks) $out="eventID."\">".$var.$eventContent."";
// the following is a highlighted box
// to delete from mysql this will be the place to add a get link for removal
else $out="eventID."\">".$deleteStr.$eventContent."";
}
elseif ($var==$this->selectedday && $this->actmonth==$this->selectedmonth && $this->actyear==$this->selectedyear){
if (!$this->dayLinks) $out="cssSelecDay."\">".$var.$eventContent."";
else $out="cssSelecDay."\">".$linkstr.$eventContent."";
}
elseif ($var==$this->daytoday && $this->actmonth==$this->monthtoday && $this->actyear==$this->yeartoday){
if (!$this->dayLinks) $out="cssToday."\">".$var.$eventContent."";
// underneath is the white highlighted box
else $out="cssToday."\">".$linkstr.$eventContent."";
}
elseif ($this->getWeekday($var)==0 && $this->crSunClass){
if (!$this->dayLinks) $out="cssSunday."\">".$var.$eventContent."";
// the following is on the sunday link that works
else $out="cssSunday."\">".$linkstr.$eventContent."";
}
elseif ($this->getWeekday($var)==6 && $this->crSatClass){
if (!$this->dayLinks) $out="cssSaturday."\">".$var.$eventContent."
";
// the following is on the saturday link that works
else $out="cssSaturday."\">".$linkstr.$eventContent."";
}
else{
if (!$this->dayLinks) $out="cssMonthDay."\">".$var.$eventContent."
";
// the following is on the day link that works
else $out="cssMonthDay."\">".$linkstr.$eventContent."";
}



return $out;

}


FIND

function mkUrl


UNDERNEATH THAT FUNCTION ADD:

/*
********************************************************************************
PRIVATE mkDelUrl() -> creates the day and navigation link structure
********************************************************************************
*/
function mkDelUrl($year,$month=false,$day=false){
if (strpos($this->url,"?") === false) $glue="?";
else $glue="&del";
if (strpos($this->urlNav,"?") === false) $glueNav="?";
else $glueNav="&";
$yearNavLink="urlNav.$glueNav.$this->yearID."=".$year."\">";
$monthNavLink="
urlNav.$glueNav.$this->yearID."=".$year."&del".$this->monthID."=".$month."\">";
$dayLink="
url.$glue.$this->yearID."=".$year."&del".$this->monthID."=".$month."&del".$this->dayID."=".$day."\">".$day."";
if ($year && $month && $day) return $dayLink;
if ($year && !$month && !$day) return $yearNavLink;
if ($year && $month && !$day) return $monthNavLink;
}



MAKE A NEW FILE

-> i'm just going to list the important bits of the page here. so you'll need to format it how you want.

in the php tags

require_once("../source/activecalendar.php");
$myurl=$_SERVER['PHP_SELF']."?css=".@$_GET['css']; // the links url is this page
$yearID=$_GET['yearID'];; // init false to display current year
$monthID=false; // init false to display current month
$dayID=false; // init false to display current day
$cal=new activeCalendar($yearID,$monthID,$dayID);
$cal->enableDayLinks($myurl); // enables day links
$thisYear=$cal->actyear; // get the current year
$arrowBack="<<"; // arrow back
$arrowForw=">>"; // arrow forward


$_SESSION['uid'] = $uid;
$_SESSION['pwd'] = $pwd;

$rst=mysql_query("SELECT * FROM users WHERE email='$uid' and passwd='$pwd'");
$row = mysql_fetch_array($rst);

$llid=$row["llid"];


$dateRst =mysql_query("SELECT * FROM weeks WHERE llid='$llid'");


while ($rows = mysql_fetch_array($dateRst))
{
$dayID = $rows['dayID'];
$monthID = $rows['monthID'];
$yearID = $rows['yearID'];
$llid = $rows['llid'];

$weekFinish = $dayID+7;


for ($x=$dayID;$x<=$weekFinish;$x++) $cal->setEvent($yearID,$monthID,$x); // create a class="event" from 10th till 20th on March each year

}





//$cal->setEvent("08","1","17","event"); // create a class="event" on the 17th Jan each year

//for ($x=5;$x<=12;$x++) $cal->setEvent("08",$x,"24"); // create a class="event" on the 23th from May till December each year
$cal->enableYearNav($myurl,$arrowBack,$arrowForw); // enables navigation controls
$cal->enableDatePicker(2008,2018,$myurl); // enables date picker (year range 2000-2010)






if ($_GET['dayID'] && $_GET['monthID'] && $_GET['yearID'] ){


$dayID = $_GET['dayID'];
$monthID = $_GET['monthID'];
$yearID = $_GET['yearID'];


// the mysql query will depend on what information your using in your project

$rst=mysql_query("SELECT * FROM users WHERE email='$email' and passwd='$passwd'");
if ($row = mysql_fetch_array($rst))
{
$llid=$row["llid"];

// db insert and redirection
mysql_query ("INSERT INTO weeks (llid, dayID, monthID, yearID) VALUES ('$llid', '$dayID', '$monthID', '$yearID')");

echo 'These details have been added to the database '.$dayID.' '.$monthID.' '.$yearID.' ';

}
}

if ($_GET['deldayID'] && $_GET['delmonthID'] && $_GET['delyearID'] ){


$dayID = $_GET['deldayID'];
$monthID = $_GET['delmonthID'];
$yearID = $_GET['delyearID'];


// the mysql query will depend on what information your using in your project

$rst=mysql_query("SELECT * FROM users WHERE email='$email' and passwd='$passwd'");
if ($row = mysql_fetch_array($rst))
{
$llid=$row["llid"];

// db insert and redirection

// this is where I'm upto - i know its the following statement at fault
// as when I change & to AND it deletes all my records under llid
mysql_query ("DELETE FROM weeks WHERE (llid = '$llid' && dayID ='$dayID' && monthID ='$monthID' && yearID ='$yearID') ");

echo 'These details have been deleted from the database '.$dayID.' '.$monthID.' '.$yearID.' ';

}
}


THEN INSIDE THE HTML

call up the class with

showYear(); ?>

[/script]
*****************************



Thats it. I am aware that this is somewhat of a hack and am always looking a improving my code. I think that ideally a class addition somehow would have been better, rather than changing function mkDay.
Anyone reading this who can help me out on that please let me know.

*****************************


Friday 28 March 2008

using .$_SERVER['']. - to get the url in the link

Firstly I know it's been a while since I've used my blog, but I do now intend to keep it much more uptodate.

I will try and write notes on anything I've had to search for on the web, looked in forums etc. Sometimes these write ups may need to be uploaded at the end of project once it goes live.

Know to the latest problem -

which server command should i use just to put the URL in the link - with no folders etc.

This is useful when the page thats sending the link is in another folder -

Example - you may be in /admin and the script displaying link is in /includes/ and then you want to access the same script from your root folder.

$_SERVER['HTTP_HOST'] - is the one you need - this give the result www.yourwebaddress.com

however when link you will need to put http:// inside the a href, otherwise your links may look like this http://www.yourwebsite.com/folder/www.yourwebsite.com/etc -