Fatal error: Function name must be a string in

Fruitgum

Erfahrenes Mitglied
Hallo,


mir wird folgender Fehler ausgegeben:

Fatal error: Function name must be a string in /mnt/web7/53/89/51966989/htdocs/belegung/kalenderrpc.php on line 37

das wäre dann dieser ausschnitt, die fehler zeile wäre "$jahr = $_POST('jahr');"
PHP:
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();

}

Das passiert bei einer einer Weiterblätterfunktion und wird über geben mit
HTML:
<a href="#" onclick="updateKalender('2008','12','1')">

ein Javascript gibt es weiter:
Javascript:
HTML:
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);
}

Und verweisst oben auf den ersten script, und die funktion dafür wird von cal.inc.php übergeben und er fehler liegt an "mktime"

funktion:
PHP:
  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;
  }


// .....


// und die funktion zum weiterblättern

// 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>" );

ich verstehe den Fehler nicht?

achso hier der Link zum testen:
http://www.baabe-ostseestern.de/kalender/kalender.php


Grüße
 
Stimmt, das ist ja echt doof... suche schon seit heute früh wie ein Blöder... :rolleyes:

gut habe nun folgendes Problem:


Fehler:

Fatal error: Call to a member function zeigeKalender() on a non-object in /mnt/web7/53/89/51966989/htdocs/belegung/kalenderrpc.php on line 44

Das ist der Code mit Zeile 44
PHP:
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(); // <-- Zeile 44

}



und jetzt noch die function zeigeKalender aus der cal.inc.php

PHP:
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;
  }

muss was definiert werden?


Grüße!
 
PHP:
$kalender->zeigeKalender(); // <-- Zeile 44

Das "k" von Kalender ist klein geschrieben.
 
Man ist sowas nervig... Xmal drüber und nie gesehen... Ist zum Mäuse melken! :-(


Ich danke euch! Das Ding läuft... Na ja beim weiter blättern werden die Monate nicht mehr angezeigt... Aber das finde ich schon...
 
Zurück