1,105,633 Community Members

How to display image from sql database ?

Member Avatar
LWS
Newbie Poster
13 posts since Feb 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Hi, i had upload image to mySQL database...
The problem is i unable to open or view the image that uploaded.
May i know how display image from database by selectted id ???


the picture below is my "upload" table...
Appreciate for you help

Attachments table.PNG 16.54KB
Member Avatar
Shanti C
Posting Virtuoso
1,675 posts since Jul 2008
Reputation Points: 106 [?]
Q&As Helped to Solve: 165 [?]
Skill Endorsements: 4 [?]
 
0
 

like this:

$imagecontent = $row[content];
header("Content-type: .$row[type].");
print $imagecontent ;
Member Avatar
LWS
Newbie Poster
13 posts since Feb 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

like this:

$imagecontent = $row[content];
header("Content-type: .$row[type].");
print $imagecontent ;

thanks for your help ...but it display a blank page ...i dont know why...

here is image.php

<?php  

$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password="1234"; // Mysql password 
$db_name="new"; // Database name 

// Connect to server and select database.
$con = mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
			
$query  = "SELECT * FROM upload "  ;
$result = mysql_query($query) or die("Query failed ($query) - " . mysql_error());	
?>
				
<table width="1000" border="0" cellspacing="1" cellpadding="0">
<tr>
<td>
<table width="1000" border="1" cellspacing="0" cellpadding="3">
<tr>
<strong>List of Case Procedure </strong> 
</tr>

<tr>
<td align="center" ><strong>id</strong></td>
<td align="center" ><strong>name</strong></td>
<td align="center"><strong>type</strong></td>

<td align="center" ><strong>Update</strong></td>
</tr>

<?php 
while($rows=mysql_fetch_array($result)){
?>
<tr>

<td><?php echo $rows["id"]; ?></td>
<td><?php echo $rows["name"];?></td>
<td><?php echo $rows["type"]; ?></td>

<td ><a href="view.php?id=<?php echo $rows['id']; ?>">Display</a></td>
</tr>

<?php
}
?>
<?php
mysql_close($con);
?>

this is view.php

<?php
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password="1234"; // Mysql password 
$db_name="new"; // Database name 
//$tbl_name="action"; // Table name 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// get value of id that sent from address bar

$id =$_GET['id'];

$query  = "SELECT type, content FROM upload WHERE id= $id";
$result = mysql_query($query) or die("Query failed ($query) - " . mysql_error());		
$imagecontent = $row[content];
header("Content-type: .$row[type].");
print $imagecontent ;

mysql_close();
?>

Can u help me find out the problem in my coding??

Member Avatar
Shanti C
Posting Virtuoso
1,675 posts since Jul 2008
Reputation Points: 106 [?]
Q&As Helped to Solve: 165 [?]
Skill Endorsements: 4 [?]
 
0
 

try to change these lines like as shown below:

$imagecontent = $row['content'];
$type=$row['type'];
header("Content-type: .$type.");
print $imagecontent ;
Member Avatar
LWS
Newbie Poster
13 posts since Feb 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

try to change these lines like as shown below:

$imagecontent = $row['content'];
$type=$row['type'];
header("Content-type: .$type.");
print $imagecontent ;

i still get the same result --------blank page , nothing display in web browser...
which part i did wrong??

<?php
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password="1234"; // Mysql password 
$db_name="new"; // Database name 
 
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); // get value of id that sent from address bar 
$id =$_GET['id'];


$query  = "SELECT type, content FROM upload WHERE id= $id ";
$result = mysql_query($query) or die("Query failed ($query) - " . mysql_error());	
	$imagecontent = $row['content'];
	$type=$row['type'];s
	header("Content-type: .$type.");
	print $imagecontent ;
	
mysql_close();
?>
Member Avatar
Shanti C
Posting Virtuoso
1,675 posts since Jul 2008
Reputation Points: 106 [?]
Q&As Helped to Solve: 165 [?]
Skill Endorsements: 4 [?]
 
0
 

in the above code where is the $row defined.
i think it is missing.Please check.
and print mysql_num_rows($result); , whether it is returning rows or not.
and also check your insert query once.

Member Avatar
trueedmar
Newbie Poster
3 posts since Mar 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

post if you still need help i've just worked out how to do this myself

Member Avatar
diafol
Where are my eyes?
12,977 posts since Oct 2006
Reputation Points: 1,821 [?]
Q&As Helped to Solve: 1,848 [?]
Skill Endorsements: 92 [?]
Moderator
Featured
Sponsor
 
0
 
$type=$row['type'];s
	header("Content-type: .$type.");

to this:

$type=$row['type'];
header("Content-type: $type");

??

You could also print out your query to see if it is retrieving what you think it should.

Member Avatar
trueedmar
Newbie Poster
3 posts since Mar 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

http://www.anyexample.com/programming/php/php_mysql_example__image_gallery_(blob_storage).xml this the source and I will try to explain as best as i can.

so in your database table as its pretty similar you just need to alter the fields.

`id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(64) character SET utf8 NOT NULL,
  `ext` varchar(8) character SET utf8 NOT NULL,
  `image_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `data` mediumblob NOT NULL,
  PRIMARY KEY  (`id`)

next bite is easy just copy this php above code any html.

<?php
$db_host = 'localhost'; // don't forget to change 
$db_user = 'mysql-user'; 
$db_pwd = 'mysql-password';

$database = 'test';
$table = 'ae_gallery';
// use the same name as SQL table

$password = '123';
// simple upload restriction,
// to disallow uploading to everyone


if (!mysql_connect($db_host, $db_user, $db_pwd))
    die("Can't connect to database");

if (!mysql_select_db($database))
    die("Can't select database");

// This function makes usage of
// $_GET, $_POST, etc... variables
// completly safe in SQL queries
function sql_safe($s)
{
    if (get_magic_quotes_gpc())
        $s = stripslashes($s);

    return mysql_real_escape_string($s);
}

// If user pressed submit in one of the forms
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // cleaning title field
    $title = trim(sql_safe($_POST['title']));

    if ($title == '') // if title is not set
        $title = '(empty title)';// use (empty title) string

    if ($_POST['password'] != $password)  // cheking passwors
        $msg = 'Error: wrong upload password';
    else
    {
        if (isset($_FILES['photo']))
        {
            @list(, , $imtype, ) = getimagesize($_FILES['photo']['tmp_name']);
            // Get image type.
            // We use @ to omit errors

            if ($imtype == 3) // cheking image type
                $ext="png";   // to use it later in HTTP headers
            elseif ($imtype == 2)
                $ext="jpeg";
            elseif ($imtype == 1)
                $ext="gif";
            else
                $msg = 'Error: unknown file format';

            if (!isset($msg)) // If there was no error
            {
                $data = file_get_contents($_FILES['photo']['tmp_name']);
                $data = mysql_real_escape_string($data);
                // Preparing data to be used in MySQL query

                mysql_query("INSERT INTO {$table}
                                SET ext='$ext', title='$title',
                                    data='$data'");

                $msg = 'Success: image uploaded';
            }
        }
        elseif (isset($_GET['title']))      // isset(..title) needed
            $msg = 'Error: file not loaded';// to make sure we've using
                                            // upload form, not form
                                            // for deletion


        if (isset($_POST['del'])) // If used selected some photo to delete
        {                         // in 'uploaded images form';
            $id = intval($_POST['del']);
            mysql_query("DELETE FROM {$table} WHERE id=$id");
            $msg = 'Photo deleted';
        }
    }
}
elseif (isset($_GET['show']))
{
    $id = intval($_GET['show']);

    $result = mysql_query("SELECT ext, UNIX_TIMESTAMP(image_time), data
                             FROM {$table}
                            WHERE id=$id LIMIT 1");

    if (mysql_num_rows($result) == 0)
        die('no image');

    list($ext, $image_time, $data) = mysql_fetch_row($result);

    $send_304 = false;
    if (php_sapi_name() == 'apache') {
        // if our web server is apache
        // we get check HTTP
        // If-Modified-Since header
        // and do not send image
        // if there is a cached version

        $ar = apache_request_headers();
        if (isset($ar['If-Modified-Since']) && // If-Modified-Since should exists
            ($ar['If-Modified-Since'] != '') && // not empty
            (strtotime($ar['If-Modified-Since']) >= $image_time)) // and grater than
            $send_304 = true;                                     // image_time
    }


    if ($send_304)
    {
        // Sending 304 response to browser
        // "Browser, your cached version of image is OK
        // we're not sending anything new to you"
        header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ts).' GMT', true, 304);

        exit(); // bye-bye
    }

    // outputing Last-Modified header
    header('Last-Modified: '.gmdate('D, d M Y H:i:s', $image_time).' GMT',
            true, 200);

    // Set expiration time +1 year
    // We do not have any photo re-uploading
    // so, browser may cache this photo for quite a long time
    header('Expires: '.gmdate('D, d M Y H:i:s',  $image_time + 86400*365).' GMT',
            true, 200);

    // outputing HTTP headers
    header('Content-Length: '.strlen($data));
    header("Content-type: image/{$ext}");

    // outputing image
    echo $data;
    exit();
}
?>

change this code to fit your database.

next code just make it fit your website.

<html><head>
<title>MySQL Blob Image Gallery Example</title>
</head>
<body>
<?php
if (isset($msg)) // this is special section for
                 // outputing message
{
?>
<p style="font-weight: bold;"><?=$msg?>
<br>
<a href="<?=$PHP_SELF?>">reload page</a>
<!-- I've added reloading link, because
     refreshing POST queries is not good idea -->
</p>
<?php
}
?>
<h1>Blob image gallery</h1>
<h2>Uploaded images:</h2>
<form action="<?=$PHP_SELF?>" method="post">
<!-- This form is used for image deletion -->

<?php
$result = mysql_query("SELECT id, image_time, title FROM {$table} ORDER BY id DESC");
if (mysql_num_rows($result) == 0) // table is empty
    echo '<ul><li>No images loaded</li></ul>';
else
{
    echo '<ul>';
    while(list($id, $image_time, $title) = mysql_fetch_row($result))
    {
        // outputing list
        echo "<li><input type='radio' name='del' value='{$id}'>";
        echo "<a href='{$PHP_SELF}?show={$id}'>{$title}</a> &ndash; ";
        echo "<img src='{$_SERVER['PHP_SELF']}?show={$id}' width='140' height='140' />";
        echo "<small>{$image_time}</small></li>";
    }

    echo '</ul>';

    echo '<label for="password">Password:</label><br>';
    echo '<input type="password" name="password" id="password"><br><br>';

    echo '<input type="submit" value="Delete selected">';
}
?>

</form>
<h2>Upload new image:</h2>
<form action="<?=$PHP_SELF?>" method="POST" enctype="multipart/form-data">
<label for="title">Title:</label><br>
<input type="text" name="title" id="title" size="64"><br><br>

<label for="photo">Photo:</label><br>
<input type="file" name="photo" id="photo"><br><br>

<label for="password">Password:</label><br>
<input type="password" name="password" id="password"><br><br>

<input type="submit" value="upload">
</form>
</body>
</html>

red part need to be correct ahref as we to load new page with image and img to display the image on your web page.

this is a nice code if i could thank the coder i would saved me a tonne of work for a personal project.

Member Avatar
kokfui
Newbie Poster
14 posts since Jan 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
-1
 

dear trueedmar
i following you step but it show
Forbidden

You don't have permission to access /Bidot.com/< on this server.
any idea how to fix?

Member Avatar
trueedmar
Newbie Poster
3 posts since Mar 2011
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

i've not taken this code live its only been tested on xampp. screen shot the error screen so i can take a proper troubleshooting look.

sorry bad grammar

You
This article has been dead for over three months: Start a new discussion instead
Post:
Start New Discussion
Tags Related to this Article