Avatar billede bootup Nybegynder
23. december 2006 - 12:49 Der er 19 kommentarer og
1 løsning

Indsætte billede i PHP fra MySQL database

Jeg vil indsætte et billede fra min database, og tænker at det kan man vel gøre sådan her:

echo "<img border='0' src='".$row['billede']."' width='55' height='55'>\n";

Men med dette får jeg bare et tekst output fra billedet, hvilket ser ret dumt ud. Har læst man skal bruge header(); ... som jeg så har prøvet mig lidt frem med.

Men som i kan se har det ikke lykedes: http://visualweb.dk/noc/index.php?side=vaaben

Hvordan får jeg det billede ud af databasen?
Avatar billede windcape Praktikant
23. december 2006 - 12:52 #1
1) det er dumt at gemme et billede i en database, gem en sti istedet
2) løsning:

lav ny fil, og kald den image.php

image.php:
<?php

if(isset($_GET['id'])) {

header("content-type: image/jpeg"); // assumerer at du bruger jpg

// hent billede via. SQL, ud fra det angivne id

echo $row['billede'];

}

?>

tilbage i vaaben.php gør du så:

<?php echo '<img src="image.php?id='.$row['id'].'"/>'; ?>
Avatar billede bootup Nybegynder
23. december 2006 - 14:45 #2
HvordanDu kan se hele min kode her:
http://visualweb.dk/noc/hl_vaaben.php

Hvordan skal jeg så sætte det ind der? Hvor skal den GET id fra?
Undskyld, men er stadig nybegynder :)
Avatar billede windcape Praktikant
23. december 2006 - 22:06 #3
Sådan som du har sat det ind nu er fint fint, så mangler du bare at kode image.php

--

side.php?id=2

$id = $_GET['id']; // $id er nu 2 :)
Avatar billede bootup Nybegynder
23. december 2006 - 22:45 #4
Alle billederne skal jo være på samme side, så nytter det vel ikke noget at der kommer til at stå f.eks. id=2 :S ?
Avatar billede bootup Nybegynder
23. december 2006 - 22:47 #5
Du kan se image.php her: http://visualweb.dk/noc/hl_image.php
Avatar billede windcape Praktikant
23. december 2006 - 23:04 #6
Prøv at lave mindste copy&paste og læse mere hvad jeg skriver :-)

Det er jo meningen at du skal hente billedet der hører til det specifikke id i image.php  og så vise dette. Du kan ikke hente det binære data og vise det direkte på vaaben.php og derfor skal du bruge image.php som et medium til formålet.
Avatar billede bootup Nybegynder
23. december 2006 - 23:44 #7
Vil du have billedets id til at stå i adresselinjen?
Hvis jeg gør det vil den vel tro den skal sætte samme billede ind alle steder, fordi at alle de forskellige billeder er på samme side. Så bliver vel på en eller anden måde nødt til at få mit vareid ind ?
Avatar billede windcape Praktikant
23. december 2006 - 23:46 #8
Prøv nu bare at starte med at få image.php til at vise et billede fra din database ud fra et bestemt id.
Avatar billede bootup Nybegynder
24. december 2006 - 00:02 #9
Prøver og prøver... men har intet i min database ved navn id, hvilket det stykker her...

.$row['id'].

...i det her, henviser til:

<?php echo '<img src="image.php?id='.$row['id'].'"/>'; ?>



Muligt jeg bare er en nød til det her :)
Avatar billede windcape Praktikant
24. december 2006 - 00:08 #10
Kom nu... tænk lidt over det, så er jeg sikker på du forstå det ude mærket.

Og om det er id eller vareid du skal burde ved du jo bedst selv. Det afhænger af hvor dårligt du har designet din database :p
Avatar billede bootup Nybegynder
24. december 2006 - 00:28 #11
Min database er opbygget nogenlunde sådan her: http://upit.jtw.dk/dl/yjx/ (så ved du hvad felter jeg har at gøre med)

Hvis du vil kigge i min kode igen, har jeg lavet lidt om... ved ikke om det er rigtigt?

:-/
Avatar billede windcape Praktikant
24. december 2006 - 01:07 #12
image.php:
<?php

if(isset($_GET['id'])) {
    $id  = mysql_real_escape_string($_GET['id']));
    $sql = "SELECT vareid,billede FROM vare WHERE vareid=".$id;
    $res = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($row);
   
    header("content-type: image/jpeg");
    echo $row['billede'];
}

?>
Avatar billede windcape Praktikant
24. december 2006 - 01:07 #13
og så sammen med din nuværende vaaben.php burde det virke :-)
Avatar billede bootup Nybegynder
24. december 2006 - 01:38 #14
$row = mysql_fetch_assoc($row);

skal vel være:

$row = mysql_fetch_assoc($res);

Syntes det nye til image.php ser godt ud (og logisk), men jeg tror jeg er dum eller sådan noget, for jeg kan ikke få det til at virke.

Hvis du ser på al kode, så burde det da virke nu?
Avatar billede windcape Praktikant
24. december 2006 - 01:51 #15
ja, det var en tastefejl :)

http://visualweb.dk/noc/image.php?id=1 burde virke hvis du har et billede samme med vareid 1

Men jeg kan ikke se noget billede, er du sikker på at du ikke bare mangler et billede i databasen?
Avatar billede bootup Nybegynder
24. december 2006 - 02:10 #16
Der er kun billede til vareid 1 .... kan det være der skal være billede til alle før det vil virke?
Avatar billede bootup Nybegynder
24. december 2006 - 02:16 #17
Anyway... for at være sikker har jeg gjort det nu. (givet alle varer et billede)
Avatar billede bootup Nybegynder
24. december 2006 - 03:38 #18
Tog mig en halv times tid at finde ud af hvad der var galt, men har nu fundet ud af hvordan den skal kringles:

<?php
include("sqlconnect.php");

if(isset($_GET['id'])) {
    $sql = "SELECT vareid,billede FROM vare WHERE vareid=".$_GET['id'];
    $res = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($res);
 
    header("content-type: image/jpeg");
    echo $row['billede'];
}

?>


Jeg tror det var det der mysql_real_escape_string som gjorde mere skade end gavn.

Men windcape... du må altså meget gerne poste et svar, havde slet ikke kommet så langt uden dig :)
Avatar billede windcape Praktikant
24. december 2006 - 13:09 #19
mysql_real_escape_string er for at undgå SQL injections, jeg vil i det mindste så råde dig til at typecaste $_GET['id'] til et nummer (da du alligevel kun sender numre) for at undgå sikkerhedsfejl.

<?php
include("sqlconnect.php");

if(isset($_GET['id'])) {
    $id = (int)$_GET['id'];
    $sql = "SELECT vareid,billede FROM vare WHERE vareid=".$id;
    $res = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($res);

    header("content-type: image/jpeg");
    echo $row['billede'];
}

?>

Og jeg går ud fra resten virker nu ? :)

Glædelig Jul \o/
Avatar billede bootup Nybegynder
24. december 2006 - 14:35 #20
Oookay, det gør jeg! og TAK!


God jul ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging