Fruitgum
Erfahrenes Mitglied
Hallo,
so nun endlich habe ich es geschafft das mein Script läuft. Ja und nun möchte ich es gern noch etwas erweitern.
Mein script gibt mir immer nur ein Monat aus. Nun möchte ich das es mir 12 Monate anzeigt und nicht nur den Januar. Aber so das er alles automatisch von dem Monat Januar bzw. immer 12 Monat aufwärts rechtnet, von diesen Monat an den ich als erstes stehen habe. Ich hoffe ihr kommt mit!
wenn ihr euch das anschauen wollt wie das aussieht, dann hier:
http://www.baabe-ostseestern.de/kalender/kalender.php
wie ihr seht, ist das der Monat vom aktuellen Datum. Jetzt möchte noch 11 weitere Monate angezeigt bekommen, schön neben einander.
Das ist die Ausgabe aus der Kalender.php
hier die cal.inc.php
ich denke das reicht, da die function zeigeKalender in der cal.inc.php ist.
Ich habe vorher nicht viel mit function() gemacht, ich hoffe mir kann einer helfen.
Achso die übergabe zum nächsten monat, also wenn ich einen der Pfeile benutze, ist
updateKalender(jahr,monat,tag);
und wird mit JS übergeben
Gut, dann noch die kalenderrpc.php
LG
so nun endlich habe ich es geschafft das mein Script läuft. Ja und nun möchte ich es gern noch etwas erweitern.
Mein script gibt mir immer nur ein Monat aus. Nun möchte ich das es mir 12 Monate anzeigt und nicht nur den Januar. Aber so das er alles automatisch von dem Monat Januar bzw. immer 12 Monat aufwärts rechtnet, von diesen Monat an den ich als erstes stehen habe. Ich hoffe ihr kommt mit!

wenn ihr euch das anschauen wollt wie das aussieht, dann hier:
http://www.baabe-ostseestern.de/kalender/kalender.php
wie ihr seht, ist das der Monat vom aktuellen Datum. Jetzt möchte noch 11 weitere Monate angezeigt bekommen, schön neben einander.
Das ist die Ausgabe aus der Kalender.php
PHP:
<?php
include("cal.inc.php");
$Kalender = new Kalender();
$Kalender->zeigeKalender();
?>
hier die cal.inc.php
PHP:
<?php
class Kalender
{
var $m_date;
function Kalender()
{
// Verhindert Endlos-Schleifen
set_time_limit( 1 );
$this->m_date = getdate();
}
function setzeDatum($tag,$monat,$jahr)
{
if ( $tag != "" && $monat != "" && $jahr != "")
{
$this->m_date["mday"] = $tag;
$this->m_date["mon"] = $monat;
$this->m_date["year"] = $jahr;
return true;
}
else
return false;
}
function Monatswechsel( $neuer_monat )
{
$neues_datum = mktime (0,0,0, ($this->m_date["mon"] + $neuer_monat), $this->m_date["mday"], $this->m_date["year"] );
return $neues_datum;
}
function zeigeKalender()
{
if ( $this->m_date == "")
return false;
else
$datum = $this->m_date;
$monatsname = array();
$monatsname[1] = "Januar";
$monatsname[2] = "Februar";
$monatsname[3] = "März";
$monatsname[4] = "April";
$monatsname[5] = "Mai";
$monatsname[6] = "Juni";
$monatsname[7] = "Juli";
$monatsname[8] = "August";
$monatsname[9] = "September";
$monatsname[10] = "Oktober";
$monatsname[11] = "November";
$monatsname[12] = "Dezember";
$wochen_beginn = 2; // Wochenstart soll Montag sein, Standard: Samstag
echo( "<table align=\"center\" border=\"0\" cellspacing=\"4\" cellpadding=\"0\">\n" );
echo( "<tr><td colspan=\"7\">" );
echo( "<table cellspacing=\"0\" cellpadding=\"0\" width=\"100%\"><tr>");
// Einen Monat zurück
$neuer_monat = $this->Monatswechsel( -1 );
echo( "<td style=\"text-align:left\"><a href=\"#\" onclick=\"updateKalender('" . date("Y", $neuer_monat) . "','" . date("n", $neuer_monat) . "','1')\">«</a></td>" );
// Aktuell gewählter Monat
echo( "<td style=\"text-align:center\">" . $monatsname[$datum["mon"]] . " " . $datum["year"] . "</td>" );
// Nächster Monat
$neuer_monat = $this->Monatswechsel( +1 );
echo( "<td style=\"text-align:right\"><a href=\"#\" onclick=\"updateKalender('" . date("Y", $neuer_monat) . "','" . date("n", $neuer_monat) . "','1')\">»</a></td>" );
echo( "</td></tr></table></td>\n" );
// Maximale Tage des aktuellen Monats ermitteln
$maximaletage = date( "t", mktime( 0, 0, 0, $datum["mon"], 1, $datum["year"] ) );
for( $suchTag = 1; $suchTag <= $maximaletage; $suchTag++ )
{
$tagnummer = date("w", mktime(0, 0, 0, $datum["mon"], $suchTag, $datum["year"])) + 1;
if ($suchTag == 1)
{
// Kopf der Tabelle mit Wochentagen
echo("<tr style=\"text-align:center\"><td>Mo</td><td>Di</td><td>Mi</td><td>Do</td><td>Fr</td><td>Sa</td><td>So</td></tr>\n");
// Leere Felder am Anfang und Ende, damit der 1. Tag des Monats unter dem richtigen Tag steht
echo("<tr>\n");
for ( $Tag = $wochen_beginn; $tagnummer != $Tag; $Tag++ )
{
echo( "<td> </td>\n" );
if ( $tagnummer == 1 && $Tag == 7 )
{
echo ( $this->zeigeZelle( $suchTag ) );
break;
}
if ( $Tag > 15 )
break;
}
if ($tagnummer == $Tag)
echo ( $this->zeigeZelle( $suchTag ) );
}
else if ($tagnummer == $wochen_beginn)
{
echo "</tr><tr>\n";
echo( $this->zeigeZelle( $suchTag ) );
}
else
echo( $this->zeigeZelle( $suchTag ) );
}
$suchTag = $suchTag - 6;
$tagnummer = date("w", mktime(0, 0, 0, $datum["mon"], $suchTag, $datum["year"]));
while ( $tagnummer != $wochen_beginn )
{
echo( "<td> </td>\n" );
$suchTag++;
$tagnummer = date("w", mktime(0,0,0,$datum["mon"], $suchTag, $datum["year"]));
}
echo( "</table>\n" );
return true;
}
function zeigeZelle( $tag )
{
$currdate = date("Y-m-d", mktime(0,0,0, date("m", $this->Monatswechsel(0) ), $tag, date("Y", $this->Monatswechsel(0) )));
$wochentag = date("w", mktime(0,0,0,date("m",$this->Monatswechsel(0)), $tag, date("Y", $this->Monatswechsel(0))));
if( date("Y-m-d") == $currdate ) // Heute
$style = "datum_heute";
else if( $this->pruefeTermine($currdate) )
$style = "datum_termin";
else if( $wochentag == 6 || $wochentag == 0 ) // Wochenende
$style = "datum_wochenende";
else
$style = "datum_normal";
$wert = "<td style=\"text-align:right\" class=\"" . $style . "\"><a href=\"#\" onclick=\"zeigeTag('" . $currdate . "')\"> " . $tag . " </a></td>\n";
return $wert;
}
function pruefeTermine( $datum )
{
include("config.php");
$query = "SELECT count(id) FROM terminkalender WHERE datum='$datum'";
$result = mysql_query($query);
$line = mysql_fetch_array($result);
if ($line[0] > 0)
return true; // Termine an diesem Tag vorhanden
else
return false; // Keine Termine vorhanden
mysql_free_result($result);
mysql_close();
return false;
}
}
?>
ich denke das reicht, da die function zeigeKalender in der cal.inc.php ist.
Ich habe vorher nicht viel mit function() gemacht, ich hoffe mir kann einer helfen.
Achso die übergabe zum nächsten monat, also wenn ich einen der Pfeile benutze, ist
updateKalender(jahr,monat,tag);
und wird mit JS übergeben
Code:
function updateKalender(jahr,monat,tag) {
var opt = {method:'post', postBody:'aktion=Monatswechsel&jahr='+jahr+'&monat='+monat+'&tag='+tag };
new Ajax.Updater( {success:'tagesauswahl'}, 'kalenderrpc.php', opt);
}
Gut, dann noch die kalenderrpc.php
PHP:
<?php
if ($_POST['aktion'] == 'Start') {
$datum = mktime(0,0,0, date("d"), date("m"), date("Y"));
$datum_heute = date("d-m-Y", $datum);
include("tag.inc.php");
$Ausgabe = new Tagesansicht();
$Ausgabe->Anzeigen($datum);
} elseif ($_POST['aktion'] == 'Speichern') {
$datum = $_POST['datum'];
$startzeit = $_POST['startzeit'];
$endzeit = $_POST['endzeit'];
$titel = $_POST['titel'];
$notizen = $_POST['notizen'];
include('config.php');
$query = "INSERT INTO terminkalender SET datum='$datum', startzeit='$startzeit', endzeit='$endzeit', titel='$titel', notizen='$notizen'";
mysql_query($query);
$datum = explode("-", $datum);
$datum_neu = mktime(0,0,0, $datum[1], $datum[2], $datum[0]);
include('tag.inc.php');
$Ausgabe = new Tagesansicht();
$Ausgabe->Anzeigen($datum_neu);
} elseif ($_POST['aktion'] == 'Monatswechsel') {
$jahr = $_POST['jahr'];
$monat = $_POST['monat'];
$tag = $_POST['tag'];
include('cal.inc.php');
$Kalender = new Kalender();
$Kalender->setzeDatum($tag, $monat, $jahr);
$Kalender->zeigeKalender();
} elseif ($_POST['aktion'] == 'Anzeigen') {
$datum = $_POST['datum'];
$datum = explode("-", $datum);
$datum_neu = mktime(0,0,0, $datum[1], $datum[2], $datum[0]);
include("tag.inc.php");
$Ausgabe = new Tagesansicht();
$Ausgabe->Anzeigen($datum_neu);
} elseif ($_POST['aktion'] == 'Loeschen') {
$datum = $_POST['datum'];
$id = $_POST['id'];
include("config.php");
$query = "DELETE FROM terminkalender WHERE id='$id' LIMIT 1";
mysql_query($query);
$datum = explode("-", $datum);
$datum_neu = mktime(0,0,0, $datum[1], $datum[2], $datum[0]);
include("tag.inc.php");
$Ausgabe = new Tagesansicht();
$Ausgabe->Anzeigen($datum_neu);
} elseif ($_POST['aktion'] == 'Editieren') {
$datum = $_POST['datum'];
$id = $_POST['id'];
include("config.php");
$query = "SELECT startzeit, endzeit, titel, notizen FROM terminkalender WHERE id='$id'";
$result = mysql_query($query);
$line = mysql_fetch_array($result);
$startzeit = $id . "_startzeit";
$endzeit = $id . "_endzeit";
$titel = $id . "_titel";
$notizen = $id . "'_notizen";
echo <<<EOF
<table width="100%" cellpadding="0" cellspacing="0">
<tr><td>Beginn: </td><td><input type="text" id="$startzeit" value="$line[startzeit]" /> </td></tr>
<tr><td>Ende: </td><td><input type="text" id="$endzeit" value="$line[endzeit]" /> </td></tr>
<tr><td>Titel: </td><td><input type="text" id="$titel" value="$line[titel]" /> </td></tr>
<tr><td>Notizen: </tr><td><textarea style="height:100px" id="$notizen">$line[notizen]</textarea></td></tr>
<tr><td colspan="2" style="text-align:right"><input type="button" onclick="updateTermin('$id', '$datum')" value="Speichern"/>
<input type="button" onclick="versteckeNeuerEintrag()" value="Abbrechen"/></td></tr>
</tr>
</table>
EOF;
mysql_free_result($result);
mysql_close();
} elseif ($_POST['aktion'] == 'Update') {
$datum = $_POST['datum'];
$id = $_POST['id'];
$startzeit = $_POST['startzeit'];
$endzeit = $_POST['endzeit'];
$titel = $_POST['titel'];
$notizen = $_POST['notizen'];
include("config.php");
$query = "UPDATE terminkalender SET startzeit='$startzeit', endzeit='$endzeit', titel='$titel', notizen='$notizen' WHERE id='$id' LIMIT 1";
mysql_query($query);
$datum = explode("-", $datum);
$datum_neu = mktime(0,0,0, $datum[1], $datum[2], $datum[0]);
include("tag.inc.php");
$Ausgabe = new Tagesansicht();
$Ausgabe->Anzeigen($datum_neu);
}
?>
LG
