2012-11-15 15 views
7

मैं वास्तव में एक सौ गुना की तरह मेरे कोड की जाँच की, लेकिन मैं नहीं कर सकते त्रुटि पाते हैं:

त्रुटि मैं मिलता है: पार्स त्रुटि: सिंटैक्स त्रुटि, में/घर/tennox अप्रत्याशित $ अंत /public_html/php/kalender.php लाइन 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

किसी भी त्रुटि के बिना स्थानीय स्तर पर अपने कोड Ran। – sglessard

+0

मैंने अपनी समस्या हल की - मेरा एफटीपी प्रोग्राम (नेटड्राइव) ने किसी कारण से फाइल को छोटा कर दिया। -.- – TeNNoX

उत्तर

8

यह त्रुटि आमतौर पर इसका मतलब है कि आप } चूक गए हैं। अपने सभी ब्रेसिज़ की जांच करें और सुनिश्चित करें कि आपके पास { की संख्या } है - ब्रैकेट मिलान (जैसे नोटपैड ++) वाला कोड संपादक इसे बहुत आसान बना सकता है।

+0

मैंने कई बार ब्रैकेट की जांच की है ... लेकिन मैं नोटपैड ++ डाउनलोड करूंगा और कोशिश करूँगा :) – TeNNoX

11

उस त्रुटि का अर्थ है कि PHP ने आपके कोड का विश्लेषण करना समाप्त कर दिया है, लेकिन आप अपने पृष्ठ में कहीं भी एक प्रतीक बंद करना भूल गए हैं। या तो आप उद्धरण, ब्रैकेट, कोष्ठक या अल्पविराम को बंद करना भूल गए हैं।

उम्मीद है कि इससे मदद मिलती है।

+0

मैंने कई ब्रैकेट को कई बार चेक किया ...:/ – TeNNoX

3

आपके कोड के इस हिस्से में, मुझे लगता है कि आपको अन्य के लिए {} जोड़ना चाहिए।

$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

तो मुझे कब {} और कब नहीं रखना है? वैसे मैंने उन्हें प्रत्येक कथन में जोड़ा, लेकिन अभी भी है: "वाक्यविन्यास त्रुटि, लाइन 49 पर /home/tennox/public_html/php/kalender.php में अप्रत्याशित $ end" – TeNNoX

संबंधित मुद्दे