PHP Galerie - header()

holle

Grünschnabel
Ich wäre über eine schnelle Antwort sehr glücklich...
Hier ist meine Galerie, die leider noch ihre Fehler hat,
sie zeigt mir immer diese Meldung an:
Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/index.php:16) in /home/public_html/sites/kunst_art.php on line 27

Warning: Cannot modify header information - headers already sent by (output started at /home/public_html/index.php:16) in /home/public_html/sites/kunst_art.php on line 28


Da ich nach mehreren Stunden suchen leider keinen Erfolg erzielte, frag ich hiermit nach,
ob mir jemand einen Tip hat oder sogar den Fehler sieht.

Mit freundlichen Grüssen
Mike

Code:
<?
$mysql_host	= "******";
$mysql_user	= "******";
$mysql_pwd	= "******";
$mysql_db		= "******";

if(!$res_id = @mysql_connect($mysql_host, $mysql_user, $mysql_pwd))
{
    die('Die Verbindung zur Datenbank war erfolglos!');
}

if(!@mysql_select_db($mysql_db))
{
    die('Die Tabelle konnte nicht ausgewählt werden!');
}

$sql = "SELECT * FROM kunst_art";
if(!$res_id = mysql_query($sql))
    die('Der SQL-Befehl ist falsch.');

while ($result = mysql_fetch_array($res_id))
{

    if(!$result['FileSize'] == 0) {
        Header("Cache-Control: post-check=0, pre-check=0");
        Header("Content-Type: $type");
        $query = "SELECT FileType, FileData FROM kunst_art WHERE id=$id";
        $resultat = @mysql_query($query);
        $data = @mysql_result($resultat, 0, "FileData");
        $type = @mysql_result($resultat, 0, "FileType");
        echo $data;
	$time = time();
	$pic = "<a href=sites/kunst_art.php?id=".$result['ID']." target='_blank'><img src=sites/kunst_art.php?id=".$result['ID']." height='100' border='0' alt=''></a>";
	$bgp = "http://www.tutorials.de/images/kunst_art/shadow.png";
flush();
    } else {
	$pic = "";
        $bgp = "http://www.tutorials.de/images/kunst_art/no_pic.png";
    }

// Abfrage des Status (verkäuflich, unverkäuflich oder verkauft)
if($result['Status'] == "1") {
    $sta  = "verkaeuflich.png";
    $kontakt = "&nbsp;<a href='http://www.domain.com/?id=5'>Interesse...</a>";
} elseif($result['Status'] == "2") {
    $sta = "unverkaeuflich.png";
    $kontakt = "";
} else {
    $sta = "verkauft.png";
    $kontakt = "";
}

echo "<html>
<head>
<title>Show</title>
</head>
<body>
<table class='txt'>
<tr>
  <td>Bild ".$result['ID']."</td></tr>
<tr>
  <td width='142' height='142' align='center' vertical-align='middle' background='$bgp' rowspan='5'>$pic</td>
  <td>Künstler:</td>
  <td>".$result['Artist']."</td>
</tr>
<tr>
  <td>Beschreibung:</td>
  <td>".$result['Description']."</td>
</tr>
<tr>
  <td>Preis:</td>
  <td>".$result['Price']."</td>
</tr>
<tr>
  <td>Status:</td>
  <td v-align='middle'><img src=images/kunst_art/".$sta." border='0' alt=''>$kontakt</td>
</tr>
</table>
</body>
</html>";
}
?>
 
Zuletzt bearbeitet von einem Moderator:
Hast du die Fehlermeldung selbst schon einmal analysiert? Denn sie besagt, dass die Header-Informationen nicht mehr geändert werden kann, da der Nachrichten-Header bereits gesandt wurde. Um herauszufinden, was das bedeutet, musst du wissen, was ein Nachrichten-Header ist. Denn dieser wird vor der eigentlichen „Nutzlast“ gesandt und beschreibt sie. Dort steht beispielsweise notiert, um welche Art von Daten es sich handelt, ob die Daten in irgendeiner Form kodiert ist, welche Länge die Nachricht hat, etc.
Der Webserver sammelt nun all diese Daten, bis die erste Ausgabe erfolgt. Danach sind die Header-Informationen logischerweise nicht mehr veränderbar.

Um dein Problem zu lösen, gibt es nun zwei Möglichkeiten: Entweder du entwickelst deine Skripte so, dass alle nötigen Header-Informationen vor der ersten Ausgabe gesetzt werden, oder du arbeitest mit den Funktionen der Ausgabesteuerung, mit denen die Ausgabe genau bestimmt werden kann.
 
Hier RS9999:
PHP:
$type = @mysql_result($resultat, 0, "FileType");  // Zeile 31

Danke Gumbo, werd ich mal ausprobieren.

Mit freundlichen Grüssen
Mike
 
Zuletzt bearbeitet von einem Moderator:
da:

$type = @mysql_result($resultat, 0, "FileType");

Du hast halt schon einen Header gesendet. Entweder du programmierst das ganze so, dass nirgendwo vorher header gesendet werden (zB in der Seite, wo dieses Skript eingebunden werden könnte) oder du arbeitest mit ob_start und ob_end_flush
 
Sorry,

sollte auch mehr ein Hinweis sein, dass der Header vor Bekanntmachung der Variable
"$typ" gesendet wird und so einen leeeren String besitzt.
 
Vielen Dank an alle für die raschen Antworten!
Es funktioniert, hab die Header in der Hauptseite eingebunden,
und da siehe, es funktioniert!

Mit freundlichen Grüssen
:D mike
 
Zuletzt bearbeitet von einem Moderator:
Zurück