Avatar billede okidoky Nybegynder
11. marts 2005 - 13:55 Der er 23 kommentarer og
1 løsning

Kan man lave en database med billeder i?

hej

Jeg vil lave et billede gallary af mine billeder, men jeg vil gerne om det er på samme måde som at lave en gæste bog, eller er det lidt anderledes.

og hvordan skal jeg sætte mine billeder i databasen?
og hvordan viser jeg dem på en side?

Mange tak for hjælpen
Avatar billede -thomas- Nybegynder
11. marts 2005 - 13:59 #1
Ja, du kan godt lægge billeder i en database, men vil anbefale at du lægger dem i en mappe istedet. Du kan så referere til filerne i mappen i din database med beskrivelse osv.
Avatar billede bromer Nybegynder
11. marts 2005 - 13:59 #2
Du kan gemme billede-data i et BLOB [1] felt. Du kan så for eksempel lave show.php der modtager et id som her:

<?
header("Content-type: Image/png");
print <hent data fra mysql databasen>
?>

[1] http://dev.mysql.com/doc/mysql/en/blob.html
Avatar billede m_bold Praktikant
11. marts 2005 - 14:00 #3
Du kan ikke ligge billederne direkte i databasen, men du kan jo bare gemme navnet fx "cykel.jpg" i databasen, og så lave sådan en her på din side, hvis du altså bruger php.

<img src="../pics/<?php echo $row['billede'] ?>
Avatar billede bromer Nybegynder
11. marts 2005 - 14:00 #4
-thomas-> Der er fordele og ulemper ved begge dele. Jeg er på mange måder enig med dig, men på den anden side er det også en meget elegant løsning at have data i ens database.
Avatar billede -thomas- Nybegynder
11. marts 2005 - 14:00 #5
Hvordan du viser dem på en side afhænger af, hvilket sprog siden skal laves i.

Hvis du vælger at lægge filerne i en mappe frem for direkte i databasen, kan du bruge FileSystemObject (se http://www.4guysfromrolla.com/webtech/faq/FileSystemObject/faq1.shtml)
Avatar billede m_bold Praktikant
11. marts 2005 - 14:01 #6
ok - jeg var ikke klar over at man faktisk godt kunne gemme selve billedet...
Avatar billede bromer Nybegynder
11. marts 2005 - 14:02 #7
m_bold> jo man kan. Det kræver som jeg skrev bare at man lige laver et script til at outputte dem korrekt.

Faktisk kan man også bare skrive dem direkte i sin HTML, hvis man formaterer det ifølge MIME standarden. Jeg mener dog kun det er IE der understøtter det pt. Det er vist sådan IE gemmer et website i een fil.
Avatar billede bromer Nybegynder
11. marts 2005 - 14:03 #8
-thomas-> Det er klart. Det er bare mig der er blevet vant til at folk kun spørger til MySQL hvis de arbejder med PHP
Avatar billede -thomas- Nybegynder
11. marts 2005 - 14:04 #9
Jeg ved ikke om den er elegant - jeg synes det er pænere at lægge filer i mapper og dataene i databasen.
Hvis du bruger BLOB-felter til store billeder og opdaterer ofte, vil databasen fragmenteres uhensigsmæssig meget og belaste mysql-serveren mere end højst nødvendigt.
Avatar billede okidoky Nybegynder
11. marts 2005 - 14:06 #10
jeg bruger php
Avatar billede m_bold Praktikant
11. marts 2005 - 14:07 #11
Oops, manglede lige et par gåseøjne. Sådan her skal det se ud...

<img src="../pics/<?php echo $row['billede']" ?>
Avatar billede okidoky Nybegynder
11. marts 2005 - 14:08 #12
hvad er forskellen på at hvis jeg lægger dem i en mappe på harddisken eller på databasen?
Avatar billede bromer Nybegynder
11. marts 2005 - 14:08 #13
Jeg mener det er elegant fordi du ikke adskiller de informationer du har omkring dit billede og så billedet selv.

Det er rigtigt at det nok vil belaste MySQL serveren mere end det behøves, og det er også et af de punkter hvor MySQL DBMS'et godt kunne forbedre sig meget.
Avatar billede bromer Nybegynder
11. marts 2005 - 14:11 #14
okidoky: Hvis du benytter PHP kan du bruge den kode jeg postede tidligere som svar. Forskellen er at når du beder dit filsystem om at hente en fil sker det temmelig hurtigt. MySQL databasen skal først ned og finde data hvorefter den skal gå igennem de sider på filsystemet hvor billedet ligger.

Idet MySQL ikke kører på sin egen partition ligger det jo nødvendigvis oven på et eksisterende filsystem sådan så de arbejde MySQL serveren skal foretage for at finde billede frem er overhead i en eller anden forstand.
Avatar billede okidoky Nybegynder
11. marts 2005 - 14:13 #15
Hvis jeg f.eks. har 10 billeder på c:/billed/

hvordan vil databasen vide hvor billederne er?
eller skal jeg gemme dem i databasen, og hvordan går jeg det?
hvordan vises de på en side? (script)
Avatar billede bromer Nybegynder
11. marts 2005 - 14:18 #16
Du har 2 muligheder:

a) Når en bruger uploader et billede gemmer du følgende ting i databasen
  filnavn, størrelse, dimension, data (f.eks. base64 encoding af billedet. Du kan så vise det med <img src="script.php?id=some-id"/> som jeg forklarede tidligere

b) Du gemmer de samme informationer uden data. Du flytter så filen til en mappe hvor du gerne vil have filerne og gemmer så istedet pathen til billede i databasen. På den måde kan du vise billedet på siden med et normalt <img stc="path.to.pic"/>
Avatar billede okidoky Nybegynder
11. marts 2005 - 14:25 #17
hvis vi nu siger at man ikke kan uploade billeder, men at jeg selv finder billeder som jeg vil have på min side.

Ligesom her på denne side, hvor de viser billeder.

http://galleri.kulturellen.dk/Torvet040706/HPIM0878

en af gangen
Avatar billede bromer Nybegynder
11. marts 2005 - 14:27 #18
Aha, og hvordan læger du dem på din server.. FTP eller noget i den stil?
Avatar billede okidoky Nybegynder
11. marts 2005 - 14:32 #19
??? jeg er ikke lige med nu

ja det kan man da godt ik??
Avatar billede okidoky Nybegynder
11. marts 2005 - 14:34 #20
altså jeg kan godt lave det med html, men du ved... så skal jeg lægge hver eneste billede på plads, og mange sider, hvis mange billeder.

Men jeg vil finde en løsning, hvordan skriver jeg det script, kan du gøre det f.eks. med et billede? hvis du vil??
Avatar billede bromer Nybegynder
11. marts 2005 - 14:36 #21
Jo selvfølgelig kan du finde billeder og uploade dem via FTP. Jeg spurgte bare.

Hvis du har filerne liggende i en mappe kan du benytte nogle af de dir og fil funktioner PHP har til at finde filerne og vise dem. Hvis vi tager udgangspunkt i at du har en række billeder i $mappe kan du vise dem med:

<?php
$dir = "/etc/php5/";

// Open a known directory, and proceed to read its contents
if (is_dir($mappe)) {
  if ($dh = opendir($mappe)) {
      while (($file = readdir($dh)) !== false) {
          echo "<img src=" . $mappe . "/" . $file . "/>";
      }
      closedir($dh);
  }
}
?>
Avatar billede okidoky Nybegynder
11. marts 2005 - 14:41 #22
Mmmm... tak nu er jeg med, mange tak
Avatar billede bromer Nybegynder
11. marts 2005 - 14:51 #23
hehe.. nu var det kode jeg havde kopiret fra php.net og jeg kan se at jeg glemte at ændre førte linie.. men du fatter det nok alligevel
Avatar billede bromer Nybegynder
11. marts 2005 - 15:04 #24
fik du det løst.. i så fald må du gerne lige lukke spørgsmålet.
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
Computerworld tilbyder specialiserede kurser i database-management

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