Problem mit header und Datenbank

  • Themenstarter Themenstarter eintagsfliege
  • Beginndatum Beginndatum
E

eintagsfliege

Hey Leute,
ich habe folgendes Problem: Zurzeit bastele ich an einem Skript, was mir die zwei neusten Bilder anzeigt. Allerdings bekomme ich es immoment noch nicht hin. Ich glaube, dass es am header liegt. Ich habe den header einmal entfernt und habe mal einige Datenbank Abfragen getätigt... zum Beispiel
print $rows["SECT"];
, aber es wird nichts herausgegeben. Die Datenbank selbst funktioniert, da andere Skripte ebenfalls auf diese zugreifen; und das ohne Probleme.
Hier der Code:
<?php
print '<div id="box_index_right_top"><img src="data/images/logo.jpg" style="margin: 5px 0px;"></div>';
//Connect to MySQL
include('data/php/Connect.php');
//Sort by Date, Limit 2
$select_newest = @mysql_query("SELECT SKIN, SECT FROM SkinDatabase ORDER BY DATE DESC LIMIT 2") or die(mysql_error());
while($rows = @mysql_fetch_assoc($select_newest) or die(mysql_error())){
print'<div class="box_index_right"><img src="';
//JPG Pfad
$database = 'database/';
$content = $database.$rows["SECT"].'/'.$rows["SKIN"].'_preview.jpg';/*Bildpfad wird aus Datenbank hergeleitet*/
//Create JPG Bild
$image_src = ImageCreateFromJpeg($content);
$getimageinfo = getimagesize($content);
$image = ImageCreateTrueColor(170, $height);
//New Height
$height = $getimageinfo[0] * $getimageinfo[1] / $width;
//Resize 1
$resize_1 = imagecopyresized($image, $image_src, 0, 0, 0, 0, 170, $height, $getimageinfo[0], $getimageinfo[1]);
//Tansparency Border
$tansparency = 'data/images/tansparency.png';
$addboard = ImageCreateFromPng($tansparency);
$resize_2 = imagecopyresized($image, $addboard, 0, 0, 0, $height - 30, 170, $height, 170, 30);
//Text
$color = imagecolorallocate($image, 0, 0, 0);
$addtext = imagestring($image, 2, 70, $height - 21, $rows["SECT"], $color);
//Export
header ('Content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
print' style="width: 170px; height: '.$height.'px;"></div>';}
?>
Würde mich auf Antwort sehr freuen :)
 
Du sendest zuerst Klartext oder 'text/html' raus, wechselst dann auf 'image/jpeg', und gibst danach wieder HTML aus... Also irgendwas läuft da falsch ^^

Bild ist Bild, Text ist Text. Du kannst kein Bild direkt in HTML einbetten - Das geht nur über zB <img src="sth" />.

Füg mal bitte ganz am Anfang Folgendes ein:
PHP:
ini_set('error_reporting', '1');
error_reporting(E_ALL);
Gibt es eventuelle Fehlerausgaben?
 
Nein, es wird keine Meldung angzeigt, könnte aber auch wegen dem header JPEG sein, dass dort keine Fehlermeldungen angezeigt werden können.
Moment....
Mist, also wenn ich header weglasse, kommt eine "Fehlermeldung": Leider keine die weiterhilft, im Gegenteil:
ini_set() has been disabled for security reasons in
Was jetzt? :(
 
Einfach die ini_set Anweisung weglassen. Wenn jedoch dein Hoster die ini-Direktive für's Error-Reporting deaktiviert hat, könnte es sein, dass auch E_ALL nix ausspuckt, wenn noch so viele Fehler auftreten :rolleyes:

Normalerweise sollte zB bei
PHP:
<?php
print '<div id="box_index_right_top"><img src="data/images/logo.jpg" style="margin: 5px 0px;"></div>';
// ...
header ('Content-type: image/jpeg');
zumindest eine Meldung erscheinen, "Warning: Headers already sent ...".
 
Also...
wenn ich den ini(...) -Befehl weglasse, bleibt alles wie vorher, außer das die Warnmeldung von eben nicht mehr erscheint, logisch.
So und wenn ich jetzt deinen Code einfüge/an meinem anpasse, dann entsteht wieder ein tempörares Bild mit der Endung html und dem Text der Adressleiste.
:(
 
Naja, das grundlegende Problem ist ja, dass du HTML und JPEG total vermengst, was nicht sein darf. Entweder du gibst HTML aus oder JPEG. Und wenn du ein Bild ausgibst, dann auch nicht mehrere Datensätze hintereinander sondern nur wirklich eine Bilddatei.
Das heißt, dass du für jedes Bild eine entsprechende Aufrufsequenz bereitstellen solltest, zB in einer Datei, die du zB image.php nennst. Diese rufst du immer mit einem GET-Parameter id auf, der einen Datensatz in der Datenbank identifiziert und auswählt. Damit kannst du dann den Pfad rekonstruieren und das Bild verarbeitet ausgeben. In deiner eigentlichen HTML-Datei lässt du dann das Bild einfach über
HTML:
<img src="image.php?id=1" alt="" />
einbetten.
 
Ach ja! Haste ja Recht!
Man sieht, dass ich mich noch nie mit header auseinandergesetzt habe, außer bei Weiterleitungen ;)
Aber diese php Datei mit header JPEG wird ja dann "zu" jpeg.
Ok ich werds versuchen; wenn was ist, melde ich mich hier nochmals.
Danke!
 
Zurück