Kalender-Termine ausgeben und Link erstellen

vquicksilver

Mitglied
Hi ich habe für meine Homepage ein kleinen Kalender erstellt. Er funktioniert auch soweit ganz gut. Ich habe nun leider nur das Problem das ich die Termine aus einer Datenbank im Kalender verlinken will so das man wenn man auf den Termin klickt der Termin angezeigt wird. Ich habe nur leider das Problem das irgendwie immer nur der Timestamp des letztens Termins angezeigt wird.

Hier die Datenbank:
PHP:
CREATE TABLE `kalender` (
  `id` int(20) NOT NULL auto_increment,
  `datum` text NOT NULL,
  `erstellerid` int(20) NOT NULL default '0',
  `titel` text NOT NULL,
  `content` text NOT NULL,
  `intern_extern` char(2) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

-- 
-- Daten für Tabelle `kalender`
-- 

INSERT INTO `kalender` (`id`, `datum`, `erstellerid`, `titel`, `content`, `intern_extern`) VALUES (1, '1141246610', 4, 'test', 'test', ''),
(2, '1143125578', 5, 'test 2', 'blaaaaaa', '1');

Hier die Funktion:
PHP:
function Kalender()

{
global $navigation, $kalender;
// Auslesen des Monats
$getdate=$_GET['getdate'];
// Aktualisieren der Daten
if(!empty($getdate)) 
	{ 
		$month=date("m",$getdate); 
		$year=date("Y",$getdate);
	} 
else 
	{ 
		$month=date("m"); 
		$year=date("Y"); 
	} 

// Monate in Deutsch umschreiben

$MonatsName = array ("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
// Blätterfunktion
if(!empty($getdate)) 
	{ 
		$year=date("Y",$getdate); 
		$dayf=date("F",$getdate); 
		$dayf = $MonatsName[date(n,$getdate)-1];
	} 
else 
	{ 
		$year=date("Y"); 
		$dayf=date("F"); 
		$dayf = $MonatsName[date(n)-1];
	}

$nextmonth=$month + 1; $lastmonth=$month -1; 
$nextlink=gmmktime(0,0,0,$nextmonth,1,$year);
$lastlink=gmmktime(0,0,0,$lastmonth,1,$year);

// Tabelle erstellen
$kalender .="\n\t\t\t\t<table cellspacing=\"1\">\n\t\t\t\t<tr class=\"head\">\n";
$kalender .="\t\t\t\t <td><a href=\"index.php?open=".$_GET["open"]."&amp;view=".$_GET["view"]."&amp;getdate=$lastlink\">&laquo;</a></td>\n";
$kalender .="\t\t\t\t <td class=\"year\" colspan=\"5\">$dayf $year</td>\n"; 
$kalender .="\t\t\t\t <td><a href=\"index.php?open=".$_GET["open"]."&amp;view=".$_GET["view"]."&amp;getdate=$nextlink\">&raquo;</a></td>\n\t\t\t\t</tr>\n\n";

// Wochentage
$kalender .="\t\t\t\t<tr class=\"days\">\n";
$kalender .="\t\t\t\t <td>Mo</td>\n";
$kalender .="\t\t\t\t <td>Di</td>\n";
$kalender .="\t\t\t\t <td>Mi</td>\n";
$kalender .="\t\t\t\t <td>Do</td>\n";
$kalender .="\t\t\t\t <td>Fr</td>\n";
$kalender .="\t\t\t\t <td>Sa</td>\n";
$kalender .="\t\t\t\t <td>So</td>\n";
$kalender .="\t\t\t\t</tr>\n\n";
$kalender .="\t\t\t\t<tr>\n";

// Variablen setzen
$dc=0; 
$actual=1;
$rowc=7;

// Auslesen der Tage
$days=date("t", mktime(0,0,0,$month,1,$year));
$firstday=date("l", mktime(0,0,0,$month,1,$year));

if($firstday!="Monday") { 
	$dc++;
	if($firstday!="Tuesday") {
		$dc++;
		if($firstday!="Wednesday") {
			$dc++;
			if($firstday!="Thursday") {
				$dc++;
				if($firstday!="Friday") {
					$dc++;
					if($firstday!="Saturday") {
						$dc++;
					}
				}
			}
		}
	}
}

// Leere Felder im Kalender
if($dc!=0)
  { 
  $kalender .="\t\t\t\t <td colspan=\"$dc\"></td>\n"; 
  }

// Zeilenumbruch im Kalender
while ($actual<=$days) 
	{
		if($dc==7 OR $dc==14 OR $dc==21 OR $dc==28 OR $dc==35) 
			{ 
			$kalender .="\t\t\t\t</tr>\n\n\t\t\t\t<tr>\n"; $rowc=$rowc + 7; 
			}

// Zeit auslesen
$tsday=mktime(0,0,0,$month,$actual,$year);
$tsday2=$tsday + 86399; 
$evc=0;

// Termine auslesen
$sql9="SELECT 
			id,
			datum 
				FROM 
				kalender 
					WHERE datum >= '$tsday'";
$eget=mysql_query($sql9);
while ($evt = mysql_fetch_object($eget))
{ 
$datum = $evt->datum;
if($evt->datum>=$tsday AND $evt->datum<=$tsday2) 
{ $evc++; } 
}

// Hervorhebungen
if ($actual==date("d") AND $month==date("m") AND $year==date("Y")) 
		{ 
		 $mkpd="	\t\t\t <td class=\"heute\" title=\"Heute\">"; 
		}
	else 
		{ 
			if($evc!=0) 
				{ 
				 $mkpd="\t\t\t\t <td class=\"termin\">"; 
				}
				else 
				{ 
				 $mkpd="\t\t\t\t <td>"; 
				} 	
}

if ($evc!=0) 
	{
	 $kalender .=" $mkpd <a href=\"index.php?open=kalender&amp;view=termin&amp;getdate=$datum\">$actual</a></td>"; 
	}

if($evc==0) 
	{ 
	 $kalender .="".$mkpd."".$actual."</td>\n"; 
	} 

$actual++; 
$dc++; 
} 

if($dc!=$rowc) 
	{ 
		$csp=$rowc - $dc; 
		$kalender .="\t\t\t\t <td colspan=\"$csp\"></td>\n\t\t\t\t</tr>\n"; 
	} 

$kalender .="\t\t\t\t</table>\n";
}

Ich bin echt am verzweifeln weil ich den Fehler nicht finde. Wäre super wenn mir da wer helfen könnte!

Vielen Dank !
 
Was funktionert denn oder was genau funktioniert nicht? Eine präzisere Fehlerbeschreibung wäre hilfreich.
 
Hi ..

Also ich denke mal, der Fehler liegt darin begründet, dass du zwar die Ergebnisse deines SQL Querys in einer Whileschleife nacheinander ausliest, aber deren Darstellung erst danach erledigst, wobei dann logischerweise nur das Datum des letzten Eintrages in deiner Variable ist.

Du mußt also:
PHP:
while ($evt = mysql_fetch_object($eget)) 
{  
$datum = $evt->datum; 
if($evt->datum>=$tsday AND $evt->datum<=$tsday2)  
{ $evc++; }  

 TABELLENAUFBAU 

}
.. ausweiten, so dass auch die Darstellung der Tabelle sich innerhalb der geschweiften Klammer befindet.

So .. ich hoffe ich hab mich nicht verguckt.

Gruß Stefan
 
Also teppi hat das Problem schon erklärt. Es werden zwar 2 Termine Markiert. Auch an den Richtigen Tagen. Aber leider wird dem Link zur Ausgabe immer der Timestamps des Letzten Termins übergeben.
 
Zurück