Kalender Programmieren (problem mit variablen)
Mario
- php
einen schönen guten abend,
also direkt zu meinem Problem:
ich wollte mir einen kalender programmieren, bei dem man auch die monate vor und zurück blättern kann. sooweit so gut den aktuellen monat ist noch einfach:
<?php
//$datum = mktime(0,0,0, date("m"),date("d"),date("Y"));
$anztage = date("t",$datum);
$monat = date("n",$datum);
$monatname = array("1" => "Januar",
"2" => "Februar",
"3" => "März",
"4" => "April",
"5" => "Mai",
"6" => "Juni",
"7" => "Juli",
"8" => "August",
"9" => "September",
"10" => "Oktober",
"11" => "November",
"12" =>"Dezember");
$tag = 1;
$jahr = date("Y");
echo $monatname[$monat];
echo "<table>";
echo "<tr>";
while($tag <= $anztage)
{
if ($tag != date("d"))
{
echo "<td>";
echo $tag;
echo "</td>";
}
else
{
echo "<td>";
echo "<b><u> $tag </b></u>";
echo "</td>";
}
if (($tag%6) == "0")
{
echo "</tr><tr>";
}
$tag++;
};
echo "</tr>";
echo "</table>";
?>
so das problem ist jetzt nur wenn ich einen monat blättern möchte mit einem hyperlink oder submit button dann wird die seite refresht und ich bin immer noch beim aktuellen datum.... habs auch schon mit funktionen probiert mehreren php dateien und vieles mehr, verzweifele so langsam...
Ich wäre euch sehr dankbar, wenn ihr mir bei diesem problem helfen könntet.
Im Prinzip müsste ich nur wissen wie ich eine Variable per klick hochzählen kann ohne die seite zu refreshen bzw. evtl. mit zwischenspeichervariable???
Vielen Dank im vorraus und freundliche Grüße
MArio
Hello,
Schritt 1:
versuche als erstes, den HTML-String für den Kalender durch eine selbst geschriebene Funktion erzeugen zu lassen. Wandele also dein Script in eine Funktion und eine n AUfruf dieser Funktion um.
Schritt 2:
gib nun der Funktion ein Funktionsargument, oder besser zwei, nämlich Jahreszahl und Monatszahl. Lasse die Funktion die HTML-Strings für unterschiedliche Monate berechnen und gib diese dann später aus.
Schritt 3:
Rufe ein Script, das deine neue Funktion enthält, ein paar Kontrollen für Übergabe-Parameter und den Ausgabebefehl für den Funktionsaufruf auf, indem Du z.B.
/kalender.php/?y=2011&m=1
als Request benutzt. In $_GET['y'] sollte nun 2011 stehen und in $_GET['m'] die 1
Noch ein paar Tipps zum Abschluss:
Übergabeparameter muss man immer auf Palusibilität und Gültigkeit prüfen
Ausgaben in einem anderen Kontext als scriptintern müssen immer vorbahndelt werden
http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
/kalender.php/?y=2011&m=1 <-- ja die get methode habe ich verstanden aber wie mache ich das zum beispiel, wenn aus m=1 ein m=2 werden soll??
$monat= $_GET['m'] <- m ausgelesen
IRGENDEINE SCHALTFLÄCHE, LINK etc.
{
$monat++;
/kalender.php/?y=2011&m=$monat
}
so in etwa?
danke für die tips
Schöne grüße aus dem Ruhrpott
MArio
P.S.:
mein bisheriger grade ersatzweise geschriebener kalender sieht so aus:
Kalender
nur jetzt sollen nicht alle monate auf einmal da erscheinen, sondern immer nur drei nebeneinander(voriger, aktueller und nächster Monat) stehen.
vielleicht solltest du dir den aufbau der homepage anschauen, eventuell ist das hilfreich..
code vom aktuellen "Kalender"
<?php
$monat=1;
$monatname = array("1" => "Januar",
"2" => "Februar",
"3" => "März",
"4" => "April",
"5" => "Mai",
"6" => "Juni",
"7" => "Juli",
"8" => "August",
"9" => "September",
"10" => "Oktober",
"11" => "November",
"12" =>"Dezember");
echo "<table border='1' align='center'>";
echo "<tr><td colspan='6' align='center'>".date('Y')."</td></tr>";
echo "<tr >";
while($monat<=12)
{
echo "<td valign='top'>";
$tag=1;
$anztage = date("t",mktime(0,0,0, $monat,date("d"),date("Y")));
echo "<table>";
echo "<tr><td colspan='6' align='center'>$monatname[$monat]</td></tr>";
echo "<tr>";
while($tag <= $anztage)
{
echo "<td>";
if ($monat==date("m") && $tag == date("d"))
{
echo "<b><u> $tag </b></u>";
}
else
{
echo "$tag";
}
echo "</td>";
if (($tag%7) == "0")
{
echo "</tr><tr>";
}
$tag++;
};
echo "</tr>";
echo "</table>";
echo "</td>";
if (($monat%4)== "0")
{
echo "</tr><tr>";
}
$monat++;
}
echo "</tr>";
echo "</table>";
?>
Hello,
dieser Kalender hat eben noch verschiedene kleine Fehler:
Jeder Monat fängt immer in der linken oberen Ecke mit dem 1. an. Das passt dann aber nicht zu einer "Montasg, Dienstag, Mittwoch, ..."-Woche.
Du hast eben keine Funktion für die Darstellung des gewünschten Monats aus dem gewünschten Jahr geschrieben, sondern nur ein Gesamtscript für ein ganzes (festgelegtes) Jahr.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg