Avatar billede downshooter Nybegynder
16. september 2004 - 12:52 Der er 43 kommentarer og
1 løsning

PHP/mySQL hente billede fra database

Hej Eksperter!
Jeg har oprettet min database, hvor va_billede er BLOB.

er jeg helt galt i byen med den kode her?.

og jeg vil meget gerne have hjælp til hvordan man tager billeder ved hjælp af kode ud af databasen.

håber i forstår hvad jeg mener. Ellers spørg videre.

jeg vil se svar med kode!.

---- billede.php ----
<?php
$conn = mysql_connect("localhost","admin","123456");
mysql_select_db("db_vare");

$query = mysql_query("SELECT va_billeder FROM vare_tabel");
$row = mysql_fetch_row($query);

header('Content-type: image/jpeg');
echo $row;

---- show.php ---- (det er så her billederne skal vises)

?>

    echo '<td height="85" width="85">';
    echo '<img src="'.billede.php.'">';
    echo '</td>';
Avatar billede kourinsu Nybegynder
16. september 2004 - 13:04 #1
Du skal huske at gennemløbe $row med fx en while løkke...
Avatar billede downshooter Nybegynder
16. september 2004 - 13:07 #2
ja okay, men det hjælper ikke med at billedet kommer frem, jeg får bare en hvid kasse med rødt kryds i, så jeg ved ikke om det er min mysql sætning der skal nogle parameter på ?..
Need backup! ;)
Avatar billede kourinsu Nybegynder
16. september 2004 - 13:07 #3
Altså noget i stil med:

while($row = mysql_fetch_array($query))
{
print $row['va_billede'];
}
Avatar billede danic Nybegynder
16. september 2004 - 13:08 #4
$query = mysql_query("SELECT va_billeder FROM vare_tabel");
while($row = mysql_fetch_array($query))
{
?>
    <td height="85" width="85">
        <img src="<?=$row[va_billeder]?>">
    </td>
<?
}
?>
Avatar billede kourinsu Nybegynder
16. september 2004 - 13:10 #5
Prøv at se hvad der står i source-koden. Det er en god måde at se hvor fejlen ligger. Måske mangler der en mappeadresse eller en extension...
Avatar billede erikjacobsen Ekspert
16. september 2004 - 13:14 #6
So du skriver det får du kun første billede, men det er vel blot til en start. Du skal
vist kun ændre
    echo '<img src="'.billede.php.'">';
til
    echo '<img src="billede.php">';
Avatar billede downshooter Nybegynder
16. september 2004 - 13:14 #7
jeg har prøvet begge jeres eksempler og jeg kan ikke se forksel på outputtet, for jeg får stadig ikke andet frem en den kasse der viser billedet ikke kan vises

er det min sql sætning den er gal med?
skal den header ikke bruges til et eller andet?
Avatar billede erikjacobsen Ekspert
16. september 2004 - 13:15 #8
På længere sigt skal du gøre noget i retning af:

    echo '<img src="billede.php?id=17">';

og

$query = mysql_query("SELECT va_billeder FROM vare_tabel where id=".$_GET['id']);
Avatar billede erikjacobsen Ekspert
16. september 2004 - 13:16 #9
Og selvfølgelig:
  echo $row['va_billede'];
Avatar billede avminarm Juniormester
16. september 2004 - 13:18 #10
brug en ekstra fil til selve billedet:

billede.php
<?php
$code=addslashes($_GET['id]);

  $result=@mysql_query("select billede,filetype from billeder where code='$code'");
  $billede=@mysql_result($result,0,"billede");
  $type  =@mysql_result($result,0,"filetype");

  header("Content-type: $type");
  print $billede;
?>

og hent så billedet sådan her:
<?php
$res=mysql_query("select * from billeder") or die(mysql_error());
  while ($row=mysql_fetch_array($res)) {
    print "<img src=\"billede.php?id=$row[id]\">";
  }
?>
Avatar billede avminarm Juniormester
16. september 2004 - 13:19 #11
erik>> du genkender måske :o) - det er vist nok noget du selv engeng har bikset sammen i et lignende sprg.
Avatar billede downshooter Nybegynder
16. september 2004 - 13:24 #12
avminarm: skal jeg overskrive den gode jeg allerede har stående i billede.php, eller skal jeg tilføje det til dokumentet ?
Avatar billede downshooter Nybegynder
16. september 2004 - 13:27 #13
kode* staveplade til mig.

tillæg til forrige kommentar: den kode du har skrevet til at skulle være i billede.php , det er da ikke alt er det, det?
for så mangler jeg da connect til database osv.?
Avatar billede downshooter Nybegynder
16. september 2004 - 13:40 #14
jeg har taget et dump af min database, ved godt det ikke er det helt rigtige sted at ligge det ind, men det omhandler jo egentlig mit spørgsmål.

#
# Struktur dump for tabellen `vare_tabel`
#

CREATE TABLE vare_tabel (
  va_ID int(11) NOT NULL auto_increment,
  va_type varchar(50) NOT NULL default '',
  va_kategori varchar(50) NOT NULL default '',
  va_overskrift text NOT NULL,
  va_producent text NOT NULL,
  va_pris int(11) NOT NULL default '0',
  va_lagerstatus int(11) NOT NULL default '0',
  va_billeder longblob NOT NULL,
  va_beskrivelse text NOT NULL,
  PRIMARY KEY  (va_ID),
  UNIQUE KEY va_ID (va_ID),
  FULLTEXT KEY va_beskrivelse (va_beskrivelse),
  FULLTEXT KEY va_beskrivelse_2 (va_beskrivelse),
  FULLTEXT KEY va_beskrivelse_3 (va_beskrivelse),
  FULLTEXT KEY va_beskrivelse_4 (va_beskrivelse),
  FULLTEXT KEY va_beskrivelse_5 (va_beskrivelse)
) TYPE=MyISAM COMMENT='tabel over tilføjelse af vare til katalog';

#
# Data dump for tabellen `vare_tabel`
#

INSERT INTO vare_tabel VALUES (18, 'hardware', 'Bundkort', 'hej hej hjeh jeh ej', 'hejh ejh ejh ej', 1337, 10, 'Array', 'desadsadsa das dsa dsa dsa');
Avatar billede avminarm Juniormester
16. september 2004 - 13:55 #15
selvfølgelig skal du connecte til databasen, ud over forbindelse til databasen indehlder billede.php ikke andet end de linjer der er vist

det her bude være noget i den retning:
billede.php
<?php
  // Forbind til database her

  $code=addslashes($_GET['id]); //billedid kan hentes via adresselinien f.eks.

  $result=@mysql_query("select va_billeder from varetabel where va_ID='$code'");
  $billede=@mysql_result($result,0,"billede");

  header("Content-type: image/jpeg");
  print $billede;
?>

og hent så billedet sådan her:
<?php
// Forbind til database her
$res=mysql_query("select * from vare_tabel") or die(mysql_error());
  while ($row=mysql_fetch_array($res)) {
    print "<img src=\"billede.php?id=$row[va_ID]\">";
  }
?>
Avatar billede downshooter Nybegynder
16. september 2004 - 14:01 #16
jeg får stadig intet billede frem, jeg havde fået det sat op som du siger der avminarm
Avatar billede erikjacobsen Ekspert
16. september 2004 - 14:53 #17
Der står heller intet billede i din database, der står

  'Array'
Avatar billede downshooter Nybegynder
16. september 2004 - 14:55 #18
Ja, det studsede jeg godt nok også selv over, for inde i phpmyadmin, når jeg kigger på de poster der er, så står der BLOB (jeg har valgt largeblob til den)
Avatar billede erikjacobsen Ekspert
16. september 2004 - 14:59 #19
Hvordan sætter du ellers billedet ind?
Avatar billede downshooter Nybegynder
16. september 2004 - 15:27 #20
{
    $indsaet = mysql_query("INSERT INTO vare_tabel (va_id, va_type, va_kategori, va_overskrift, va_producent, va_pris, va_lagerstatus, va_billeder, va_beskrivelse)".
  "VALUES ('', '$typen', '$kategori', '$overskrift', '$producent', '$pris', '$lagerstatus', '$billede', '$beskrivelse')");
}
Avatar billede downshooter Nybegynder
16. september 2004 - 15:28 #21
$billede = $_REQUEST["billede"];

<div class="frmobj">&nbsp;Billede</div> <input type="file" name="billede" class="beskrivelse"><br>
Avatar billede avminarm Juniormester
16. september 2004 - 15:28 #22
hvordan defineres $billede ?
Avatar billede avminarm Juniormester
16. september 2004 - 15:30 #23
du er nødt til at indlæse billedet binært - se evt: http://eksperten.dk/spm/203399
Avatar billede downshooter Nybegynder
16. september 2004 - 15:31 #24
er BLOB ikke = binært ?
Avatar billede avminarm Juniormester
16. september 2004 - 15:38 #25
jo blob er et binært felt/celle i din tabel - så den kan kun fyldes med binært indhold ;o) og hvis du f.eks angiver $billede = "images/pic.jpg"; er det ikke binært

så er du nødt til at gøre noget i den her stil:
  $filename = "images/pic.jpg";
  $billede = addslashes(fread(fopen($filename,"r"),filesize($filename)));
  $indsaet = mysql_query("INSERT INTO vare_tabel (va_id, va_type, va_kategori, va_overskrift, va_producent, va_pris, va_lagerstatus, va_billeder, va_beskrivelse)".
  "VALUES ('', '$typen', '$kategori', '$overskrift', '$producent', '$pris', '$lagerstatus', '$billede', '$beskrivelse')");
Avatar billede downshooter Nybegynder
16. september 2004 - 15:44 #26
hvor bliver følgende variabler brugt henne ?
  $filename = "images/pic.jpg";
  $billede = addslashes(fread(fopen($filename,"r"),filesize($filename)));
Avatar billede downshooter Nybegynder
16. september 2004 - 15:45 #27
hov nej vent, tror det er mig som dummer mig
Avatar billede downshooter Nybegynder
16. september 2004 - 15:47 #28
jeg får de 3 følgende fejl:
line 7 = $billede = addslashes(fread(fopen($filename,"r"),filesize($filename)));

Warning: fopen("images/pic.jpg", "r") - No such file or directory in c:\apache\htdocs\tilfoejvare.php on line 7

Warning: stat failed for images/pic.jpg (errno=2 - No such file or directory) in c:\apache\htdocs\tilfoejvare.php on line 7

Warning: Supplied argument is not a valid File-Handle resource in c:\apache\htdocs\tilfoejvare.php on line 7
Avatar billede downshooter Nybegynder
16. september 2004 - 15:49 #29
okay.. det er fordi at det går ind og påvirker min side hvor jeg bruger min sql der INSERT INTO.
Avatar billede downshooter Nybegynder
16. september 2004 - 15:50 #30
ahh.. det er fordi at jeg har to variabler der hedder det samme.

$billede = $_REQUEST["billede"];
og så den du skrev avminarm
Avatar billede downshooter Nybegynder
16. september 2004 - 15:54 #31
skal jeg skrive hele koden til den side hvor jeg indsætter i databasen?
Avatar billede downshooter Nybegynder
16. september 2004 - 16:11 #32
jeg sætter hele koden ind, for at i eksperter kan se lidt på det, da jeg ikke kan være ved pc'en de næste par timer:

<link href="style.css" rel="stylesheet" type="text/css">
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<?
//skaber forbindelse med mysql serveren
$conn = mysql_connect("localhost","admin","123456");

//angiver databasen
mysql_select_db("db_vare");
//har lavet type om til typen, da type er et reseveret ord i mange programmerins/script-sprog
$typen = $_REQUEST["typen"];
$kategori = $_REQUEST["kategori"];
$overskrift = $_REQUEST["overskrift"];
$producent = $_REQUEST["producent"];
$pris = $_REQUEST["pris"];
$lagerstatus = $_REQUEST["lagerstatus"];
$billede = $_REQUEST["billede"];
$beskrivelse = $_REQUEST["beskrivelse"];

//indsæter værdierne
IF($_REQUEST["knap"] == "Send")
{
  $indsaet = mysql_query("INSERT INTO vare_tabel (va_id, va_type, va_kategori, va_overskrift, va_producent, va_pris, va_lagerstatus, va_billeder, va_beskrivelse)".
  "VALUES ('', '$typen', '$kategori', '$overskrift', '$producent', '$pris', '$lagerstatus', '$billede', '$beskrivelse')");

} else {
?>
<?php
$drop1 = Array("hardware", "software");
$hardware = Array("Bundkort", "Lydkort", "Grafikkort");
$software = Array("MS_XP_PRO", "MS_XP_HOME", "Office_2003");
/*
De 3 Arrays herover, kan komme fra en database,
istedet for at være defineret her.
*/
echo "<SELECT class='dropdown1' name='typen' onChange='submit();'>\n";
echo "<OPTION VALUE='' SELECTED>Vælg en kategori</OPTION>\n";
foreach($drop1 AS $drop)
{
    if($_REQUEST["typen"] == $drop)
    {
        echo "<OPTION VALUE='$drop' SELECTED>$drop</OPTION>\n";
    } else {
        echo "<OPTION VALUE='$drop'>$drop</OPTION>\n";
    }
}
echo "</SELECT>";
echo "<SELECT class='dropdown2' name='kategori'>\n";
echo "<OPTION VALUE='' SELECTED>Vælg ". $_REQUEST["typen"] . "</OPTION>\n";
SWITCH($_REQUEST["typen"])
{
    CASE "hardware":
        foreach($hardware AS $hwdrop)
        {
            echo "<OPTION VALUE='$hwdrop'>$hwdrop</OPTION>\n";
        }
    BREAK;
    CASE "software":
        foreach($software AS $swdrop)
        {
            echo "<OPTION VALUE='$swdrop'>$swdrop</OPTION>\n";
        }
    BREAK;
}
echo "</SELECT>";
?>
<input type="hidden" name="referer" value="post_vare"><br>
<div class="frmobj">&nbsp;Overskrift</div> <input type="text" name="overskrift" class="beskrivelse"><br>
<div class="frmobj">&nbsp;Producent</div> <input type="text" name="producent" class="beskrivelse"><br>
<div class="frmobj">&nbsp;Pris</div> <input type="text" name="pris" class="beskrivelse"><br>
<div class="frmobj">&nbsp;Antal varer</div> <input type="text" name="lagerstatus" class="beskrivelse"><br>
<div class="frmobj">&nbsp;Billede</div> <input type="file" name="billede" class="beskrivelse"><br>
<div class="frmobj">&nbsp;Beskrivelse</div><textarea name="beskrivelse" rows="10" cols="0" style="width: 300px" class="textarea"></textarea><br>
<div class="frmobj">&nbsp;</div><input class="submittilfoej" type="submit" name="knap" value="Send">
</form>
<?php
}
?>
Avatar billede erikjacobsen Ekspert
16. september 2004 - 20:07 #33
Prøv at se anvendelsen af $_FILES i sidst nævnte link
Avatar billede avminarm Juniormester
16. september 2004 - 20:36 #34
ja du er nødt til at lave billedet som et fil-upload
Avatar billede erikjacobsen Ekspert
16. september 2004 - 20:38 #35
Øh - det var ikke et svar. Jeg havde ikke sat kryds der. Jeg skal bede spørgeren
om at afvise mit svar, tak.
Avatar billede downshooter Nybegynder
17. september 2004 - 08:05 #36
okay, det virker åbenbart ikke lige meget hvad der bliver gjort.
Er det så nemmere at få skrevet stien ind i databasen og hente, billederne fra en mappe el.l. ?
Hvis ja, nogen som har ideer ?
Avatar billede avminarm Juniormester
17. september 2004 - 08:43 #37
ja det er meget nemmere at få skrevet stien til billeder - dit felt i databasem skal så være "varchar" og så henter du bar billedet med:

echo "<img src=\"$row['billede']\">";
Avatar billede downshooter Nybegynder
17. september 2004 - 08:49 #38
avminarm, det ser jo straks nemmere ud, men så skulle billedet jo gerne blive uploaded til en mappe på serveren.
og filen skulle gerne omdøbes til et eller andet for at man ikke risikere at overskrive billeder som ligger på serveren i forvejen.
kan du også hjælpe med det?
Avatar billede avminarm Juniormester
17. september 2004 - 08:59 #39
jo mon ikke, men du kan faktisk downloade et ok uploadscript lige her: http://www.showsource.dk/php/vis_script.php?id=1064975823
Avatar billede erikjacobsen Ekspert
17. september 2004 - 09:50 #40
"det virker åbenbart ikke" ... jo det kan sagtens virke. Hvis du viser os hvad du
gør, kan vi måske hjælpe dig.
Avatar billede downshooter Nybegynder
17. september 2004 - 10:00 #41
jeg har fulgt det som både du, og arvminarm har skrevet
Avatar billede avminarm Juniormester
17. september 2004 - 10:03 #42
det erik mener at at det kan jo være at det ikke er blevet sammensat så hensigtsmæssigt! og derfor vil det ikke virke, derfor vil det evt. hjælpe hvis du viser dien filer (eller noget af dem) evt. fejlmeldinger
Avatar billede downshooter Nybegynder
17. september 2004 - 12:43 #43
ja ok, men jeg har snakket med min lærer og han fraråder mig til at gemme billederne i databasen, og da det nu en gang er ham som skal give mig mine karakter, så må jeg jo lytte til ham.
Så jeg skal have det lavet om til at billedet bliver uploaded til en mappe på serveren, og omdøbt, til whatever.
og stien til billedet bliver gemt i databasen.
du skrev et link arvminarm, det har jeg ikke haft tid til at kigge på endnu.
Avatar billede downshooter Nybegynder
20. september 2004 - 08:12 #44
lukker spørgsmålet. tak for hjælpen!
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