image uit database werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roland van Wanrooy

Roland van Wanrooy

10/10/2006 13:37:00
Quote Anchor link
Het is erg simpel om een image uit een database te tonen, maar toch lukt het me om een of andere reden niet.
Ik heb een applicatie met verschillende tabellen, die elk een eigen icon hebben.
Dat icon verschijnt dan in het menu. Althans, zo zou het moeten :)

Eerst de tabelstructuur:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE `_tables` (
  `id` int(11) NOT NULL auto_increment,
  `name` tinytext NOT NULL,
  `caption` tinytext NOT NULL,
  `level` tinyint(2) NOT NULL default '3',
  `image` blob,
  `is_list` tinyint(1) NOT NULL default '1',
  `is_view` tinyint(1) NOT NULL default '1',
  `is_edit` tinyint(1) NOT NULL default '1',
  `is_add` tinyint(1) NOT NULL default '1',
  `is_delete` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ;


Dan de "image.php" die de afhandeling doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
include ("inc.db.php");

$x_data    = $_GET["x"];
// $x_data: parameter string 'tabelnaam|id|veldnaam'
if (!($x_data == "") and !(is_null($x_data))) {
    $a = explode('|', $x_data);
    $x_tbl     = $a[0];
    $x_id     = $a[1];
    $x_fld    = $a[2];
    
    // nieuw object van database class
    $db = new dbSet;
    // sql: "select <field> from <table> where id = <id>"
    $db->dbSelect($x_fld, $x_tbl, 'id='.$x_id);
    if ($db->totalRecs() > 0) {
        // mysql_fetch_array()
        $row = $db->dbRecord();
        header("Content-type: image/gif");
        echo $row[0];
    }

    $db->dbClose();
}

?>



De betreffende class uit de css:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
img.imgPhoto {border:2px solid #666666;}


En tot slot de aanroep:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
session_start();
ob_start();

// ############################################### header
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Cache-Control: private");
header("Pragma: no-cache");

include_once("inc.db.php");

echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ';
echo '"http://www.w3.org/TR/html4/loose.dtd">';
echo '<html><head><title>[de titel]</title>';
echo '<link href="_global.css" rel="stylesheet" type="text/css" media="all" />';
echo '<link rel="icon" href="favicon.ico" type="image/x-icon" />';
echo '</head><body>'."\n\n";

// ############################################### body
// hard coded voor de test

echo '<img src="image.php?x=_tables|1|image" ';            
echo 'width="24" ';            
echo 'height="24" ';            
echo 'border="0" ';            
echo 'alt="alt!" ';            
echo 'title="alt!" ';            
echo 'class="imgPhoto" ';            
echo '/>'."\n\n\n\n";            

// ############################################### footer
echo '</body>';
echo '</html>';
[
/code]

Bronnen op het internet hebben een vergelijkbare structuur.
Zowel FF als IE laten wel de alt-tag zien, maar geen plaatje.
Als ik de blob als tekst ophaal, dan krijg ik deze WEL te zien.
Dit zegt me, dat hij 'm wel ophaalt uit de database en dat "image.php" dus klopt.

Wat gaat hier nu zo fout?

Roland
Gewijzigd op 01/01/1970 01:00:00 door Roland van Wanrooy
 
PHP hulp

PHP hulp

18/11/2024 14:32:18
 

10/10/2006 14:53:00
Quote Anchor link
Heb je al geprobeert om image.php los aan te roepen met error_reporting(E_ALL)?

Dit wel nog wel eens verheldering scheppen.
 
Roland van Wanrooy

Roland van Wanrooy

10/10/2006 15:20:00
Quote Anchor link
Yep, gedaan. Er zat een dubbele "session_start()" in die ik eruit heb gehaald.
Verder zijn er geen fouten.
Vreemd hè?... Snap er echt niks van.
 
M Ypma

M Ypma

10/10/2006 15:59:00
Quote Anchor link
dus als jij alleen print $row[0]; doets zie jij de output van het plaatje wel als tekst?...ik heb namelijk een flauw vermoedde van niet...
 
Roland van Wanrooy

Roland van Wanrooy

10/10/2006 15:59:00
Quote Anchor link
Het is niet waaaaar hè!!

$db->totalRecs()

moest zijn

$db->totalRecs

Nu werkt het. :$

Dat heb je ervan als je nieuwe classes maakt en je je ouwe meuk gaat aanpassen :)

Bedankt voor jullie reply.
Gewijzigd op 01/01/1970 01:00:00 door Roland van Wanrooy
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.