2012-11-15 16 views
7

私は実際に百倍のように私のコードをチェックし、しかし、私はエラーを見つけるカント:

私が取得エラー: 解析エラー:構文エラー、/ホーム/ tennoxで予期しない$エンドを/public_html/php/kalender.php on line 46

私はイースターサンデーを計算することを試みましたが、他のスクリプトではうまくいきませんが、このスクリプトでは動作しませんでした。他の方法は、同じものをラウンド!

<?php 
$year = isset($_POST['year']) ? intval($_POST['year']) : date('Y'); 
$months = array("", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); 
$days = array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'); 
$ostern = getOsterSonntag($year); 
?> 
<form action="kalender.php" method="POST" target="_self"> 
<input type="text" name="year" value="<?php echo $year; ?>"> 
</form> 
<table border="1" cellspacing="0"> 
<?php 
for($y=0; $y<32; $y++) { 
    echo "<tr height=\"20\">"; 
    for($x=1; $x<=12; $x++) { 
     echo "<td width=\"5%\">"; 
     $date = strtotime("$y.$x.$year"); 
     $day = date("d", $date); 
     $dayname = $days[date("w", $date)]; 

     if ($y == 0) { 
     echo "<div align=\"center\"><b>$months[$x]</b></div>"; 
     } elseif ($y < date("t",$date) && !($y == 30 && $x == 2)) { 
     if (date("w", $date) == 6 || date("w", $date) == 0) 
      echo "<b>"; 
     echo "$day $dayname"; 
     if ($date == $ostern) 
      echo "(Ostersonntag)"; 
     if (date("w", $date) == 6 || date("w", $date) == 0) 
      echo "</b>"; 
     } else { 
     echo " - "; 
     } 
     echo "</td>"; 
    } 
    echo "</tr>"; 
} 
?> 
</table> 

<?php 
function getOsterSonntag($year) { 
    $a = $year % 19; 
    $b = $year % 4; 
    $c = $year % 7; 
    $k = floor($year/100); 
    $p = floor((8*$k + 13)/25); 
    $q = ($k/4); 
    $d = (19*$a + ((15 + $k - $p - $q) % 30)) % 30; 
    $e = (2*$b + 4*$c + 6*$d + ((4 + $k - $q) % 7)) % 7; 

    $ostern = 22 + $d + $e; 
    if ($ostern > 31){ 
     $ostern -= 31; 
     return strtotime("$ostern.4.$year"); 
    } else 
     return strtotime("$ostern.3.$year"); 
} 
?> 
+2

はエラーなしでローカルにあなたのコードを実行しました。 – sglessard

+0

私の問題を解決しました - 私のftpプログラム(netdrive)は何らかの理由でファイルを切り捨てました。 -.- – TeNNoX

答えて

8

このエラーは、通常、}が見つかりませんでした。すべての中かっこを確認して、同じ番号の{}としてください。ブラケットが一致するコードエディタ(Notepad ++など)を使用すると、これを簡単に行うことができます。

+0

何度もすべての括弧をチェックしました...しかし、私はメモ帳++をダウンロードしてそれを試してみます:) – TeNNoX

11

このエラーは、PHPがコードの解析を終了したが、ページのどこかでシンボルを閉じるのを忘れたことを意味します。引用符、かっこ、かっこまたはカンマを閉じるのを忘れていますか?

これが役に立ちます。

+0

何度もすべての括弧をチェックしています.../ – TeNNoX

3

コードのこの部分では、{elseをelseに追加する必要があります。

$ostern = 22 + $d + $e; 
     if ($ostern > 31){ 
      $ostern -= 31; 
      return strtotime("$ostern.4.$year"); 
     } else 
      return strtotime("$ostern.3.$year"); 

もこの部分では、このようなこの部分のプット{}:

if (date("w", $date) == 6 || date("w", $date) == 0) { 
     echo "<b>"; 
     echo "$day $dayname"; 
} 
+0

いつ{{}を置く必要がありますか? まあ私はそれらをif文に追加しましたが、それでもまだあります: "構文エラー、予期しない$ end in /home/tennox/public_html/php/kalender.php on line 49" – TeNNoX

関連する問題