P phpNyb Medlem sedan apr. 2010 23 inlägg Frågan 29 apr. 2010 09:34 #1 Hej,
Jag lagrat bilder i mysql databas via formulär. Det går bra att skriva ut bilder enligt följande:
$q = "SELECT image, image_name, image_type, image_size FROM images WHERE image_id=1";
$r = mysqli_query ($dbc, $q);
if (mysqli_num_rows($r) == 1) {
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
mysqli_free_result($r);
header ("Content-Type: {$row['image_type']}\n");
header ("Content-disposition: inline; filename=\"{$row['image_name']}\"\n");
header ("Content-Length: {$row['image_size']}\n");
$bild = $row['image'];
echo $bild;
}
Men jag vill helst använda img tag för att kunna bestämma bredden och höjden på bilden:
<img src="<?php print $bild; ?>" width="100" height="75"/>
Jag får följande error meddelande:Bilden kan inte visas
Är det någon som kan hjälpa mig?
Tack i för hand!
phpNyb
M metalboy Medlem sedan jan. 2005 953 inlägg Du får då anropa ett php-script som skriver ut bildkoden i <img>-taggen.
Typ så här:
<img src="bild.php?id=1" width="100" height="75">
och bild.php:
$q = "SELECT image, image_name, image_type, image_size FROM images WHERE image_id=" . intval($_GET['id']);
$r = mysqli_query ($dbc, $q);
if (mysqli_num_rows($r) == 1) {
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
mysqli_free_result($r);
header ("Content-Type: {$row['image_type']}\n");
header ("Content-disposition: inline; filename=\"{$row['image_name']}\"\n");
header ("Content-Length: {$row['image_size']}\n");
$bild = $row['image'];
echo $bild;
}
P phpNyb Medlem sedan apr. 2010 23 inlägg Tack för svaret,
Jag får inte den att fungera än, jag får samma fel-meddelande:
Bilden kan inte visas
$q = "SELECT image, image_name, image_type, image_size FROM images WHERE image_id=" . intval(1);
$r = mysqli_query ($dbc, $q);
if (mysqli_num_rows($r) == 1) {
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
mysqli_free_result($r);
header ("Content-Type: {$row['image_type']}\n");
header ("Content-disposition: inline; filename=\"{$row['image_name']}\"\n");
header ("Content-Length: {$row['image_size']}\n");
//$bild = $row\['image'\];
//echo $bild;
?\>
\<img src="bild.php?id=1" width="100" height="75"\>
\<?php
}
M metalboy Medlem sedan jan. 2005 953 inlägg HTML-koden (<img>) och PHP-koden måste (läs: bör, det går annars också, men blir krångligare) ligga i olika filer.
Alltså, skapa en fil som heter test.html med följande innehåll:
<img src="test.php?id=1" width="100" height="75">
Sedan skapar du en fil som heter test.php med följande innehåll:
<?php
// OBS! Lägg in din kod för att ansluta till MySQL här...
$q = "SELECT image, image_name, image_type, image_size FROM images WHERE image_id=" . intval($_GET['id']);
$r = mysqli_query ($dbc, $q);
if (mysqli_num_rows($r) == 1) {
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
mysqli_free_result($r);
header ("Content-Type: {$row['image_type']}\n");
header ("Content-disposition: inline; filename=\"{$row['image_name']}\"\n");
header ("Content-Length: {$row['image_size']}\n");
$bild = $row['image'];
echo $bild;
}
Och testa :)
P phpNyb Medlem sedan apr. 2010 23 inlägg Tusen Tack!
Jag uppskattar högt din skicklighet!
Det fungerar nu när jag skapat en annan html-fil som du sa:
Test.html
<img src="test.php?id=1" width="200" height="175">
Hälsningar
phpNyb
P phpNyb Medlem sedan apr. 2010 23 inlägg Sidan blir tom när jag skriver ut bilden från Mysql
Hej igen,
Det går bra att skriva ut bilder enligt koden nedan, men när jag lägger en rad till högst upp ex:
<?php require_once("includes/functions.inc.php"); ?>
<?php
$dbc = @mysqli_connect('localhost', 'an', 'ln', 'db')
or die ('Could not connect to MySQL: ' . mysqli_connect_error());... eller inbäddad i en annan sida då kommer det ingen bild.
Är det någon vänlig själ som vet vad är lösningen?
Jag är nybörjare på php!
test.html
<img src="test.php?id=16" width="200" height="175" />
test.php:
<?php
$dbc = @mysqli_connect('localhost', 'an', 'ln', 'db')
or die ('Could not connect to MySQL: ' . mysqli_connect_error());
$q = "SELECT image, image_name, image_type, image_size FROM images WHERE image_id=" . intval($_GET['id']);
$r = mysqli_query ($dbc, $q);
if (mysqli_num_rows($r) == 1) {
$row = mysqli_fetch_array ($r, MYSQLI_ASSOC);
mysqli_free_result($r);
header ("Content-Type: {$row['image_type']}\n");
header ("Content-disposition: inline; filename=\"{$row['image_name']}\"\n");
header ("Content-Length: {$row['image_size']}\n");
echo $row['image'];
}
mysql_close ( $dbc );
?>
M metalboy Medlem sedan jan. 2005 953 inlägg Felet beror på radbrytningen mellan ?> och <?php på rad 1 och 2. Det skickas nämligen till besökaren som "output" och du kan då inte sätta egna headers. Om du testar att surfa direkt till test.php så ska du - om du har aktiverat visning av felmeddelanden - se ett felmeddelande som säger typ "Warning: Cannot modify header information - headers already sent".
Lösning:
Skriv så här istället
<?php require_once("includes/functions.inc.php");
$dbc = @mysqli_connect('localhost', 'an', 'ln', 'db')
Det finns ingen som helst anledning att hoppa in och ur php-läge i det fallet
P phpNyb Medlem sedan apr. 2010 23 inlägg Tack metalboy,
Jag provat med följande men bilden syns inte än!
<?php require_once("includes/functions.inc.php");
$dbc = @mysqli_connect('localhost', 'an', 'ln', 'db')
Tack!
@nders Medlem sedan juni 2000 32 967 inlägg Prova att gå till url:en direkt via webbläsarens adress-rad istället för att gå via en <img>-tagg - då kan du se om koden genererar något felmeddelande eller om något oväntat skrivs ut som gör att det inte blir någon bild.
mvh
P phpNyb Medlem sedan apr. 2010 23 inlägg Jag har provat direkt via webbläsarens adress-rad, jag får fel-meddelande: Bilden kan inte visas, då den innehåller fel.
Men när jag tar bort raden: (require_once("includes/functions.inc.php"); ) så funkar det. Men jag behöver inbädda koden in i sidan i header, funktioner...
Tack!
@nders Medlem sedan juni 2000 32 967 inlägg
Men jag behöver inbädda koden in i sidan i header, funktioner...
Vad menar du med det? En bild är en bild.
M metalboy Medlem sedan jan. 2005 953 inlägg Har du någon form av output i functions.inc.php ? Tänk på att radbrytningar och mellanslag utanför "php-läge" räknas som output.
Du kan också prova att kommentera bort dina headers och se om du får något php-felmeddelande då.
P phpNyb Medlem sedan apr. 2010 23 inlägg Tack så mycket! det fungerar
Tack så mycket!!!!
Det är just vad det berodde på, jag hade radbrytningar och mellanslag i functions.inc.php, jag tog bort dem sedan började fungera.
Tack för hjälpen!