Hallo,
gerade musste ich ein Phänomen beobachten, das ich so noch nicht erlebt habe. Ich lese mit einem simplen Query Daten aus einer Tabelle aus, was auch problemlos funktioniert. Ab und zu kommt es aber vor, dass anstatt der Daten einfach nichts ausgegeben wird. Es erscheint nur eine leere Seite. Es werden auch keine SQL-Fehler im Errorlog ausgegeben. Es werden einfach nur keine Daten geliefert. Ich kann mir das nicht erklären. Klicke ich ein paar mal wieder auf den selben Link, der die Daten abruft, kann es sein, dass es ein paar Mal nicht funktioniert, dann funktioniert es wieder 20 Mal hintereinander. Dann funktioniert es wieder ein Mal nicht. Wie kann das sein?
Dies ist die Datei, die den Inhalt ausgibt:
<?php
include_once("../dao/HerstellerDao.php");
$dao = new HerstellerDao();
$hersteller = $dao->getAlleBrillenmarken();
echo <<<EOT
<div id="inhalt">
<h1>Marke bearbeiten (wird per Name sortiert aufgelistet)</h1>
EOT;
while (list($h_id, $h_name) = each ($hersteller)) {
echo '<form method="post" action=".">', "\n";
echo '<table class="editkunde" rules="rows">',"\n";
echo "<tr><td style=\"width:15%\"><b>Marke</b></td><td style=\"width:60%\">" . $h_name . "</td><td></td></tr>\n";
echo "<tr><td></td><td><input type=\"hidden\" name=\"id\" value=\"$h_id\" />";
echo "<input type=\"submit\" name=\"edithersteller\" value=\"Editieren\" /></td><td></td></tr>\n";
echo "<tr><td class=\"grey\" colspan=\"3\"> </td></tr>\n";
echo '</table>',"\n";
echo '</form>',"\n";
}
echo <<<EOT
</div>
</body>
</html>
EOT;
?>
Wenn es einmal nicht funktioniert, wird das HTML der Datei zwar angezeigt, jedoch der Inhalt der While-Schleife nicht. Der HTML-Quellcode dieser Datei sieht dann so aus:
<div id="inhalt">
<h1>Marke bearbeiten (wird per Name sortiert aufgelistet)</h1>
</div>
</body>
</html>
Dies ist die Methode, die die Daten ausliest:
public function getAlleBrillenmarken() {
if (!($con = mysql_pconnect(DB_HOST, DB_USER, DB_PASS))) {
echo "Datenbankverbindung fehlgeschlagen: " . mysql_error($con) . "\n";
exit(-1);
}
if (!mysql_select_db(DB_NAME, $con)) {
mysql_close($con);
echo "Datenbank nicht auswählbar: " . mysql_error($con) . "\n";
exit(-1);
}
//Brillenmarke auslesen
$query_string = "SELECT h_id, h_name FROM Brillenmarke ORDER BY h_name";
if (!($result = mysql_query($query_string, $con))) {
mysql_close($con);
echo "Brillenmarke auslesen fehlgeschlagen: " . mysql_errno($con) . " " . mysql_error($con) . "\n";
exit(-1);
}
$hersteller = array();
while ($row = mysql_fetch_assoc($result))
$hersteller[$row['h_id']] = $row['h_name'];
mysql_free_result($result);
if (!mysql_close($con))
echo "Warnung, Datenbank wurde nicht erfolgreich geschlossen: " . mysql_errno($con) . ", " . mysql_error($con) . "\n";
return $hersteller;
}
wie gesagt. Keine SQL-Fehler und meistens funktioniert es ja. Aber ab und zu nicht. Wie kann ich mir das erklären?
Markus