Zur Navigation

Script an neue PHP Version 5.3.3 anpassen ?

1 Ruhrpott

Hallo,

dieses PHP-Script funktionerte bislang fehlerfrei. Mein Provider hat jedoch die PHP-Einstellungen am Server laut "info.php" geändert ???
Seitdem wird die Seite nicht mehr korrekt angezeigt und es werden stattdessen Code-Fragmente mit ausgegeben.

Liegt es nur an den PHP-Einstellungen auf dem Server (5.3.3) oder am Script selbst (nicht mehr unterstützte "Befehle").

Habe leider keine PHP-Kenntnisse.

Viele Grüße und Dank im voraus:

Ruhrpott

<?
//---------------------------------------------------------------------------------------------------------------------------------------------
function Einkommensteuer($Jahr, $ek, $st, $ki)
{
	$ek = number_format($ek, 0, ",", ".");
	$ek = str_replace(".", "", $ek);
	$ek = str_replace(",", ".", $ek);
	
	if ( $st == 1 ) // Splittingtabelle
		$Einkommen = $ek / 2;
	else
		$Einkommen = $ek;

	if ( $Jahr >= 2010 )
	{

		if ( $Einkommen <= 8004 )
			$Einkommensteuer = 0.;

		else if ( $Einkommen >= 8005 && $Einkommen <= 13469 )
		{
			$x = floor($Einkommen);
			$y = MAX( ($x - 8004), 0 ) / 10000;
			$Einkommensteuer = (912.17 * $y + 1400) * $y;  
		}
		else if ( $Einkommen >= 13470  && $Einkommen <= 52881 )
		{
			$x = floor($Einkommen);
			$z = MAX( ($x - 13469), 0 ) / 10000;
			$Einkommensteuer = (228.74 * $z + 2397) * $z + 1038;
		}
		else if ( $Einkommen >= 52882 && $Einkommen <= 250730 )
		{
			$x = floor($Einkommen);
			$Einkommensteuer = 0.42 * $x - 8172;
		}
		else if ( $Einkommen >= 250731 )
		{
			$x = floor($Einkommen);
			$Einkommensteuer = 0.45 * $x - 15694;
		}
	}
	else if ( $Jahr == 2009 )
	{

		if ( $Einkommen <= 7834 )
			$Einkommensteuer = 0.;

		else if ( $Einkommen >= 7835 && $Einkommen <= 13139 )
		{
			$x = floor($Einkommen);
			$y = MAX( ($x - 7834), 0 ) / 10000;
			$Einkommensteuer = (939.68 * $y + 1400) * $y;  
		}
		else if ( $Einkommen >= 13140  && $Einkommen <= 52551 )
		{
			$x = floor($Einkommen);
			$z = MAX( ($x - 13139), 0 ) / 10000;
			$Einkommensteuer = (228.74 * $z + 2397) * $z + 1007;
		}
		else if ( $Einkommen >= 52552 && $Einkommen <= 250400 )
		{
			$x = floor($Einkommen);
			$Einkommensteuer = 0.42 * $x - 8064;
		}
		else if ( $Einkommen >= 250401 )
		{
			$x = floor($Einkommen);
			$Einkommensteuer = 0.45 * $x - 15576;
		}
	}
	else
	{
		$Einkommensteuer = -1;
		return $Einkommensteuer;
	}

	$Einkommensteuer = floor($Einkommensteuer);

	if ( $st == 1 ) // Splittingtabelle
		$Einkommensteuer *= 2;

	// Soli und Kirche
	$Soli	= Round(MAX(0, MIN(($Einkommensteuer - 972) * 0.2, $Einkommensteuer * 0.055)), 2);
	$Kirche	= Round($Einkommensteuer * $ki / 100, 2);

	$Einkommensteuer += $Soli;
	$Einkommensteuer += $Kirche;
	
	return $Einkommensteuer;
}

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

	// Default-Werte setzen
	if ( isset($_POST['Kaufpreis']) )
		$Kaufpreis = $_POST['Kaufpreis'];
		
	if ( isset($_POST['Einkommen']) )
		$Einkommen = $_POST['Einkommen'];
		
	if ( isset($_POST['AnteilDenkmal']) )
		$AnteilDenkmal = $_POST['AnteilDenkmal'];
		
	if ( isset($_POST['AfASatzLinear']) )
		$AfASatzLinear = $_POST['AfASatzLinear'];

	if ( isset($_POST['Steuertabelle']) )
		$Steuertabelle = $_POST['Steuertabelle'];
	
	if ( isset($_POST['Kirchensteuer']) )	
		$Kirchensteuer = $_POST['Kirchensteuer'];
		
	// Kaufpreis
	if ( !isset($Kaufpreis) )
		$Kaufpreis = 200000;

	$Kaufpreis = str_replace(".", "", $Kaufpreis);
	$Kaufpreis = str_replace(",", ".", $Kaufpreis);
	$Kaufpreis = number_format($Kaufpreis, 0, ",", ".");
	
	// Anteil Denkmalschutzkosten
	if ( !isset($AnteilDenkmal) )
		$AnteilDenkmal = 70;
	
	$AnteilDenkmal = str_replace(".", "", $AnteilDenkmal);
	$AnteilDenkmal = str_replace(",", ".", $AnteilDenkmal);
	$AnteilDenkmal = number_format($AnteilDenkmal, 2, ",", ".");
	
	// Baujahr / $AfASatzLinear
	if ( !isset($AfASatzLinear) )
		$AfASatzLinear = 2;

	// Einkommen
	if ( !isset($Einkommen) )
		$Einkommen = 40000;

	$Einkommen = str_replace(".", "", $Einkommen);
	$Einkommen = str_replace(",", ".", $Einkommen);
	$Einkommen = number_format($Einkommen, 0, ",", ".");
	
	// Steuertabelle
	if ( !isset($Steuertabelle) )
		$Steuertabelle = 0;

	// Kirchensteuer
	if ( !isset($Kirchensteuer) )
		$Kirchensteuer = 9;

?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>

<link href="Steuersparrechner.css" rel="stylesheet" media="screen">

<body>

<!-- Eingabeformular -->

<form action="Steuersparrechner.php" method="POST">

<table border="0" cellpadding="4" cellspacing="8" width="800px">
	
	<tr >
		<td  colspan=2>
			<h1>Berechnung der Steuerersparnis durch den Erwerb einer denkmalgesch&uuml;tzten Immobilie</h1>
		</td>
	</tr>

	<tr class=title>
		<td  colspan=2>
			<b>Angaben zum Objekt</b><br>
		</td>
	</tr>

	<tr class=Beschriftung>
		<td class=Beschriftung>
			<b>Gesamtkaufpreis in Euro</b><br>
			<small>Summe aus Grundst&uuml;ck, Altbausunbstanz und Sanierungskosten</small>
		</td>
		<td class=Werte>
			<input class=Money name="Kaufpreis" value="<? echo $Kaufpreis; ?>" size="12" type="text">
		</td>
	</tr>

	<tr class=Beschriftung>
		<td class=Beschriftung>
			<b>Anteil Denkmalschutzkosten in Prozent</b><br>
			<small>Wie hoch ist der Anteil der Sanierungskosten?</small>
		</td>
		<td class=Werte>
			<input class=Money name="AnteilDenkmal" value="<? echo $AnteilDenkmal ;?>" size="12" type="text">
		</td>
	</tr>

	<tr class=Beschriftung>
		<td class=Beschriftung>
			<b>Baujahr der Immobilie (Altbausubstanz)</b><br>
			<small>Geb&auml;ude die vor 1925 errichtet wurden, werden mit 2.5&#x25; AfA abgeschrieben</small>
		</td>
		<td class=Werte>
		 	 <select name='AfASatzLinear' size='2'>
	 		 	<option value=2.5<? if ( $AfASatzLinear==2.5) echo " selected"; ?>>vor 1925</option>
	 	 		<option value=2<? if ( $AfASatzLinear==2) echo " selected"; ?>>ab 1925</option>
			  </select>
		</td>
	</tr>

	<tr class=title>
		<td  colspan=2>
			<b>Angaben zum Erwerber</b><br>
		</td>
	</tr>

	<tr class=Beschriftung>
		<td class=Beschriftung>
			<b>zu versteuerndes Jahreseinkommen in Euro</b><br>
			<small>&nbsp;</small>
		</td>
		<td class=Werte>
			<input class=Money name="Einkommen" value="<? echo $Einkommen; ?>" size="12" type="text">
		</td>
	</tr>

	<tr class=Beschriftung>
		<td class=Beschriftung>
			<b>Steuertabelle</b><br>
			<small>Verheiratete Erwerber Splittingtabelle, die anderen Grundtabelle</small>
		</td>
		<td class=Werte>
		 	 <select name='Steuertabelle' size='2'>
	 		 	<option value=0<? if ( $Steuertabelle==0) echo " selected"; ?>>Grundtabelle</option>
	 	 		<option value=1<? if ( $Steuertabelle==1) echo " selected"; ?>>Splittingtabelle</option>
			  </select>
		</td>
	</tr>

	<tr class=Beschriftung>
		<td class=Beschriftung>
			<b>Kirchensteuer</b><br>
			<small>Je nach Bundesland, Bayern und Baden-Württemberg 8&#x25;, alle anderen 9&#x25;</small>
		</td>
		<td class=Werte>
		 	 <select name='Kirchensteuer' size='3'>
	 		 	<option value=0<? if ( $Kirchensteuer==0) echo " selected"; ?>>keine</option>
	 		 	<option value=8<? if ( $Kirchensteuer==8) echo " selected"; ?>>8&#x25;</option>
	 		 	<option value=9<? if ( $Kirchensteuer==9) echo " selected"; ?>>9&#x25;</option>
			  </select>
		</td>
	</tr>

	<tr>
		<td colspan=2>
			<input name="abschicken" value="Berechnen" type="submit">
		</td>
	</tr>

	<tr class=title>
		<td  colspan=2>
			<b>Grundlagen der Berechnung</b><br>
		</td>
	</tr>

	<tr class=Ergebnis>
		<td  colspan=2>
<? 
	if ( isset($_POST['Kaufpreis']) )
		$Kaufpreis = $_POST['Kaufpreis'];
		
	if ( isset($_POST['Einkommen']) )
		$Einkommen = $_POST['Einkommen'];
		
	if ( isset($_POST['AnteilDenkmal']) )
		$AnteilDenkmal = $_POST['AnteilDenkmal'];
		
	if ( isset($_POST['AfASatzLinear']) )
		$AfASatzLinear = $_POST['AfASatzLinear'];

	if ( isset($_POST['Steuertabelle']) )
		$Steuertabelle = $_POST['Steuertabelle'];

	if ( isset($_POST['Kirchensteuer']) )	
		$Kirchensteuer = $_POST['Kirchensteuer'];		
		
	$Kaufpreis = str_replace(".", "", $Kaufpreis);
	$Kaufpreis = str_replace(",", ".", $Kaufpreis);

	$Einkommen = str_replace(".", "", $Einkommen);
	$Einkommen = str_replace(",", ".", $Einkommen);

	$AnteilDenkmal = str_replace(".", "", $AnteilDenkmal);
	$AnteilDenkmal = str_replace(",", ".", $AnteilDenkmal);	
	
	$BmDenkmal		= $Kaufpreis * $AnteilDenkmal / 100;
	
	if ( $Steuertabelle == 0 ) // Grundtabelle
		$bVerheiratet = " nicht ";
	else
		$bVerheiratet = " ";

	echo "Ein $bVerheiratet verheirateter Erwerber, mit einem zu versteuernden Jahreseinkommen ".
		"in H&ouml;he von Euro ".number_format($Einkommen, 0, ",", "."). ", investiert in eine vermietete ".
		"Immobilie einen Gesamtkaufpreis in H&ouml;he von Euro  ".number_format($Kaufpreis, 0, ",", "."). 
		" zuz&uuml;glich Kaufnebenkosten.<br><br>"	.
		"Die Bemessungsgrundlage f&uuml;r die AfA von Baudenkmalen wird mit Euro ".
		number_format($BmDenkmal, 0, ",", ".")."  (".number_format($AnteilDenkmal, 2, ",", ".").
		"&#x25; des Gesamtkaufpreises) angenommen.<br><br>";
		
	if ( $AfASatzLinear == 2.5)
		echo "Das urspr&uuml;ngliche Baujahr des Objekts liegt vor 1925. ";
	else
		echo "Das urspr&uuml;ngliche Baujahr des Objekts liegt im Jahr 1925 oder sp&auml;ter. ";
		
		echo "Als Bemessungsgrundlage f&uuml;r ".
		"die lineare AfA der Altbausubstanz nehmen wir die H&auml;lfte des verbleibenden Gesamtkaufpreises an. ".
		"Der Rest enf&auml;llt auf das Grundst&uuml;ck und wird nicht abgeschrieben.<br><br>";
?>
		</td>
	</tr>

	<tr>
		<td colspan=2>
		
 <!-- Ergebnistabelle -->
<table class=lightshadow bgcolor="FFFFFF" border=0 cellpadding="4" cellspacing="1" width="800px">

	<!-- Titelzeile -->
	<tr class=title>
		<td align=center>
			Jahr
		</td>
		<td >
			Einkommen
		</td>
		<td >
			Steuerlast
		</td>
		<td >
			AfA Denkmalschutz
		</td>
		<td >
			<? echo "AfA Altbau ".str_replace(".", ",", $AfASatzLinear)."&#x25;"; ?>
		</td>
		<td >
			Einkommen neu
		</td>
		<td >
			Steuerlast neu
		</td>
		<td >
			Steuerersparnis
		</td>
	</tr>
	
<? 
	$AktuellesJahr		= date("Y");
	
	$AfALinear			= ($Kaufpreis - $BmDenkmal) / 2 * $AfASatzLinear / 100; // halber Rest vom Kaufpreis, Rest = Grundst&uuml;ck

	// acht Jahre 9%
	$AfADenkmal		= $BmDenkmal * 0.09;
		
	$EinkommenNeu	= $Einkommen - ( $AfALinear + $AfADenkmal );
	
	for ( $Jahr = $AktuellesJahr; $Jahr <= $AktuellesJahr + 7; $Jahr++ )
	{
		if ( $Jahr % 2 == 0 )
			$TRClass = grayshine;
		else
			$TRClass = normalShine;
			
		$Steuerlast			= Einkommensteuer($Jahr, $Einkommen, $Steuertabelle, $Kirchensteuer);
		$SteuerlastNeu		= Einkommensteuer($Jahr, $EinkommenNeu, $Steuertabelle, $Kirchensteuer);
		$Steuerersparnis	= $Steuerlast - $SteuerlastNeu;
		
		// Summen bilden
		$sumSteuerlast			+= $Steuerlast;
		$sumAfALinear			+= $AfALinear;
		$sumAfADenkmal		+= $AfADenkmal;
		$sumSteuerlastNeu		+= $SteuerlastNeu;
		$sumSteuerersparnis	+= $Steuerersparnis;
		
		echo "<tr class=$TRClass>"; 
		echo "<td align=center>$Jahr</td>"; 
		echo "<td align=right>".number_format($Einkommen, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($Steuerlast, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($AfADenkmal, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($AfALinear, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($EinkommenNeu, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($SteuerlastNeu, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($Steuerersparnis, 0, ",", ".")."</td>"; 
		echo "</tr>"; 
	}
	
	// vier Jahre 7%
	$AfADenkmal		= $BmDenkmal * 0.07;
		
	$EinkommenNeu	= $Einkommen - ( $AfALinear + $AfADenkmal );
	
	for ( $Jahr = $AktuellesJahr + 8; $Jahr <= $AktuellesJahr + 11; $Jahr++ )
	{
		if ( $Jahr % 2 == 0 )
			$TRClass = grayshine;
		else
			$TRClass = normalShine;
			
		$Steuerlast			= Einkommensteuer($Jahr, $Einkommen, $Steuertabelle, $Kirchensteuer);
		$SteuerlastNeu		= Einkommensteuer($Jahr, $EinkommenNeu, $Steuertabelle, $Kirchensteuer);
		$Steuerersparnis	= $Steuerlast - $SteuerlastNeu;
		
		// Summen bilden
		$sumSteuerlast			+= $Steuerlast;
		$sumAfALinear			+= $AfALinear;
		$sumAfADenkmal		+= $AfADenkmal;
		$sumSteuerlastNeu		+= $SteuerlastNeu;
		$sumSteuerersparnis	+= $Steuerersparnis;
		
		echo "<tr class=$TRClass>"; 
		echo "<td align=center>$Jahr</td>"; 
		echo "<td align=right>".number_format($Einkommen, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($Steuerlast, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($AfADenkmal, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($AfALinear, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($EinkommenNeu, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($SteuerlastNeu, 0, ",", ".")."</td>"; 
		echo "<td align=right>".number_format($Steuerersparnis, 0, ",", ".")."</td>"; 
		echo "</tr>"; 
	}

	// Summenzeile
	echo "<tr class=sum>"; 
	echo "<td align=center>Summen</td>"; 
	echo "<td align=center>&nbsp;</td>"; 
	echo "<td align=right>".number_format($sumSteuerlast, 0, ",", ".")."</td>"; 
	echo "<td align=right>".number_format($sumAfADenkmal, 0, ",", ".")."</td>"; 
	echo "<td align=right>".number_format($sumAfALinear, 0, ",", ".")."</td>"; 
	echo "<td align=center>&nbsp;</td>"; 
	echo "<td align=right>".number_format($sumSteuerlastNeu, 0, ",", ".")."</td>"; 
	echo "<td align=right>".number_format($sumSteuerersparnis, 0, ",", ".")."</td>"; 
	echo "</tr>"; 
		
?>	



</form>

</body></html>

22.05.2012 19:01

2 Jörg Kruse

es werden stattdessen Code-Fragmente mit ausgegeben

Kannst du die einen Auschnitt dieser Code-Fragemente posten?

Werden auch irgendwelche Fehlermeldungen ausgegeben - gegebenenfalls sieht man die nur in der Quelltextansicht des Browsers

Bei mir werden unter PHP 5.3.3 lediglich Fehler des Error-Level Notice ausgegeben - die sollten aber nicht zu schwerwiegenden Fehler führen

Was für einen Wert zeigt denn error_reporting in der info.php an?

23.05.2012 12:55

3 Ruhrpott

Hallo Jörg,

vielen Dank für die schnell angebotene Hilfe.

Das Problem hat sich zwischenzeitlich von selbst gelöst: Der Provider hat dankenswerterweise an den Servereinstellungen geschraubt und das Script läuft nun wieder.

Mit freundlichen Grüßen

Ruhrpott

PS: Habe ein google+ gefällt mir gesetzt ;-)

25.05.2012 13:54

4 Rudy

es werden stattdessen Code-Fragmente mit ausgegeben

Du beginnst jeden PHP-Code-Block mit <? statt mit <?php, was die PHP-Einstellung short_open_tag voraussetzt (siehe phpinfo()). Der Code dürfte mit PHP 5.3.3 genauso laufen. <? zu verwenden ist zwar praktisch, aber der Code wird dadurch weniger portabel - ich würde es entsprechend umschreiben.

PS: das schließende ?> benötigst Du nur wenn danach noch HTML-Code folgt, am Ende der Datei ist es besser auszusparen (also einfach mit PHP-Code beenden), da sonst evtl. ungewollte Ausgaben entstehen, z.B. in Konfigurations-Dateien vor session_start, die Du mit include oder require einbindest.

20.06.2012 10:10 | geändert: 20.06.2012 10:15

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]