Erweiterung der Ausgabe

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
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&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";

    $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')\">&laquo;</a></td>" );
    
    // Aktuell gewählter Monat
    echo( "<td style=\"text-align:center\">" . $monatsname[$datum["mon"]] . "&nbsp;" . $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')\">&raquo;</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>&nbsp;</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>&nbsp;</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 . "')\">&nbsp;" . $tag . "&nbsp;</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:&nbsp;</td><td><input type="text" id="$startzeit" value="$line[startzeit]" /> </td></tr>
<tr><td>Ende:&nbsp;</td><td><input type="text" id="$endzeit" value="$line[endzeit]" /> </td></tr>
<tr><td>Titel:&nbsp;</td><td><input type="text" id="$titel" value="$line[titel]" /> </td></tr>
<tr><td>Notizen:&nbsp;</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 :rolleyes:
 
Zurück