Avatar billede 7th Praktikant
22. december 2003 - 18:08 Der er 9 kommentarer og
1 løsning

Udtræk billede fra mysql database

Jeg har fulgt denne tutorial, http://www.phpbuilder.com/columns/florian19991014.php3, og har fået uploaded et billede til databasen. Men jeg kan ikke få det hevet ud igen i et <img> tag. Mit script ser således ud.

$res = mysql_query ("SELECT * FROM billeder WHERE id = \"1\"") or die (mysql_error());
$row = mysql_fetch_array ($res);

header ("content-type: ".$row['format']."");

<html>
<head>
<title>MySQL Billeder</title>
</head>

<body>

echo "<img src=\"".$_SERVER['PHP_SELF']."?billede=1\" alt=\"".$row['beskrivelse']."\" height=\"".$row['dimension_y']."\" width=\"".$row['dimension_x']."\">";

</body>
</html>
Avatar billede Slettet bruger
22. december 2003 - 18:16 #1
Læs side 3 af den tutorial igen ;-)
Avatar billede 7th Praktikant
22. december 2003 - 18:27 #2
Kan du ikke give et hint til hvad jeg gør galt.

Hvis jeg skriver

header ("content-type: ".$row['format']."");
echo $row['billede'];

får jeg billedet frem, men ikke i et <img> tag som jeg gerne vil have det. Jeg har rettet billede=1 til id=1.
Avatar billede Slettet bruger
22. december 2003 - 18:50 #3
Du skal lave dit <img>-tag i et normalt html-dokument. Det kan naturligvis godt være lavet af php. galleri.php kunne for eksempel se sådan ud (lidt simplificeret):
<?php
if (isset($_GET['id'])) {
$id=$_GET['id']+0;
$res = mysql_query ("SELECT * FROM billeder WHERE id = '$id'") or die (mysql_error());
$row = mysql_fetch_array ($res);
header ("content-type: ".$row['format']."");
echo $row['billede'];

}else{
<html>
<head><title>Billeder</title></head>
<body>
<?php
$res = mysql_query ("SELECT * FROM billeder) or die (mysql_error());

while ($row=mysql_fetch_assoc($res)){
echo "<img src='?id={$row['id']}' alt='{$row['beskrivelse']}' height='{$row['dimension_y']}' width='{$row['dimension_x']}'>";
echo "<br>\n";
}
?>
</body>
</html>
<?php
}
?>
Avatar billede Slettet bruger
22. december 2003 - 18:52 #4
Rettelse:

<?php
if (isset($_GET['id'])) {
$id=$_GET['id']+0;
$res = mysql_query ("SELECT * FROM billeder WHERE id = '$id'") or die (mysql_error());
$row = mysql_fetch_array ($res);
header ("content-type: ".$row['format']."");
echo $row['billede'];

}else{
?>
<html>
<head><title>Billeder</title></head>
<body>
<?php
$res = mysql_query ("SELECT * FROM billeder) or die (mysql_error());

while ($row=mysql_fetch_assoc($res)){
echo "<img src='?id={$row['id']}' alt='{$row['beskrivelse']}' height='{$row['dimension_y']}' width='{$row['dimension_x']}'>";
echo "<br>\n";
}
?>
</body>
</html>
<?php
}
?>
Avatar billede 7th Praktikant
22. december 2003 - 19:06 #5
Ahh, man skal lave to udtræk :o) Tester lige.
Avatar billede Slettet bruger
22. december 2003 - 19:11 #6
Denne linie virker måske lidt fjollet

$id=$_GET['id']+0;

men i princippet kan man ikke være sikker på om brugeren kun sender et tal. Hvis brugeren har sendt tekst, bliver det lynhurtigt lavet om til et 0, med denne linie.
Avatar billede Slettet bruger
22. december 2003 - 19:16 #7
Og så må du selv rode med tabeller og andre ting, så det står smart, og så den ikke smider alle billeder i hovedet på en.

Jeg ville forreste normalt have lavet to forskellige php-filer til de to udtræk. En, der kun viser et enkelt billede, og en anden, der viser siden.
Avatar billede 7th Praktikant
22. december 2003 - 19:17 #8
OK, jeg har bare skrevet if (isset ($_GET['vis']) && is_numeric ($_GET['vis'])).

Det virker fint nu tak, men jeg har lige et lille tillægsspørgsmål. Hvis man både udtrækker billeder og filer, for eksempel html, er der så en content-type som dækker dette behov?
Avatar billede Slettet bruger
22. december 2003 - 19:26 #9
Hvis du mener at have selve billedet og html i samme udtræk, så tror jeg ikke browserne understøtter det, men jeg er ikke sikker.

Det vil i givet fald være en af multipart-typerne.http://www.iana.org/assignments/media-types/multipart/

Nok multipart/mixed eller multipart/related
Avatar billede 7th Praktikant
22. december 2003 - 19:30 #10
OK, tak for hjælpen. Vil lege videre :o)
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