2 Replies - 1763 Views - Last Post: 31 July 2009 - 09:07 PM Rate Topic: -----

#1 fallen0ne09  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 45
  • Joined: 13-March 09

How to select an image saved in mysql databases

Posted 31 July 2009 - 05:45 AM

thank you for those who sent me tips on my last post... but i cant still be able to select the images saved in mysql database, some suggested to save the images in a directory or folder then connect it with mysql, but my teacher wants to use mysql database even if the system slows down... here is my code when i upload the images and it works properly...
<?php

// Connect to database

$errmsg = "";
if (! @mysql_connect("localhost","root","")) {
		$errmsg = "Cannot connect to database";
		}
@mysql_select_db("shimm");


$q = <<<CREATE
create table pix (
	pid int primary key not null auto_increment,
	title text,
	imgdata longblob);
CREATE;
@mysql_query($q);

// Insert any new image into database

if ($_REQUEST[completed] == 1) {
		// Need to add - check for large upload. Otherwise the code
		// will just duplicate old file;-)
		// ALSO - note that latest.img must be public write and in a
		// live appliaction should be in another (safe!) directory.
		move_uploaded_file($_FILES['imagefile']['tmp_name'],"latest.img");
		$instr = fopen("latest.img","rb");
		$image = addslashes(fread($instr,filesize("latest.img")));
		if (strlen($instr) < 149000) {
		
				mysql_query ("insert into pix (title, imgdata) values (\"".
				$_REQUEST[whatsit].
				"\", \"".
				$image.
				"\")");
		} else {
				$errmsg = "Too large!";
		}

}

// Find out about latest image

$gotten = @mysql_query("select * from pix order by pid desc limit 1");
if ($row = @mysql_fetch_assoc($gotten)) {
		$title = htmlspecialchars($row[title]);
		$bytes = $row[imgdata];
} else {
		$errmsg = "There is no image in the database yet";
		$title = "no database image available";
		// Put up a picture of our training centre
		$instr = fopen("../wellimg/ctco.jpg","rb");
		$bytes = fread($instr,filesize("../wellimg/ctco.jpg"));
}

// If this is the image request, send out the image

if ($_REQUEST[gim] == 1) {
		header("Content-type: image/jpeg");
		print $bytes;
		exit ();
		}
?>



<html><head>
<title>Upload an image to a database</title>
<body bgcolor=white>
<h2>Here's the latest Item</h2>
<font color=red><?= $errmsg ?></font>
<center>
  <p><img src=?gim=1 width=144><br>
	<b>
	<?= $title ?>
  </p>
  <p><?php #MySQL-Update.php
# Copyright (c) 2007 by Dr. Herong Yang, http://www.herongyang.com/
#
	  $description = $_POST['description'];
  $price = $_POST['price'];
  $type = $_POST['type'];
  $small = $_POST['small'];
  $large = $_POST['large'];
  $meduim = $_POST['middle'];
  $name = $_POST['whatsit'];
	
  $con = mysql_connect("localhost", "root", "");
  $ok = mysql_select_db("shimm", $con);
  
  $sql = "UPDATE pix SET description = '$description' ,price = '$price' ,type = '$type' ,small = '$small', large = '$large', meduim = '$meduim' WHERE title = '$name'";
  if (mysql_query($sql, $con)) {
	print("Producs Saved: ".mysql_affected_rows()."\n");
  } else {
	print("SQL statement failed.\n");
	print(mysql_errno($con).": ".mysql_error($con)."\n"); 
  }

  mysql_close($con); 
?>&nbsp;</p>
  <p>
</center>
<hr>
<h2>Please add new item:</h2>
<form enctype=multipart/form-data method=post>
  <p>
  <input type=hidden name=MAX_FILE_SIZE value=150000>
  <input type=hidden name=completed value=1>
	Please choose an image to upload: 
  <input type=file name=imagefile>
  <br>
	Please enter the title of that picture: 
  <input name=whatsit>
  </p>
  <p>Please Enter Description</p>
  <p>
	<textarea name="description" cols="50" rows="10"></textarea>
  </p>
  <p>Please Enter Price:<strong>P</strong> 
	<input type="text" name="price">
  <strong>  .00</strong></p>
  <p>Please Enter Size: Small <input type="checkbox" name="small" value="small"> Meduim <input type="checkbox" name="middle" value="meduim"> Large <input type="checkbox" name="large" value="large">
  </p>
  <p>Please Enter Type: <select name="type"><option>Men Shirts</option>
											  <option>Women Shirts</option>
											<option>Kid Shirts (Boys)</option>
											<option>Kid Shirts (Girls)</option></select><br>
	then: 
	<input type=submit>
  </p>
</form><br>
<hr>
</body>
</html>


and when i used the ordinary select code in php it worked but the output is binary numbers and letters and no image was shown only the text elements was shown...
$sql = 'SELECT * FROM `data` ORDER BY `data`.`Msg` ASC LIMIT 0, 30 '; 
i dont know what to do could anyone help me... i really appreciate it...

Is This A Good Question/Topic? 0
  • +

Replies To: How to select an image saved in mysql databases

#2 mocker  Icon User is offline

  • D.I.C Regular
  • member icon

Reputation: 50
  • View blog
  • Posts: 466
  • Joined: 14-October 07

Re: How to select an image saved in mysql databases

Posted 31 July 2009 - 07:04 AM

In your last example you are accessing the 'data' table, and in the first one you are accessing the 'pix' table.. not sure what you have in the data table. Did you check mysql to see if there if the image data got saved correctly to 'pix' ?

For displaying it, try changing your output code to:
	   $image = imagecreatefromstring($bytes);
	   header("Content-type: image/jpeg");
	   header("Content-disposition: inline");
	   imagejpeg($image); //this assumes all the images are jpg.  To handle multiple formats you'll  need a switch statement here based on content type
	   imagedestroy($image);
		exit ();


Was This Post Helpful? 1
  • +
  • -

#3 fallen0ne09  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 45
  • Joined: 13-March 09

Re: How to select an image saved in mysql databases

Posted 31 July 2009 - 09:07 PM

View Postmocker, on 31 Jul, 2009 - 06:04 AM, said:

In your last example you are accessing the 'data' table, and in the first one you are accessing the 'pix' table.. not sure what you have in the data table. Did you check mysql to see if there if the image data got saved correctly to 'pix' ?

For displaying it, try changing your output code to:
	   $image = imagecreatefromstring($bytes);
	   header("Content-type: image/jpeg");
	   header("Content-disposition: inline");
	   imagejpeg($image); //this assumes all the images are jpg.  To handle multiple formats you'll  need a switch statement here based on content type
	   imagedestroy($image);
		exit ();


im sorry for the confusion the pix table is the one who holds my pics... sorry about that... thanks for the suggestion...
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1