ERLEDIGT
JA
JA
ANTWORTEN
25
25
ZUGRIFFE
10703
10703
EMPFEHLEN
-
01.09.05 12:37 #1
So.
Da hier anscheinend seeehr viel über das Kalender Tutorial (bin neu hier) geredet wird, unter anderem auch Termin/Event-Kalender Fragen auftauchen, hab ich den mal etwas modifiziert (ich hoffe, dass ich das durfte) und einen Event/Termin-Kalender daraus gemacht.
Müsst ihr nur noch alles mit der Datenbank anpassen und unten hab ich 3 Zeilen Kommentar, wo steht, was ihr dort noch einfügen müsst (den Inhalt, wenn man auf einen Termin klickt)PHP-Code:<?php
// Connection zur Datenbank aufbauen
// Müsst ihr halt noch machen
// Zum überprüfen, ob ein Event existiert
function check_event($thisday, $events) {
for ($i = 0; $i <= count($events); $i++) {
if ($events[$i][0] == $thisday['mday'] && $events[$i][1] == $thisday['mon'] && $events[$i][2] == $thisday['year']) {
return $i;
}
}
if ($i == count($events)-1) {
return false;
}
}
define("DAY", (60*60*24));
$today = getdate();
$days = array ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
$months = array ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
// Hier switch-Anweisung daraus machen, wenn ihr mehrere Monate einfügen wollt.
if (!isset($_GET['next'])) {
$month = $today['mon'];
}
else {
$month = ($today['mon']+1);
}
$start_day_time = mktime (0, 0, 0, $month, 1, $today['year']);
$start_day = getdate($start_day_time);
$sql = "SELECT `month`, `year`, `day` // Die restlichen Spalten - z.B Den Inhalt etc. um den anzuzeigen, wenn man draufklickt
FROM `events`
WHERE `month` = '".$month."'
AND `year` = '".$today['year']."'";
$result = mysql_query($sql) or die (mysql_error());
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
$events[$i] = array ($row['day'], $row['month'], $row['year']);
$i++;
}
if (!isset($_GET['event'])) {
echo "<table border='2' cellspacing='3'>\n";
for ($i = 0; $i <= 6; $i++) {
echo "<th>";
echo $days[$i];
echo "</th>";
}
for ($i = 0; $i < (6*7); $i++) {
$thisday = getdate($start_day_time);
if (($i % 7) == 0 ) {
// Wenn der Monat zuende ist Script beenden (damit kein unnötiges <tr> kommt)
if ($thisday['mon'] != $month) {
break;
}
echo "<tr>\n";
}
// den 1. Monatstag erst anzeigen, wenn der richtige Wochentag gezählt wird, wenn der Monat zuende ist leere Zelle schreiben.
if ($i < $start_day['wday'] || $thisday['mon'] != $month) {
echo "<td></td>\n";
}
// Wenn der Tag im aktuellem Monat ist
else {
$check = check_event($thisday, $events);
if (isset($events[$check][0])) {
if (!isset($_GET['next'])) {
echo "<td><a href='eventcalendar.php?event=".$check."'>".$thisday['mday']." ".$thisday['month']."<br>\n";
}
else {
echo "<td><a href='eventcalendar.php?event=".$check."&next=1'>".$thisday['mday']." ".$thisday['month']."<br>\n";
}
echo $events[$check][3];
echo "</a></td>";
$start_day_time += DAY;
}
else {
echo "<td>".$thisday['mday']." ".$thisday['month']."</td>\n";
$start_day_time += DAY;
}
}
}
echo "</table>\n";
echo "<br>\n";
// Zwischen derzeitigen und nächsten Monat wechseln
if (!isset($_GET['next'])) {
echo "<a href='eventcalendar.php?next=1'>Show next month</a>\n";
}
else {
echo "<a href='eventcalendar.php'>Show current month</a>\n";
}
}
// Wenn ein event angeklickt wurde
else {
if (isset($events[$_GET['event']])) {
// Wichtig
// Inhalt eures Events - Kalender wird ausgeblendet und das Event gezeigt
// Includen könntet ihr auch
// $_GET['event'] steht nicht für die id des Events, sondern für den Index des Arrays
else {
echo "Ungültiges Event!\n";
}
if (isset($_GET['next'])) {
echo "\n<br>\n<a href='eventcalendar.php?next=1'>Back</a>\n";
}
else {
echo "\n<br>\n<a href='eventcalendar.php'>Back</a>\n";
}
}
?>
Ich denke, man sieht noch, dass es vom Tutorial abgeleitet ist
Ach ja, man kann dort nur zwischen dem jetzigen Monat und dem nächsten Moant wechseln, aber ihr könntet das mit einer switch-Anweisung ganz einfach um 10 Monate erweitern (diese Stelle ist auch kommentiert)
Auf design ist wiedermal keine Rücksicht genommen worden.
Ich hoffe, dass kein Fehler drinnen ist, ich hab es aber schon ausprobiert, allerdings hab ich ja jetzt das Zeug, was ich aus der DB auslese usw. wieder rausgenommen, damit ihr das besser anpassen könnt, hoffentlich hab ich nicht ausversehen etwas gelöscht.
Hier gibt es ein Beispiel
PS: Muss das etwa unter Tutorials?
-
Servus
ich weis das thema schon alt ist, aber mich würde interessieren wie du die switch anweisung einbringst!
Mein Problem ist das ich eine 3-Monatsansicht machen will und ich nicht weis, wie ich das hinbekomme!
Die anzeige soll etwa so sein:
Wie der aktuelle kalender aussieht nur das halt der Monatsname Über den wochentagen stehen soll und das eine Spalte angelegt werden müsste mit den Kalenderwochen!
Und dann wieder von vorne!
So das mann halt 3 Monate sieht und der aktuelle immer der erste ist!
Kann mmir da noch jemand weiterhelfen?
Danke schon mal
grüße Compane
-
Hi,
also vom Prinzip her brauchst du wie du bereits gesagt hast zwei Links bzw. Buttons. Die frage ist nun, ob du "nur" den nächsten monat willst oder auch die übernächsten usw. Das ändert die Sache etwas.
Die Links/Buttons müssen als Übergabeparameter (per POST oder GET) die Info "nächsten Monat" (+1) und "vorherigen Monat" (-1) an das eigene Skript schicken. Also z.B. wird vom kalender.php welches den kalender anzeigt auch die POST oder GET-Daten geschickt.
Diese Daten werden dann am Anfang vom Skript ausgewerten und so anhand von einer fallunterscheidung (IF...) ein Offset (+1 oder -1) auf die Datumswerte addiert (oder subtrahiert). Dadurch soll erreicht werden dass nächster monat oder der letzte monat angezeigt wird. Nun musst noch aufpassen auf die Links "nächster/letzer Monat". Entweder im Falle einer Anzeige von dem nächsten oder letzten Monat kann nun nur noch der aktuelle Monat angezeigt werden, oder wieder wie in der Ausgangssituation beide links die wieder zum nächsten oder letzten Monat führen.
Wenn egal welcher Monat angezeigt wird, auch die Buttons nächster und letzter Monat vorhanden sein sollen, sollten die immer beim Initialisieren die entsprechende Werte bekommen. Im Ausgangszustand würde der Button "nächster Monat" z.B. +1 haben. wenn einmal auf diesen Button gedrückt wird, bekommt der Button "nächster Monat" +2 als neuen Wert.
Zur Auswertung von den Daten per POST/GET siehe hier
Soweit alle Unklarheiten beseitigt?
Guten Rutsch
wünscht, Shiva
-
hm...
am Anfang vom Skript wertest die Übergabeparameter aus und änderst damit die monatsvariable:
date(n) ersetzt du im kompletten skript mit deiner neuen variable $monatsvariable.PHP-Code:If( übergabeparameter gesetzt) {
$monatsvariable = date(n) + *der übergebene parameter*;
}
else{
$monatsvariable = date(n);
}
Dann musst nur noch die Werte für die Buttons "nächster Monat" und "letzter Monat" anpassen. Da machst auch wieder eine Fallunterscheidung. Der Initialwert ist natürlich -1 für letzten monat und 1 für nächsten monat.
grüße
-
Eine gute Skript-Seite gibts hier.
http://www.hotscripts.com/
Da findest bestimmt was.
Grüße
-
Hmm..
ich schau nächstes Jahr mal. Mit den genannten Tipps ist's eigentlich nicht mehr schwer.
Guten Rutsch
-
Hi,
doch, das Skript funktioniert. Es gibt nur ein kleinen Fehler in der Beschreibung wie man die Navigation für nächster / letzter Monat zum laufen bekommt.
Also.
1) Skript runterladen und als calendar.php speichern: http://www.cascade.org.uk/software/p...r/Calendar.txt
2) Überschreiben der Navigations-Funktion mit:
3) neue php datei showcalendar.php mit folgendem code erstellen:PHP-Code:function getCalendarLink($month, $year)
{
$s = getenv('SCRIPT_NAME');
return "$s?month=$month&year=$year";
}
Das wars.PHP-Code:<?
include 'calendar.php';
// Construct a calendar to show the current month
$d = getdate(time());
if ($month == "")
{
$month = $d["mon"];
}
if ($year == "")
{
$year = $d["year"];
}
$cal = new Calendar;
echo $cal->getMonthView($month, $year);
?>
Ach ja, der Fehler ist auf der Seite . und zwar die Zeite mit "$cal = new MyCalendar;"
Es sollte nicht MyCalendar sondern wie oben nur Calendar heißen.
Grüße
-
Hi!
Auf der Seite gehts bei mir auch nicht. Vermutlich fängt er die Übergabeparameter (?month=2&year=2009) nicht ab. Aber wie gesagt, mit der Anleitung oben geht es bei mir.
Mit Navi und allem.
-
Richtig!
So sollte es funktionieren.
-
Hm..
komisch. Hab genau dein skript kopiert, hochgeladen und es hat funktioniert.
hier nochmal als zip angehängt.
-
Ich würd sagen, mein Webserver hat einfach übersinnliche Fähigkeiten... aber mal ehrlich. Bei mir lokal mit xamp gehts auch nicht. Da musste ich jetzt auch die showcalendar.php abändern:
PHP-Code:<?
include 'calendar.php';
// Construct a calendar to show the current month
$d = getdate(time());
if (!$_GET[month])
{
$month = $d["mon"];
}
else{
$month = $_GET[month];
}
if (!$_GET[year])
{
$year = $d["year"];
}
else{
$year = $_GET[year];
}
$cal = new Calendar;
echo $cal->getMonthView($month, $year);
?>
-
01.11.10 17:46 #12klickmo Tutorials.de Gastzugang
hallo,
da dieses thema schon etwas älter ist, ich aber genau das hier brauche, hätte ich eine klene frage.
wie kann man es einstellen dass das datum als zeistellige zahl dargestellt wird?
ich meine z.b. nicht als 1.2.2011 sondern 01.02.2011
geht das irgendwie?
danke
-
echo date("j.n.y");
-
-
01.11.10 19:51 #15klickmo Tutorials.de Gastzugang
das ist richtig.
ich weiß nur nicht wo ich das hier in diesem script angeben soll, damit er das datum welches ich anklicke als z.bb. 01.09.2010 anzeigt und nicht so wie jetzt 1.9.2010
hier der code:
PHP-Code:<?php
setlocale(LC_ALL, 'deu', 'de_DE');
define("EINTAG", (60*60*24) );
if ( ! checkdate( $monat, 1, $jahr ) )
{
$heuteArr = getdate();
$monat = $heuteArr[mon];
$jahr = $heuteArr[year];
}
$start = mktime ( 10, 10, 0, $monat, 1, $jahr );
$ersterArr = getdate(strftime($start));
?>
<html>
<head>
<title><?php /*print "Kalendar: $ersterArr[month] $ersterArr[year]" */?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="100%" border="0">
<tr>
<td>
<form action="<? print $PHP_SELF ?>" method="post">
<center><select name="monat">
<?php
$monate = Array("Januar", "Februar", "März", "April",
"Mai", "Juni", "Juli", "August", "September",
"Oktober", "November", "Dezember");
for ( $x=1; $x <= count( $monate ); $x++ )
{
print "\t<option value=\"$x\"";
print ($x == $monat)?" SELECTED":"";
print ">".$monate[$x-1]."\n";
}
?>
</select>
<select name="jahr">
<?php
for ( $x=2010; $x<2016; $x++ )
{
print "\t<option";
print ($x == $jahr)?" SELECTED":"";
print ">$x\n";
}
?>
</select>
<input type="submit" value="wechseln">
</center>
</form>
<p><center>
<?php
$days = Array("Montag", "Dienstag", "Mitwoch",
"Donnerstag", "Freitag", "Samstag", "Sonntag");
$monStart = $ersterArr[wday]-1;
if ($monStart < 0) { $monStart = 6; }
print "<TABLE border=\"0\" cellspacing=\"1\" cellpadding=\"15\" bordercolor=\"#000000\" style=\"border:1px solid; bordercolor:#000000; -moz-border-radius:8px; -khtml-border-radius:8px;\">\n";
foreach ( $days as $day )
print "\t<td bgcolor=\"#cccccc\"><center><b>$day</b></center></td>\n";
for ( $zaehler=0; $zaehler < (6*7); $zaehler++ )
{
$tagArr = getdate( $start );
if ( (($zaehler) % 7) == 0 )
{
if ( $tagArr[mon] != $monat )
break;
print "</tr><tr bgcolor=\"#cccccc\">\n";
}
/*
if ( $zaehler < $monStart || $tagArr[mon] != $monat )
{
print "\t<td><br></td>\n";
}
*/
if ( $zaehler < $monStart)
{
$vorMonArr = getdate(mktime ( 0, 0, 0, $monat, 1, $jahr ) - (($monStart-$zaehler)*60*60*24));
print "\t<td width=\"80\" heigth=\"30\" onClick=\"linkme('index.php?set=details&datum=$vorMonArr[mday].$vorMonArr[mon].$tagArr[year]')\" onMouseOver=\"over05(this)\" onMouseOut=\"out02(this)\"><center><a href=\"index.php?set=details&datum=$vorMonArr[mday].$vorMonArr[mon].$tagArr[year]\"><font color=\"#666666\">$vorMonArr[mday]</font></a></center></td>\n";
}
elseif ($tagArr[mon] != $monat)
{
print "\t<td width=\"80\" heigth=\"30\" onClick=\"linkme('index.php?set=details&datum=$tagArr[mday].$tagArr[mon].$tagArr[year]')\" onMouseOver=\"over05(this)\" onMouseOut=\"out02(this)\"><center><a href=\"index.php?set=details&datum=$tagArr[mday].$tagArr[mon].$tagArr[year]\"><font color=\"#666666\">$tagArr[mday]</font></a></center></td>\n";
$start += EINTAG;
}
else
{
print "\t<td width=\"80\" heigth=\"30\" onClick=\"linkme('index.php?set=details&datum=$tagArr[mday].$tagArr[mon].$tagArr[year]')\" onMouseOver=\"over05(this)\" onMouseOut=\"out02(this)\"><center><a href=\"index.php?set=details&datum=$tagArr[mday].$tagArr[mon].$tagArr[year]\"><font color=\"#000000\">$tagArr[mday]</font></a></center></td>\n";
$start += EINTAG;
}
}
print "</tr></table>";
?></center>
</td>
</tr>
</table>
</body>
</html>
Ähnliche Themen
-
PHP & SQL - Kalender - Termin jeden ersten Montag im Monat
Von ZodiacXP im Forum PHPAntworten: 3Letzter Beitrag: 13.03.10, 15:10 -
Mysteriöse Leerzeile im Termin-Kalender beim IE6
Von sheeba1507 im Forum CSSAntworten: 6Letzter Beitrag: 03.11.07, 07:14 -
Event Kalender
Von BABA66 im Forum PHPAntworten: 12Letzter Beitrag: 10.10.07, 07:49 -
mit Visual Basic in Outlook Kalender Termin anlegen
Von oernilein im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 23.08.06, 08:02 -
Probs mit Event Kalender
Von ihop im Forum PHPAntworten: 9Letzter Beitrag: 07.06.06, 16:16





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren