Phil Z.: Nach dyn. erzeugtem Inhalt, keine HTML Ausgabe mehr

Hallo,

ich hatte das Problem hier schon des öfteren angesprochen, ich hole Daten(Newsberichte) aus einer MySQL-DB und gebe sie per echo und HTML-Formatiert in einer Schleife aus.
Eigendlich total simpel aber aus irgendeinem Grund, wird alles was nach dem PHP Skript kommen soll nicht mehr ausgegeben.

<?php  
echo "<h2>Kommentare:</h2>";  
// Kommentare auslesen  
$result=mysql_query("SELECT name,email,url,title,article,num,numfromcom,  
                         DATE_FORMAT(datum ,'%W %d.%M %Y') AS Datum  
      FROM comments  
                     WHERE num='".$id."'") or die(mysql_error());  
  
 // Ergebnis holen  
while($resultset = mysql_fetch_array($result) or die(mysql_error())) {  
 $datum=change_date($resultset['Datum']); // Datum formatieren  
 // Ausgabe  
 echo "  
  <div class='comTitle'>Am  
  ".$datum." um ".  
  htmlentities($resultset['Datum'])." \"".  
  htmlentities($resultset['title'])."\" von <div class='under'><a href='mailto:".  
  htmlentities($resultset['email'])."' class='link3'>".  
  htmlentities($resultset['name'])." <a href='".  
  $resultset['url']."' class='hp'><img src='img/icons/home.png' alt='Zur Homepage von ".htmlentities($resultset['name'])."'/></a></div>  
  <p class='comContent'>".nl2br(htmlentities(stripslashes($resultset['article'])))."</p></div>  
  ";  
}  
  
mysql_free_result($result); // Aufräumen..  
?>

Danach kommt dann halt noch ein Kommentar-Formular. Aber es wird nicht angezeigt.
Wenn ich das PHP Skript wegmache, wirds angezeigt.
Ich weiß nicht woran das liegt, es kommt auch keine Fehlermeldung oder sonstwas, es wird einfach nichts, unterhalb des Skriptes angezeigt.
Es wird auch nicht mit Floats oder so gearbeitet.

mfg

Phil Z.

  1. echo $begrüßung;

    Eigendlich total simpel aber aus irgendeinem Grund, wird alles was nach dem PHP Skript kommen soll nicht mehr ausgegeben.
    while($resultset = mysql_fetch_array($result) or die(mysql_error())) {

    Wenn mysql_fetch_array() keine weiteren Datensätze mehr finden kann, gibt es false zurück. Dies ist kein Fehler sondern gewünschtes Verhalten.

    Bei boolschen Ausdrücken wird, sobald das Ergebnis eindeutig ist, der restliche Teil nicht mehr ausgeführt. Wenn noch Datensätze vorhanden sind, entspricht das einem true, die Anweisung nach or wird nicht mehr ausgewertet. Am Ende der Datensätze gibt es nun ein false, und der Teil nach dem or wird ausgeführt. Da aber auch kein Fehler vorlag, liefert mysql_error() einen Leerstring zurück, und das die() hat nichts zum Anzeigen.

    Beim Fetchen will man solange Datensätze abholen, bis keine mehr vorhanden sind. Wenn beim Fetchen ein false zurückkommt, will man daraufhin also nicht das Programm beenden, sondern es der while-Schleife durchreichen, damit diese sich beenden und die Steuerung an die nachfolgenden Anweisungen weitergeben kann.

    echo "$verabschiedung $name";

    1. Hello,

      Spielverderber ;-))

      Beim Fetchen will man solange Datensätze abholen, bis keine mehr vorhanden sind. Wenn beim Fetchen ein false zurückkommt, will man daraufhin also nicht das Programm beenden, sondern es der while-Schleife durchreichen, damit diese sich beenden und die Steuerung an die nachfolgenden Anweisungen weitergeben kann.

      Damit das nicht falsch verstanden wird:

      Auch beim mysql_fetch_*() sollte man die MySQL-Statusmeldung berücksichtigen.
      Die kommt aber erst zum Tragen, wenn mysql_errno() !== 0 ist.

      Dann ist beim fetch nämlich FALSE aufgetreten, WEIL ein MySQL-Fehler vorliegt.

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

      1. echo $begrüßung;

        Auch beim mysql_fetch_*() sollte man die MySQL-Statusmeldung berücksichtigen.
        Die kommt aber erst zum Tragen, wenn mysql_errno() !== 0 ist.

        Dann ist beim fetch nämlich FALSE aufgetreten, WEIL ein MySQL-Fehler vorliegt.

        Das kann aber eigentlich nur dann auftreten, wenn man mit einer ungepufferten Abfrage hantiert. Ansonsten hat MySQL ja gar nichts mehr zu melden, weil der Fetch-Prozess ja schon bei mysql_query() und im Hintergrund erfolgt ist.

        Ist dir das schon passiert? Die Handbuchseiten zu den Fetch-Funktionen erwähnen mit keiner Silbe, dass es dabei zu Fehlern kommen kann, und wie diese signalisiert werden.

        echo "$verabschiedung $name";

        1. Hello,

          Ist dir das schon passiert? Die Handbuchseiten zu den Fetch-Funktionen erwähnen mit keiner Silbe, dass es dabei zu Fehlern kommen kann, und wie diese signalisiert werden.

          Ja, mit einer älteren PHP-Version (irgendwas mit 4.01 o.ä.)
          Da gab es Speicherprobleme und die führten bei größeren Resultsets dann regelmäßig dazu, dass der Ressource-Paramter ungültig wurde mitten in der Abfrage.

          Das ist jetzt natürlich eine recht theoretische Situation. Bei ordentlich eingerichten Rechnern mit neuer(erer) PHP-Version, USV usw. sollte da nix mehr passieren...

          Harzliche Grüße vom Berg
          http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau

    2. Hi.

      _DANKE_!!!!!!!

      Du rettest mir mein Leben(ich war kurz davor zu springen)
      Seit Tagen hän gich an diesem Problem fest,

      aber was ist denn nun zum beipsiel hier falsch:

        
      $result=mysql_query("SELECT ID, PID, TID,  
             DATE_FORMAT(Zeitpunkt,'%T') AS Uhrzeit,  
                               DATE_FORMAT(Zeitpunkt,'%W %d.%M %Y') AS Datum,  
                                  AutorName, Betreff, Text, num  
            FROM artikel  
                           ORDER BY Zeitpunkt DESC LIMIT ".$artikel_anz_start.", $artikel_anz_end") or die(mysql_error());  
        
        
      // Gibt es ein Ergebnis?  
      if(!$result) die("Die Datenbank konnte nicht abgefragt werden");  
        
      while($tmp = mysql_fetch_array($result)) {  // Ergebnis holen  
        $forumarray[ $tmp["ID"] ] = $tmp;          // Ergebnis im Array ablegen  
        $kindarray[ $tmp["PID"] ][] =  $tmp["ID"]; // Vorwärtsbezüge konstruieren  
      }  
        
      mysql_free_result($result);  
        
      if(is_array($kindarray)) {  
           foreach($kindarray[0] as $thread) { // Für jedes Posting der obersten Ebene...  
        zeichneBaum($thread, $part, $num);  
           }  
      }
      

      mfg

      Phil Z.

      1. echo $begrüßung;

        aber was ist denn nun zum beipsiel hier falsch:

        Wie lautet die Fehlerbeschreibung? Ohne die kann ich dir nur sagen, was mir beim Drüberschauen auffält.

        $result=mysql_query("[...]") or die(mysql_error());
        if(!$result) die("Die Datenbank konnte nicht abgefragt werden");

        Dein Script stirbt ja schon in der ersten Zeile, wenn ein Fehler aufgetreten ist. Die Bedingung der zweite Zeile kann daher nie erfüllt werden, weil sie in dem Fall gar nicht mehr zur Ausführung kommt.

        if(is_array($kindarray)) {
             foreach($kindarray[0] as $thread) { // Für jedes Posting der obersten Ebene...

        Du kontrollierst, ob $kindarray ein Array ist, greifst dann aber ohne weiter zu kontrollieren auf das Element mit dem Schlüssel 0 zu. Bist du sicher, dass ein solcher Schlüssel existiert? Deine Datenbankabfrage hat ja nur die Schlüssel angelegt, die in der Datenbank standen.

        Generell kann ich dir nur empfehlen, deine Debugging-Fähigkeiten zu verbessern. Vor allem durch Kontrollausgaben der beteiligten Variablen kommt man so manchem Fehler auf die Spur. Das kann ein einfaches echo  oder print sein, sowie bei Arrays ein print_r(). Noch besser, aber teilweise schlechter zu lesen als eine print_r()-Ausgabe, ist die Funktion var_dump(), denn die gibt auch gleich den aktuellen Typ der Variable mit aus und nimmt, im Gegensatz zu echo, keine Typkonvertierung bei der Ausgabe vor.
        Hilfreich ist auch, das Einschalten der Notiz-Meldungen, denn die sind standardmäßig ausgeschaltet, bieten aber wertvolle Hinweise bei Zugriffen auf nicht vorhandene Variablen und Array-Schlüssel. Damit kommt man Tipp- und Initialisierungsfehlern auf die Spur. Setze zum Entwickeln immer das error_reporting auf E_ALL. Im laufenden Betrieb hingegen sollte es ausgeschaltet sein, weil die Besucher die Fehlermeldungen nicht sehen sollen.

        echo "$verabschiedung $name";

        1. Hallo.

          Wie lautet die Fehlerbeschreibung? Ohne die kann ich dir nur sagen, was mir beim Drüberschauen auffält.

          Die gleiche wie ganz oben. Alles was unter dem Skript ist, wird nicht ausgegeben nur das diesmal auch mit floats gearbeitet wird und damit halt der 2. div der 2 nebeneinander floatenden Divs wegfällt.

          Dein Script stirbt ja schon in der ersten Zeile, wenn ein Fehler aufgetreten ist. Die Bedingung der zweite Zeile kann daher nie erfüllt werden, weil sie in dem Fall gar nicht mehr zur Ausführung kommt.

          Hab ich geändert.

          Du kontrollierst, ob $kindarray ein Array ist, greifst dann aber ohne weiter zu kontrollieren auf das Element mit dem Schlüssel 0 zu. Bist du sicher, dass ein solcher Schlüssel existiert? Deine Datenbankabfrage hat ja nur die Schlüssel angelegt, die in der Datenbank standen.

          Wie mach ich das?

          Generell kann ich dir nur empfehlen, deine Debugging-Fähigkeiten zu verbessern.

          Okay ich mach mich mal bei Google, genauer schlau.

          mfg

          Phil Z.

          1. hi,

            Wie lautet die Fehlerbeschreibung?
            Die gleiche wie ganz oben. Alles was unter dem Skript ist, wird nicht ausgegeben

            Das ist die definierte Auswirkung von die().

            Damit ist mit _allem_ Feierabend - es wird kein nachfolgender Scriptcode mehr ausgeführt, und auch kein nachfolgend ausserhalb des PHP-Bereiches stehender HTML-Code mehr an den Client gesendet.

            die heisst "verrecke hier und jetzt, 100%ig und absolut".

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Hi.

              Das ist die definierte Auswirkung von die().

              Es befindet sich kein die(); im Skript und trotzdem wird alles darunter,stehende nicht angezeigt.

              mfg

              Phil Z.

              1. echo $begrüßung;

                Es befindet sich kein die(); im Skript und trotzdem wird alles darunter,stehende nicht angezeigt.

                Wenn ein Script an unbekannter Stelle abstirbt, kann man zum Einkreisen dieser Stelle es mit Ausgaben spicken. Im Prinzip läuft das darauf hinaus, nach jeder Zeile ein echo 'a'; echo 'b'; usw. einzufügen. Da wo die Buchstaben aufhören, ist die kritische Stelle zu suchen. Natürlich kann man auch mit größeren Abständen beginnen und dann nach und nach die Schlinge zuziehen.

                echo "$verabschiedung $name";

                1. Hallo,

                  Also hier nochmal die news.php

                  <?php  
                  // Voreinstellungen  
                  $artikel_anz_start=0;  
                  $artikel_anz_end=10;  
                  $num=10;  
                  $y=$_GET['a'];  
                  $z=$_GET['num'];  
                  if($y=='last'&&isset($z)){  
                   $artikel_anz_start=$z;  
                   $artikel_anz_end=$z+10;  
                   $num=$artikel_anz_start;  
                  }  
                  $part='content';  
                  unset($forumarray); // Variablen korrekt (de)initialisieren  
                  unset($kindarray);  
                    
                    
                  // Daten aus der Datenbank holen  
                  $result=mysql_query("SELECT ID, PID, TID,  
                         DATE_FORMAT(Zeitpunkt,'%T') AS Uhrzeit,  
                                           DATE_FORMAT(Zeitpunkt,'%W %d.%M %Y') AS Datum,  
                                              AutorName, Betreff, Text, num  
                        FROM artikel  
                                       ORDER BY Zeitpunkt DESC LIMIT ".$artikel_anz_start.", $artikel_anz_end");  
                    
                  while($tmp = mysql_fetch_array($result)) {  // Ergebnis holen  
                    $forumarray[ $tmp["ID"] ] = $tmp;          // Ergebnis im Array ablegen  
                    $kindarray[ $tmp["PID"] ][] =  $tmp["ID"]; // Vorwärtsbezüge konstruieren  
                  }  
                    
                  mysql_free_result($result);  
                    
                  if(is_array($kindarray)) {  
                       foreach($kindarray[0] as $thread) { // Für jedes Posting der obersten Ebene...  
                    zeichneBaum($thread, $part, $num);  
                       }  
                  }  
                    
                  // Fußleiste der Beiträge(ganz unten / insgesamt)  
                  $enda=$artikel_anz_end+10;  
                  echo"<a href='index.php?p=news&a=last&num=".$num."' class='under2'>Letzten 10 News ( ".$artikel_anz_end." - ".$enda." )</a>";  
                  ?>
                  

                  Hier die Funktion "zeichneBaum()" und Funktion "changeDate()":

                  // Namen der Tage und Monate von Englisch in Deutsch ersetzen (erwartet String)  
                  function change_date($dates){  
                   $array_1=array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');  
                   $array_2=array('Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag');  
                   $array_3=array('January','February','March','April','May','June','July','August','September','October','November','December');  
                   $array_4=array('Januar','Februar','M&auml;rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');  
                   for($i=0;$i<=6;++$i){  
                    if(strchr($dates,$array_1[$i])){  
                      $dates=str_replace($array_1[$i],$array_2[$i],$dates);  
                    }  
                    if(strchr($dates,$array_3[$i])){  
                      $datum=str_replace($array_3[$i],$array_4[$i],$dates);  
                    }  
                   }  
                   return $datum;  
                  }  
                    
                    
                  // Berichte auslesen und ausgeben (schon formatiert) mit Anzahl der Kommentare  
                  function zeichneBaum($eintrag, $part, $id){  
                   global $forumarray, $kindarray, $num_CM;  
                    
                   $datum=change_date($forumarray[$eintrag]['Datum']); // Datum übersetzen  
                    
                   // Anzahl der Kommentrare auslesen  
                   $qu=mysql_query("SELECT COUNT(*) AS anz  
                        FROM artikel  
                                       WHERE num='".$forumarray[$eintrag]['ID']."'");  
                    
                   $num_CM=mysql_fetch_assoc($qu);  
                    
                   if($part=='comment'){// Wenn Comment Bereich  
                     echo "  
                     <div class='beitrag'>  
                     <span class='date'>".$datum."  
                     <span class='time'>".htmlentities($forumarray[$eintrag]['Uhrzeit'])."</span></span><br/>  
                     <h2 class='title'>".htmlentities($forumarray[$eintrag]['Betreff'])."</h2>  
                     <div class='artikel'><br/>".htmlentities($forumarray[$eintrag]['Text'])."<p></p></div>  
                     <div class='under'><br/>Author: <a href='#'>".htmlentities($forumarray[$eintrag]['AutorName'])."</a>  
                     | <span class='red'> Kommentare(".$num_CM['anz'].")</span>  
                     | <a href='index.php?p=trackbacks&id=".$resultset['num']."'>Trackbacks(".$num_TB['anz'].")</a>  
                     | <a href='#writeComment'>Kommentar schreiben</a><p></p></div>  
                     <p></p></div>  
                   ";  
                   }elseif($part=='content'){// Wenn Content Bereich  
                   echo "  
                     <div class='beitrag'>  
                     <span class='date'>".$datum."  
                     <span class='time'>".htmlentities($forumarray[$eintrag]['Uhrzeit'])."</span></span>  
                     <h2 class='title'>".htmlentities($forumarray[$eintrag]['Betreff'])."</h2>  
                     <div class='artikel'><br/>".htmlentities($forumarray[$eintrag]['Text'])."<p></p></div>  
                     <div class='under'><br/>Author: <a href='#'>".htmlentities($forumarray[$eintrag]['AutorName'])."</a>  
                     | <a href='index.php?p=comments&id=".$forumarray[$eintrag]['ID']."'> Kommentare(".$num_CM['anz'].")</a>  
                     | <a href='index.php?p=trackbacks&id=".$resultset['num']."'>Trackbacks(".$num_TB['anz'].")</a>  
                     | <a href='index.php?p=comments&id=".$forumarray[$eintrag]['ID']."#writeComment'>Kommentar schreiben</a>  
                     <p></p></div>  
                   ";  
                   }  
                  }  
                  
                  

                  Wenn ich
                  echo '<pre>';
                  print_r($kindarray[ $tmp["PID"] ]);
                  echo '</pre>';

                  mache dann kommt folgendes:
                  Array
                  (
                      [0] => 5
                  )

                  Array
                  (
                      [0] => 4
                  )

                  Array
                  (
                      [0] => 5
                      [1] => 3
                  )

                  Array
                  (
                      [0] => 1
                  )

                  Array
                  (
                      [0] => 1
                      [1] => 2
                  )

                  Wenn ich das hier ausgebe:
                  echo '<pre>';
                  print_r($forumarray[ $tmp["ID"] ]);
                  echo '</pre>';

                  kommt:
                  Array
                  (
                      [0] => 5
                      [ID] => 5
                      [1] => 1
                      [PID] => 1
                      [2] => 1
                      [TID] => 1
                      [3] => 23:40:21
                      [Uhrzeit] => 23:40:21
                      [4] => Wednesday 28.March 2007
                      [Datum] => Wednesday 28.March 2007
                      [5] => Max Mustermann
                      [AutorName] => Max Mustermann
                      [6] => Test
                      [Betreff] => Test
                      [7] => Na das wollen wir doch gleich mal testen.
                      [Text] => Na das wollen wir doch gleich mal testen.
                      [8] => 2
                      [num] => 2
                  )

                  Array
                  (
                      [0] => 4
                      [ID] => 4
                      [1] => 3
                      [PID] => 3
                      [2] => 1
                      [TID] => 1
                      [3] => 23:40:11
                      [Uhrzeit] => 23:40:11
                      [4] => Wednesday 28.March 2007
                      [Datum] => Wednesday 28.March 2007
                      [5] => Henryk Pl�tz
                      [AutorName] => Henryk Pl�tz
                      [6] => Eine noch kleinere Antwort
                      [Betreff] => Eine noch kleinere Antwort
                      [7] => Na klar
                      [Text] => Na klar
                      [8] => 1
                      [num] => 1
                  )

                  Array
                  (
                      [0] => 3
                      [ID] => 3
                      [1] => 1
                      [PID] => 1
                      [2] => 1
                      [TID] => 1
                      [3] => 23:39:59
                      [Uhrzeit] => 23:39:59
                      [4] => Wednesday 28.March 2007
                      [Datum] => Wednesday 28.March 2007
                      [5] => Max Mustermann
                      [AutorName] => Max Mustermann
                      [6] => Eine kleine Frage
                      [Betreff] => Eine kleine Frage
                      [7] => Kann das Forum auch Threads darstellen?
                      [Text] => Kann das Forum auch Threads darstellen?
                      [8] => 1
                      [num] => 1
                  )

                  Array
                  (
                      [0] => 1
                      [ID] => 1
                      [1] => 0
                      [PID] => 0
                      [2] => 1
                      [TID] => 1
                      [3] => 19:14:03
                      [Uhrzeit] => 19:14:03
                      [4] => Wednesday 28.March 2007
                      [Datum] => Wednesday 28.March 2007
                      [5] => Henryk Pl�tz
                      [AutorName] => Henryk Pl�tz
                      [6] => Test 1
                      [Betreff] => Test 1
                      [7] => Funktioniert das?
                      [Text] => Funktioniert das?
                      [8] => 0
                      [num] => 0
                  )

                  Array
                  (
                      [0] => 2
                      [ID] => 2
                      [1] => 0
                      [PID] => 0
                      [2] => 2
                      [TID] => 2
                      [3] => 19:14:03
                      [Uhrzeit] => 19:14:03
                      [4] => Wednesday 28.March 2007
                      [Datum] => Wednesday 28.March 2007
                      [5] => Hans Dampf
                      [AutorName] => Hans Dampf
                      [6] => Die Antwort auf die Frage nach Gott, dem Universum und dem ganzen Rest
                      [Betreff] => Die Antwort auf die Frage nach Gott, dem Universum und dem ganzen Rest
                      [7] => 42
                      [Text] => 42
                      [8] => 0
                      [num] => 0
                  )

                  Hier kommt ein Screen aus der Datenbank-Tabelle:
                  Screen

                  Hier kommt die Seite so wie sie ist, den Bug könnt ihr direkt auf der Startseite betrachten, wenn wir wissen wollt wie es aussehen soll, dann klickt einfach bei einem der Beiträge auf "Kommentare()".
                  Klick

                  Wenn ich inder news.php
                  ------
                  while($tmp = mysql_fetch_array($result)) {  // Ergebnis holen
                    $forumarray[ $tmp["ID"] ] = $tmp;          // Ergebnis im Array ablegen
                    $kindarray[ $tmp["PID"] ][] =  $tmp["ID"]; // Vorwärtsbezüge konstruieren
                  }
                  ------
                  weglasse, oder
                  ------
                       foreach($kindarray[0] as $thread) { // Für jedes Posting der obersten Ebene...
                    zeichneBaum($thread, $part, $num);
                       }
                  ------
                  weglasse, dann wird alles richtig angezeigt.

                  Es kommt keine Fehlermeldung.

                  Hoffe jetzt kann mir geholfen werden.

                  mfg

                  Phil Z.

                  1. hi,

                    Hier kommt die Seite so wie sie ist, den Bug könnt ihr direkt auf der Startseite betrachten, wenn wir wissen wollt wie es aussehen soll, dann klickt einfach bei einem der Beiträge auf "Kommentare()".
                    Klick

                    Hattest du nicht behauptet, es fände ab irgendeinem Zeitpunkt "gar keine Ausgabe mehr" statt?

                    Das kann ich nicht nachvollziehen, die Startseite endet mit

                    </div>
                    </body>
                    </html>

                    • und danach wirst du ja vermutlich nichts weiteres mehr ausgeben wollen.

                    Es ist also nicht das Problem, dass das Script irgendwo wirklich abbricht, und du nichts davon mitbekämst - sondern es macht irgendwo nicht das, was es soll.
                    Fehlerhafte Verzweigung bzw. nicht erfüllt Bedingung, nicht durchlaufene Schleife, wasauchimmer ...

                    Um die Stelle besser einzukreisen, hat dedlfix dir ja gerade vorher Tipps gegeben.

                    gruß,
                    wahsaga

                    --
                    /voodoo.css:
                    #GeorgeWBush { position:absolute; bottom:-6ft; }
                    1. Hi.

                      Hattest du nicht behauptet, es fände ab irgendeinem Zeitpunkt "gar keine Ausgabe mehr" statt?

                      Ouh stimmt du hast Recht, bei der anderen Seite wars so, bei der hier nicht.

                      Um die Stelle besser einzukreisen, hat dedlfix dir ja gerade vorher Tipps gegeben.

                      Ich kann den Fehler beim besten WIllen nicht finden :(

                      mfg

                      Phil Z.

                      1. Hello,

                        Um die Stelle besser einzukreisen, hat dedlfix dir ja gerade vorher Tipps gegeben.
                        Ich kann den Fehler beim besten WIllen nicht finden :(

                        Dann stell doch den Quellcode der Seite mal auf Deinem Webspace zur Verfügung

                        PHP hat eine so nette Funktion dafür:
                        http://www.php.net/manual/en/function.highlight-file.php

                        ... und natürlich auch die betroffene Seite für den vorgesehenen Rewuest bereithalten, also Link darauf bekanntgeben.

                        Harzliche Grüße vom Berg
                        http://www.annerschbarrich.de

                        Tom

                        --
                        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                        Nur selber lernen macht schlau

                      2. echo $begrüßung;

                        Um die Stelle besser einzukreisen, hat dedlfix dir ja gerade vorher Tipps gegeben.
                        Ich kann den Fehler beim besten WIllen nicht finden :(

                        Eine weitere Debugging-Strategie: Man kann sich dem Problem von beiden Seiten nähern (entweder oder, nicht beides gleichzeitig - d.h. das geht vielleicht auch, halte ich aber nicht für sinnvoll).
                        1. Möglichkeit: Entferne aus dem bestehenden Projekt (bzw. einer Kopie davon) solange Code-Teile, bis der Fehler nicht mehr auftritt. Er liegt dann vermutlich im zuletzt entfernten Teil. Dort weitersuchen.
                        Die 2. Möglichkeit ist, von Null an zu beginnen und immer mehr Codeteile hinzuzufügen, bis der Fehler auftritt.

                        Welche Teile man sinnvollerweise entfernt oder hinzufügt, hängt natürlich von der Struktur ab. Hat man sein Programm bereits durchdacht aufgeteilt, lassen sich einzelne Bestandteile leichter entfernen, ohne dass gleich das ganze Gebilde nicht mehr funktioniert. Auch das Kapseln von Codeteilen in der Form, dass sie relativ eigenständig Teilaufgaben des Gesamtprogramms übernehmen können, hilft (nicht nur) bei der Fehlersuche.

                        echo "$verabschiedung $name";

            2. Hi,
              es muss am Skript liegen und es muss an dieser Schleife hier liegen:

                
              while($tmp = mysql_fetch_array($result)) {  // Ergebnis holen  
                $forumarray[ $tmp["ID"] ] = $tmp;          // Ergebnis im Array ablegen  
                $kindarray[ $tmp["PID"] ][] =  $tmp["ID"]; // Vorwärtsbezüge konstruieren  
              }  
              
              

              Sobald ich nämlich diese Schleife entferne, sieht alles perfekt aus.

              mfg

              Phil Z.

          2. echo $begrüßung;

            Du kontrollierst, ob $kindarray ein Array ist, greifst dann aber ohne weiter zu kontrollieren auf das Element mit dem Schlüssel 0 zu. Bist du sicher, dass ein solcher Schlüssel existiert? Deine Datenbankabfrage hat ja nur die Schlüssel angelegt, die in der Datenbank standen.
            Wie mach ich das?

            print_r($kindarray); vorher ein <pre> erhöht die Übersichtlichkeit der Ausgabe. Da kannst du nun nachschauen, was wirklich im Array steht, und dir dann Strategien ausdenken, wie du damit verfahren kannst.

            Generell kann ich dir nur empfehlen, deine Debugging-Fähigkeiten zu verbessern.
            Okay ich mach mich mal bei Google, genauer schlau.

            Google hilft da weniger. Wichtig ist, dass du selbst Erfahrung sammelst. Viel mehr als echo, print_r() und var_dump() und das PHP-Handbuch brauchst du dabei nicht.

            echo "$verabschiedung $name";

  2. Hello,

    while($resultset = mysql_fetch_array($result) or die(mysql_error())) {

    Der Fehler (zumindest der gesuchte) steckt in dieser Zeile.
    Denk erstmal selber nach, woran es liegen könnte.

    Ein kleiner Tipp: Fehlermeldungen sind nichts Böses. Darum sollte man sie eigentlich auch "Statusmeldungen" nennen.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau