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?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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'].'"/>'; ?>
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 :)
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 :)
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 ?
23. december 2006 - 22:47
#5
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.
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 ?
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.
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 :)
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
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?
:-/
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']; } ?>
24. december 2006 - 01:07
#13
og så sammen med din nuværende vaaben.php burde det virke :-)
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?
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?
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?
24. december 2006 - 02:16
#17
Anyway... for at være sikker har jeg gjort det nu. (givet alle varer et billede)
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 :)
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/
24. december 2006 - 14:35
#20
Oookay, det gør jeg! og TAK! God jul ;)
Vi tilbyder markedets bedste kurser inden for webudvikling