Yadgar: Ich blicke jetzt überhaupt nicht mehr durch...

Hi(gh)!

Gestern funktionierte es noch, heute nicht mehr...

  
<?php  
  require("head_schwingungen");  
  
  function makelist($year)  
  {  
    echo "<h2>".$year."</h2>";  
    if ($year == 1981)  
      $headline = "Pilotsendung ".$year;  
    else  
      $headline = $year;  
    head("Schwingungen: ".$headline);  
    echo "<body>";  
    echo "  <h2>".$headline."</h2>";  
  }  
?>  

Der Aufruf der Funktion sieht so aus:

<?php  
  require("makelist.php");  
  
  makelist(1981);  
?>  

Und dann noch head_schwingungen.php:

<?php  
  function head($title)  
  {  
    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"';  
    echo '  "http://www.w3.org/TR/html4/loose.dtd">';  
    echo '<html>';  
    echo '  <head>';  
    echo '    <title>'.$title.'</title>';		  
    echo '    <meta http-equiv="Content-Type" content="text/html; charset=utf8">';  
    echo '    <style>';  
    echo '      p { font-size:12px }';  
    echo '      td { vertical-align:top }';  
    echo '      th { text-align:left }';  
    echo '    </style>';  
    echo '  </head>';  
  }  
	  
  function dberror()  
  {  
    if (mysql_errno())  
    {  
      switch(mysql_errno())  
      {  
        case 1062:  
          die ("Ein Eintrag mit diesen Daten existiert bereits! Bitte korrigieren Sie Ihre Eingabe!<br>");  
        break;  
        default:  
          die (mysql_errno().": ".mysql_error()."<br>");  
        break;  
      }  
    }  
  }  
  
  function dbcall()  
  {  
    $db = mysql_connect("localhost", "root", "Menkalinan");  
    mysql_set_charset('utf8', $db);  
    dberror();  
    $db = mysql_select_db("schwingungen");  
    dberror();  
  }  
	  
  function dateconv($datum)  
  {  
    $datum = explode("-", $datum);  
    $datum = ltrim($datum[2], '0').".".ltrim($datum[1], '0').".".$datum[0];  
    return $datum;  
  }  
?>

Das Fenster bleibt leer, nicht einmal die erste <h2>-Zeile (die ich zum Test an den Beginn der Funktion gestellt habe) wird angezeigt! Dabei habe ich seit gestern abend am fraglichen Teil des Programms nichts verändert! Bin ich zu dumm zum Umgang mit Computern? Gibt es für PHP keinen vernünftigen Debugger? Und wenn doch, vielleicht auch einen, den ich sofort verstehe, nicht erst nach etlichen Stunden Manual-Lektüre?

Bis bald im Khyberspace!

Yadgar

Now playing: Vor all den Jahren (Stahlnetz)

  1. Tach!

    Das Fenster bleibt leer, nicht einmal die erste <h2>-Zeile (die ich zum Test an den Beginn der Funktion gestellt habe) wird angezeigt! Dabei habe ich seit gestern abend am fraglichen Teil des Programms nichts verändert!

    Vielleicht kommt es gar nicht zu seinem Aufruf, weil irgendwas anderes kaputt ist.

    Gibt es für PHP keinen vernünftigen Debugger?

    Als ich das Zend Studio vor ein paar Jahren verwendete, hatte der einen Debugger dabei. Allerdings konnte man damit nur dann schrittweise durchs Programm leufen, wenn kein Webserver im Spiel war, sprich: das Zend Studio das PHP-Script direkt starten konnte. (Das geht dann nicht mehr, wenn man Formulardaten einlesen will.)

    Und wenn doch, vielleicht auch einen, den ich sofort verstehe, nicht erst nach etlichen Stunden Manual-Lektüre?

    Für den Hausgebrauch gibt es einfache Mittel.

    • var_dump() zeigt alle Variableninhalte (und Funktionsergebnisse, etc.) ausführlich an, inklusive Typ.
    • print_r() ist bei Arrays und Objekten übersichtlicher zu lesen, lässt dafür aber die Typ-Informationen weg.
    • die('irgendwas') kann man einbauen, um den Programmablauf zu verfolgen. Man fängt vorn an und setzt es mit jedem Durchlauf etwas weiter nach hinten. Stirbt das Programm an der Stelle und wird das 'irgendwas' ausgegeben, war bis dahin alles in Ordnung. Fehlt das 'irgendwas', dann kommt der Ablauf nicht an dieser Stelle an und der Fehler sitzt zwischen dieser Stelle und dem vorherigen Punkt. Oder es hat sich im Quelltext der Seite versteckt und wird nur nicht vom Browser angezeigt, dann hilft aber ein Blick in die Quelltextansicht.

    dedlfix.

    1. hi,

      Tach!

      Für den Hausgebrauch gibt es einfache Mittel.

      • var_dump() zeigt alle Variableninhalte (und Funktionsergebnisse, etc.) ausführlich an, inklusive Typ.
      • print_r() ist bei Arrays und Objekten übersichtlicher zu lesen, lässt dafür aber die Typ-Informationen weg.
      • die('irgendwas') kann man einbauen, um den Programmablauf zu verfolgen. Man fängt vorn an und setzt es mit jedem Durchlauf etwas weiter nach hinten. Stirbt das Programm an der Stelle und wird das 'irgendwas' ausgegeben, war bis dahin alles in Ordnung. Fehlt das 'irgendwas', dann kommt der Ablauf nicht an dieser Stelle an und der Fehler sitzt zwischen dieser Stelle und dem vorherigen Punkt. Oder es hat sich im Quelltext der Seite versteckt und wird nur nicht vom Browser angezeigt, dann hilft aber ein Blick in die Quelltextansicht.

      Und wenn es mal Aufrufe per AJAX sein sollen, hilft es auch, die Ausgabe der von dedlfix genannten Funktionen (bis auf die() ) in eine Datei zu schreiben.
      Aber auch bei einigen Designs ist das damit einfacher.

      Auch der Error-Log (bei erhöhter Gesprächigkeit) hilft hin und wieder weiter.

      Gruß Niklas

      --
      Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.
  2. Hallo,

    require("head_schwingungen");

    wie, einfach so, ohne PHP-Extension?

    Das Fenster bleibt leer

    Weil die erforderliche ("required") include-Datei nicht gefunden wird?

    Ciao,
     Martin

    --
    Kennst du ein eisenhaltiges Abführmittel mit zwölf Buchstaben? - Handschellen.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(