[PHP] weergeven image uit db

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is gelukt images[gif,jpeg] in de database op te slaan helaas lukt het me niet om plaatjes op het scherm weer te geven. Op internet heb ik bijvoorbeeld gd_library gevonden maar dat lijkt mij meer voor het creëren van plaatjes. Tevens heb ik de functie exif-image gevonden waar je het type image mee kan bepalen.

Kan iemand mij vertellen hoe ik deze figuren simpelweg kan weergeven?

Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Dit is al regelmatig langsgekomen hier op GoT dacht ik, maar in feite is het gewoon het volgende:

PHP:
1
2
3
4
5
6
7
8
9
<?php
mysql_connect(); mysql_select_db("database");
$query = mysql_query("SELECT image, contenttype 
FROM images 
WHERE imageid='". addslashes($_GET['imageid']) ."'");
$res = mysql_fetch_array($query);
header("Content-Type: {$res['contenttype']}");
echo $res['image'];
?>


En ervoor zorgen dat er niks anders van output meer is in die code. Die moet je dan dus dus aanroepen in een pagina met

code:
1
[img]"image.php?imageid=1"[/img]

[ Voor 26% gewijzigd door dingstje op 03-01-2004 09:49 . Reden: PHP tags + opmaak ]

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor de snelle reactie,

Nu krijg ik de volgende foutmelding:
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\displayimage.php:12) in C:\Program Files\Apache Group\Apache2\htdocs\displayimage.php on line 16

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Kijk eens op regel 16? Er mag geen enkele content gestuurd worden, ook geen spatie of enter, voordat je het plaatje stuurt.

[ Voor 16% gewijzigd door gorgi_19 op 03-01-2004 10:13 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het vindt alsvolgt plaats.

PHP:
1
2
3
4
5
6
7
<?php
mysql_connect("localhost","root"); mysql_select_db("gs");
$query = mysql_query("SELECT bin_data, filetype FROM binary_data WHERE id='".addslashes($_GET['id']) ."'");
$res = mysql_fetch_array($query);
header("Content-Type:{$res['filetype']}");  commentaar=rgl 16
echo $res['image'];
?> 


Waarbij het database ontwerp er alsvolgt uitziet:
CREATE TABLE binary_data (
id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
description CHAR(50),
bin_data LONGBLOB,
filename CHAR(50),
filesize CHAR(50),
filetype CHAR(50)
);

[ Voor 26% gewijzigd door Verwijderd op 03-01-2004 10:21 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

je moet ook op regel 12 wezen, lees de foutmelding ;)
Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\displayimage.php:12) in C:\Program Files\Apache Group\Apache2\htdocs\displayimage.php on line 16

[ Voor 72% gewijzigd door Erkens op 03-01-2004 10:20 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op 03 januari 2004 @ 10:19:
je moet ook op regel 12 wezen, lees de foutmelding ;)


[...]
Rgl 12 is nu niks anders dan:
<?php

hier blijft hij op nekken:

voor de duidelijkheid het gehele php script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<?php
mysql_connect("localhost","root"); mysql_select_db("gs");
$query = mysql_query("SELECT bin_data, filetype FROM binary_data WHERE id='".addslashes($_GET['id']) ."'");
$res = mysql_fetch_array($query);
header("Content-Type:{$res['filetype']}");
echo $res['image'];
?> 
</BODY>
</HTML>


Spaties/enters heb ik niet kunnen vinden.

[ Voor 20% gewijzigd door Verwijderd op 03-01-2004 10:31 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 03 januari 2004 @ 10:30:
voor de duidelijkheid het gehele php script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
*knip*
</BODY>
</HTML>
wat is dat?
juist html output ;)

[ Voor 40% gewijzigd door Erkens op 03-01-2004 10:32 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Erhm.. spaties mag niet nee....
De rest van de html die er boven staat en er onder staat al helemaal niet.. :X :X

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gorgi_19 schreef op 03 januari 2004 @ 10:32:
Erhm.. spaties mag niet nee....
De rest van de html die er boven staat en er onder staat al helemaal niet.. :X :X
Ahhumm excuses voor de gemaakte fout...

The image “http://10.0.0.154/displayimage.php?id=11” cannot be displayed, because it contains errors.

Deze foutmelding krijg ik nu

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 03 januari 2004 @ 10:35:
[...]


Ahhumm excuses voor de gemaakte fout...

The image “http://10.0.0.154/displayimage.php?id=11” cannot be displayed, because it contains errors.

Deze foutmelding krijg ik nu
haal de regel met de "header" er eens uit, wellicht zie je dan de foutmelding ;)

aangezien je browser een plaatje verwacht terwijl er wat anders komt, zoals bijvoorbeeld een foutmelding van php

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heren!

Bedankt voor alle support !! Het werkt!!

WHOOHOOO

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 03 januari 2004 @ 10:38:
Heren!

Bedankt voor alle support !! Het werkt!!

WHOOHOOO
wat was het nu?

offtopic:
overigens vraag ik me af waarom je images in je db wilt opslaan...

[ Voor 18% gewijzigd door Erkens op 03-01-2004 10:40 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Erkens schreef op 03 januari 2004 @ 10:39:
[...]
offtopic:
overigens vraag ik me af waarom je images in je db wilt opslaan...
Wat is er mis mee?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Daar zijn hier in /14 al een hoop discussies over geweest, of het goed is om plaatjes in een database te zetten of niet :) Zie bijvoorbeeld dit topic: plaatjes in db opslaan?? :) Quote daaruit:
bartvb:
Stukje van een posting op de MySQL mailinglist:

Consider the two senarious:

to show db images:
- the image is first read from the data file into MySQL record buffer
- from the record buffer the image goes into the socket
- the application reads it from the socket into its internal buffer
- the contents of the internal buffer are forwarded to the user

file system, not even super highly optimized:
- the image is read from the data file into internal buffer of the web
server.
- the contents of the internal buffer are forwarded to the user

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 kent de discussies.... :)

Alleen is het imho niet per definitie slecht. Om op voorhand al te zeggen dat het niet goed is, vind ik te ver gaan.

En ik mis 1 onderdeel in het verhaal wat je quote; OutputCache c.q. caching. Ik neem aan dat PHP dat ook kent? :)

[ Voor 41% gewijzigd door gorgi_19 op 03-01-2004 11:01 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op 03 januari 2004 @ 10:39:
[...]

wat was het nu?

offtopic:
overigens vraag ik me af waarom je images in je db wilt opslaan...
We hadden
PHP:
1
echo $res['bin_data'];

verkeerd gedefinieerd er stond i.p.v. bin_data een verkeerde veldnaam.

We vragen ons nu alleen nog af hoe wij de query zo kunnen wijzigen dat alle figuren worden weergeven als de pagina wordt opgevraagd.

Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
code:
1
[img]"image.php?imageid=1"[/img] [img]"image.php?imageid=2"[/img] enz.


Lijkt me logisch?

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ik zeg niet dat er wat mis mee is, maar ik vraag me af waarom hiervoor gekozen is omdat ik bezig ben met een dergelijk systeem en ik zit af te wegen of ik nu wel of niet foto's in de db duw.
Kijk aan de ene kant heb je geen last van extra files die misschien per ongeluk verwijderd kunnen worden, maar aan de andere kant is het beheer van een dergelijke database wat lastiger en bovendien maakt het je tabel vele malen groter, niet dat dat veel uitmaakt, ruimte zat, maar voor een backupscript lijkt het me wat onhandig ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op 03 januari 2004 @ 13:09:
[...]

ik zeg niet dat er wat mis mee is, maar ik vraag me af waarom hiervoor gekozen is omdat ik bezig ben met een dergelijk systeem en ik zit af te wegen of ik nu wel of niet foto's in de db duw.
Kijk aan de ene kant heb je geen last van extra files die misschien per ongeluk verwijderd kunnen worden, maar aan de andere kant is het beheer van een dergelijke database wat lastiger en bovendien maakt het je tabel vele malen groter, niet dat dat veel uitmaakt, ruimte zat, maar voor een backupscript lijkt het me wat onhandig ;)
Ik heb bij de afweging voor db gebruik gekozen omdat de plaatjes zéér klein zullen zijn. Zo klein dat ze ik meen onder de 64kb blijven waardoor dit in de tabel onder één stringregel kan worden opgeslagen (corrigeer me a.j.b. als ik het fout heb). Ik heb het getest en het levert tot nu toe geen enkele performance problemen op! Positief dus.
Pagina: 1