Kalender mit Buttons

soa

Erfahrenes Mitglied
Hallo zusammen,

ich habe einen Kalender, der soweit auch schon den aktuellen Monat auswirft.
Nun habe ich aber 2 Buttons "vor" uns "zurück", die bei Click jeweils den nächsten
Monat aufrufen sollen.

Ich weiß nicht so genau, wie das am Besten umzusetzen ist...

Code:
<?php

define("EINTAG", (60*60*24) ); 
if ( ! checkdate( $monat, 1, $jahr ) ) 
    { 
    $datum = getdate(); 
    $monat = $datum[mon]; 
    $jahr  = $datum[year]; 
    } 
$start = mktime ( 0, 0, 0, $monat , 1, $jahr ); 
$ersterArr = getdate($start); 

$monatsname = array();
			$monatsname[1] = "Januar";  
			$monatsname[2] = "Februar"; 
			$monatsname[3] = "M&auml;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";
			
 echo'<form>';
echo'<input type ="button" value = "<<" name = "zurueck" onClick="<?php $monat = $datum[mon] -1 ?>" >&nbsp;&nbsp;&nbsp;
      &nbsp;&nbsp;&nbsp; ';
      
      //Ausgabe des aktuellen Monats + Jahresangabe
      echo $monatsname[$monat];
      echo "&nbsp; ";
      echo $jahr;		
			
      echo'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      <input type ="button" value = ">>"name ="vor" onClick="pruefButton()"><br>';
      echo'</form>';

Es ist so, dass wenn die Variable $monat von $monat = $datum[mon]; auf
$monat = $datum[mon] + 1; gesetzt wird, dann wird Juni aufgerufen.

Nun wollte ich die Variable Monat um 1 erhöhen, wenn auf vor geklickt wird.
Das geht leider nicht. Kann man das so nicht machen?


Gruß
SOA
 
Dir schein nicht ganz klar zu sein, was PHP ist.

Als rein serverseitige Sprache wird PHP ausschließlich auf dem Server ausgeführt
.

Du kannst Daten jeglicher Art nur über Formulare oder die URL selbst übertragen. Wenn sich etwas ändert musst du das dem Server über den Aufruf einer URL oder über das Absenden eines Formulars mitteilen!
Dein onClick="<?php $monat = $datum[mon] -1 ?>" bewrikt rein gar nichts, außer, dass es vom Server wie ganz normales HTML in den onClick geschrieben wird und dort einen JavaScript-Fehler verursacht sobald jemand deine button klickt (onclick ist ein JavaScript-Event).

Ich empfehle dir Links, in deren href du einfach die Variable schreibst. Das sähe dann so aus:
HTML:
<a href="datei.html?variable=wert"></a>
Dann kannst du damit auf die variable zugreifen:
PHP:
<?php $_GET["variable"] ?>
Ich an deiner Stelle würde Prüfen ob $_GET["variable"] gesetzt ist. Wenn ja dann $monat = datum[mon] - 1 , wenn nein $monat = $daum[mon] . Das ist nur für den zurück-Link, aber ich denke das Prinzip ist ersichtlich. Diese if-else-Abfrage muss dann an den Anfang deines Scripts anstatt der Zeile $monat = $datum[mon]; .

Das sind aber absolute PHP-Basics und so ein Fehler ist eigentlich schon richtig peinlich, weil Datenübertragung mit GET oder POST mit absoluter Sicherheit in jedem Buch und Tutorial erklärt wird.
 
Zuletzt bearbeitet:
Ja, da hast du wohl recht... Ziemlich blöd von mir.
Weiß auch nicht wo ich meinen Kopf hatte...

So funktioniert es ganz gut. Vielen Dank



Code:
define("EINTAG", (60*60*24) ); 
$datum = getdate(); 


if      (isset($_GET['vordatum']))
         $monat = $_GET['vordatum']; 
    
else if(isset($_GET['nachdatum']))
        $monat = $_GET['nachdatum']; 
       else
        $monat = $datum[mon]; 
  

    $jahr  = $datum[year]; 
    
 
   
$start = mktime ( 0, 0, 0, $monat , 1, $jahr ); 
$ersterArr = getdate($start); 




//----------------------------------------------------------------------------------------------

$monatsname = array();
			$monatsname[1] = "Januar";  
			$monatsname[2] = "Februar"; 
			$monatsname[3] = "M&auml;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";
			
			$vor_monat = $monat -1;
		  echo( "<td align=\"left\"><a href=\"?vordatum=".$vor_monat."\">&lt;&lt;</a></td>");
		  
      
      //Ausgabe des aktuellen Monats + Jahresangabe
      echo $monatsname[$monat];
      echo "&nbsp; ";
      echo $jahr;	
      
      $nach_monat = $monat +1;
		  echo( "<td align=\"left\"><a href=\"?nachdatum=".$nach_monat."\">&gt;&gt;</a></td>");
 
Zur Optimierung:
Du kannst das isset() in den if-Abfragen wegglassen. 60*60*24 ist nach Adam Riese 84600. Auch lässt sich der HTML-Code außerhalb des PHP einfach reinschreiben (so sparst du dir das echo und das escapen sowie ein wenig Ärger). Und schreib doch statt nochmal Variablen zu kalkulieren einfach .($monat +1). bzw. .($monat -1). in den href des Links Außerdem sparst du dir bei dieser Notation des Arrays 50% der Zeichen gegenüber deiner:
PHP:
$monatsname = array(
        	1 => "Januar",
        	"Februar",
        	"M&auml;rz",
        	"April",
        	"Mai",
        	"Juni",
        	"Juli",
        	"August",
        	"September",
        	"Oktober",
        	"November",
        	"Dezember"
 );
Ansonsten und das ist eigentlich der Grund warum ich diesen Post schreibe - wollte nur keinen Einzeiler schreiben daher der ganze Optimierungskram - markier' doch bitte diesen Thread noch als "erledigt". Danke!
 
Zuletzt bearbeitet:
Zurück