webForumDet fria alternativet

Hjälp med PHP och MySQL

PHPur PHP

6 svar · 251 visningar · startad av westman

Medlem sedan aug. 2004249 inlägg
Frågan#1

Jag håller på att bygga en kalender/bokningsfunktion.
Kalendern är ett faktum, men jag lyckas inte med bokningsfunktionen. Jag vill att man skall kunna klicka på önskat datum och då bli skickad till en sida där man väljer klockslag. Värden som skall skickas vidare till den sidan är: dag (datum), år, månad. Dvs den man klickar på.
Jag bifogar koden (mkt kod.. :OO ) för själva kalendern. Vad jag vill ha hjälp med är hur länken skall se ut...

<?php

class Calendar {
	
	function getDayOfWeek($dd, $mm, $yy){
		//returnerar int givet dagens datum
		$dateArray = getdate(mktime(0,0,0,$mm,$dd,$yy));
		
		return $dateArray['wday'];
	}
	
	function daysInMonth($month,$year) {
		$date = getdate(mktime(0,0,0,$month+1,0,$year));

		return $date["mday"];
	}	

	function startCalendar($myCal) {
		if ((isset($_GET['month']) && isset($_GET['year']))) {
			$thecalendar = $this->displayCalendar($_GET['month'],$_GET['year'],$myCal);
		}
		else {
		   	$now = date('n,Y');
			$myDate = explode(",",$now);

			$thecalendar = $this->displayCalendar($myDate[0],$myDate[1],$myCal);
		}
		
		return $thecalendar;
	}
	
	function checkDate($month,$year) {
		if (!is_numeric($month)	|| !is_numeric($year)) {
			return $this->myError("Either the month of year was non-numeric.");
		}
		else if ($month > 12 || $month < 1) {
			return $this->myError("The number passed for the month value is not valid.");
		}
		else if ($year > 2037 || $year < 1970) {
			 return $this->myError("The number passed for the year value is not valid.");	
		}
		else {
			return "passed";	
		}
	}
	
	function next($month,$year) {
		if ($month == 12) {
			$next['month'] = 1;
			$next['year'] = $year + 1;
		}
		else {
			$next['month'] = $month + 1;
			$next['year'] = $year;
		}
		
		return $next;
	}
	
	function last($month,$year) {
		if ($month == 1) {
			$last['month'] = 12;
			$last['year'] = $year - 1;	
		}
		else {
			$last['month'] = $month - 1;
			$last['year'] = $year;
		}
		
		return $last;
	}

	function monthName($month) {
		$monthName = array(1 => "January",
						   2 => "February",
						   3 => "March",
						   4 => "April",
						   5 => "May",
						   6 => "June",
						   7 => "July",
						   8 => "August",
						   9 => "September",
						  10 => "October",
						  11 => "November",
						  12 => "December");

		return $monthName[$month];
	}
	
	function displayCalendar($month,$year,$myCal){
		// Kontrollera att det är en giltig månad och år
				$check = $this->checkDate($month,$year);
		
		if ($check != "passed") {
			return $check;
			die();
		}
				
		if ($myCal) {
			extract($myCal);	
		}

		$monthName = $this->monthName($month);
		$next = $this->next($month,$year);
		$last = $this->last($month,$year);
						
		$myCalendar = '
<table border="1" cellpadding="0" cellspacing="0" style="font-size: 8pt; font-family: tahoma, arial, sans-serif;">
	<tr>
		<td colspan="7" align="center">
			<table bgcolor="' . $headerBgcolor . '" border="0" cellpadding="1" cellspacing="0" width="100%" style="font-family: tahoma, arial, sans-serif; font-size: 8pt;">
				<tr>
					<td align="center" width="30">
						<a href="' . $_SERVER['PHP_SELF'] . '?month=' . $last['month'] . '&year=' . $last['year'] . '"  style="text-decoration: none;">&lt;&lt;</a>
					</td>
					<td align="center" style="font-size: 10pt; color: ' . $headerColor . '">
						' . $monthName . ' ' . $year . '
					</td>
					<td align="center" width="30">
						<a href="' . $_SERVER['PHP_SELF'] . '?month=' . $next['month'] . '&year=' . $next['year'] . '"  style="text-decoration: none;">&gt;&gt;</a>
					</td>
				</tr>
			</table>
		</td>
	</tr>
	<tr>
		<td bgcolor="' . $dayBgcolor . '" width="27" align="center"valign="middle" style="color: ' . $dayColor . '">
			Sun
		</td>
		<td bgcolor="' . $dayBgcolor . '" width="27" align="center"valign="middle" style="color: ' . $dayColor . '">
			Mon
		</td>
		<td bgcolor="' . $dayBgcolor . '" width="27" align="center"valign="middle" style="color: ' . $dayColor . '">
			Tue
		</td>
		<td bgcolor="' . $dayBgcolor . '" width="27" align="center"valign="middle" style="color: ' . $dayColor . '">
			Wed
		</td>
		<td bgcolor="' . $dayBgcolor . '" width="27" align="center"valign="middle" style="color: ' . $dayColor . '">
			Thu
		</td>
		<td bgcolor="' . $dayBgcolor . '" width="27" align="center"valign="middle" style="color: ' . $dayColor . '">
			Fri
		</td>
		<td bgcolor="' . $dayBgcolor . '" width="27" align="center"valign="middle" style="color: ' . $dayColor . '">
			Sat
		</td>
	</tr>';

		$dom = 1;
		//kolla igenom kalender grid'en
				for ($r=1; $r<=6; $r++){
			for ($c=0; $c<=7; $c++){
				if ($c == 0){
					$myCalendar .= "
	<tr>";
				} 
				else {
					if ($c == 1 + $this->getDayOfWeek($dom,$month,$year)){
							
						$myCalendar .= '
		<td align="center" valign="middle" bgcolor="' . $cellBgcolor . '" style="color: ' . $cellColor . '">

// Det är väl här som länken ska va då... men...

			<a href="dag.php?year=$year&month=$month&day=$dom">' . $dom . '</a>
		</td>';
						//Om det inte är fler dagar, strunta i att skriva vidare
						if ($dom < $this->daysInMonth($month,$year)){
							$dom++;
						} 
						else {
							$r=7;
						}
					} 
					else {
						$myCalendar .= '
		<td bgcolor="' . $cellBgcolor . '">
			&nbsp;
		</td>';
					}
				}
				
				if ($c == 7){
					$myCalendar .= "
	</tr>";
				}
			}
		}
				
		$myCalendar .= "
</table>";

	   	return $myCalendar;
	}
	
	function myError($myError) {
		$returnError = '<div>
	<strong>The following calendar error has occured:</strong><br />
	' . $myError . '
</div>';
		
		return $returnError;
	}
}

Tackar så hjärtligt!

Medlem sedan nov. 2002302 inlägg
#2

Jag är inte säker på att jag har förstått frågan. Men det är väl något sånt här du är ute efter?

addevent.php?date=$date
Där $date är det datum som man klickar på, alltså det datum som du har skrivit ut

Sen i addevent.php så har du ett formulär där användaren får skriva in de uppgifter som behövs och när användaren skickar formuläret så sätter du in det i databasen. Du behöver ju inte just använda addevent.php, du kan ju kalla den vad du vill.

Hoppas att det var det här du var ute efter ;)

Medlem sedan aug. 2004249 inlägg
#3

Men då borde ju detta likväl funka:

<a href="dag.php?year=$year&month=$month&day=$dom">

När jag kör detta så tycks inte variablerna $month, $year och $day få ngt värde utan de sparas som sitt namn i databasen.. ngn som kan se ngt fel i den ovan nämnda länken tillsammans med resten av koden (första inlägget..)

Medlem sedan sep. 20025 507 inlägg
#4
echo "<a href='dag.php?year=".$year."&month=".$month."&day=".$dom."'>";

Borde väl funka?
/Red. Eller vänd på fnuttarna.

Medlem sedan nov. 2002302 inlägg
#5

Det här borde skriva ut det du är ute efter

<a href="dag.php?year='.$year.'&month='.$month.'&day='.$dom.'">
Medlem sedan aug. 2004249 inlägg
#6

givetvis! tack, ibland är man ju hjärndöd. nu funkar det iaf.
Om jag nu vill att söndag skall komma sist i veckoutskriften (nu kommer den ju först), hur göra?

Medlem sedan nov. 2002302 inlägg
#7

Jag är inte helt hundra med i koden.

Men jag kan ge ett annat tips, ta en titt på date() den kan göra mycket av det som du har gjort funktioner till.

141 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)