Jump to content

Upload Image With Db Insert


Aviway
 Share

Recommended Posts

hallow,I have the next script that upload images into a folder in the server and insert a new row to the DB.The problam is, that after the first upload that I make, the DB no longer inserting new row's .the upload php code+form:

<?php//define a maxim size for the uploaded images in Kb define ("MAX_SIZE","1000"); //This function reads the extension of the file. It is used to determine if the file  is an image by checking the extension. function getExtension($str) {		 $i = strrpos($str,".");		 if (!$i) { return ""; }		 $l = strlen($str) - $i;		 $ext = substr($str,$i+1,$l);		 return $ext; }//This variable is used as a flag. The value is initialized with 0 (meaning no error  found)  //and it will be changed to 1 if an errro occures.  //If the error occures the file will not be uploaded. $errors=0;//checks if the form has been submitted if(isset($_POST['Submit']))  { 	//reads the name of the file the user submitted for uploading 	$image=$_FILES['image']['name']; 	//if it is not empty 	if ($image)  	{ 	//get the original name of the file from the clients machine 		$filename = stripslashes($_FILES['image']['name']); 	//get the extension of the file in a lower case format		  $extension = getExtension($filename); 		$extension = strtolower($extension); 	//if it is not a known extension, we will suppose it is an error and will not  upload the file,  	//otherwise we will do more tests if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))  		{		//print error message 			echo '<h1>Unknown extension!</h1>'; 			$errors=1; 		} 		else 		{//get the size of the image in bytes //$_FILES['image']['tmp_name'] is the temporary filename of the file //in which the uploaded file was stored on the server $size=filesize($_FILES['image']['tmp_name']);//compare the size with the maxim size we defined and print error if biggerif ($size > MAX_SIZE*1024){	echo '<h1>You have exceeded the size limit!</h1>';	$errors=1;}//we will give an unique name, for example the time in unix time format$image_name=time().'.'.$extension;//the new name will be containing the full path where will be stored (images folder)$newname="../gallery/".$image_name;//we verify if the image has been uploaded, and print error instead$copied = copy($_FILES['image']['tmp_name'], $newname);if (!$copied) {	echo '<h1>Copy unsuccessfull!</h1>';	$errors=1;}}}}//If no errors registred, print the success message if(isset($_POST['Submit']) && !$errors)  {	$sub_id = $_GET['subId'];	header('Location: do_upload_img.php?subId='.$sub_id.'&image_name='.$image_name.''); } ?> <!--next comes the form, you must set the enctype to "multipart/frm-data" and use an input type "file" --> <form name="newad" method="post" enctype="multipart/form-data"  action=""> <table> 	<tr><td><input type="file" name="image"></td></tr> 	<tr><td><input name="Submit" type="submit" value="Upload image"></td></tr> </table>	 </form>

The function code:

<?include "../connect_to_db.php";$image_name = $_GET['image_name'];$sub_id = $_GET['subId'];function add_new_pic($image_name,$sub_id){	$query = "INSERT INTO links (link_image_src,link_sub_id) VALUES ('$image_name',$sub_id)";	mysql_query("SET NAMES 'utf8'");	$result=mysql_query($query);	if(!$result)	return false;	else	return true;}header('Location:update.php?subId='.$sub_id.'');?>

Tanx for helping...?!

Link to comment
Share on other sites

o.k I fixed that like this:

<?php//define a maxim size for the uploaded images in Kb define ("MAX_SIZE","1000"); //This function reads the extension of the file. It is used to determine if the file  is an image by checking the extension. function getExtension($str) {		 $i = strrpos($str,".");		 if (!$i) { return ""; }		 $l = strlen($str) - $i;		 $ext = substr($str,$i+1,$l);		 return $ext; }//This variable is used as a flag. The value is initialized with 0 (meaning no error  found)  //and it will be changed to 1 if an errro occures.  //If the error occures the file will not be uploaded. $errors=0;//checks if the form has been submitted if(isset($_POST['Submit']))  { 	//reads the name of the file the user submitted for uploading 	$image=$_FILES['image']['name']; 	//if it is not empty 	if ($image)  	{ 	//get the original name of the file from the clients machine 		$filename = stripslashes($_FILES['image']['name']); 	//get the extension of the file in a lower case format		  $extension = getExtension($filename); 		$extension = strtolower($extension); 	//if it is not a known extension, we will suppose it is an error and will not  upload the file,  	//otherwise we will do more tests if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))  		{		//print error message 			echo '<h1>Unknown extension!</h1>'; 			$errors=1; 		} 		else 		{//get the size of the image in bytes //$_FILES['image']['tmp_name'] is the temporary filename of the file //in which the uploaded file was stored on the server $size=filesize($_FILES['image']['tmp_name']);//compare the size with the maxim size we defined and print error if biggerif ($size > MAX_SIZE*1024){	echo '<h1>You have exceeded the size limit!</h1>';	$errors=1;}//we will give an unique name, for example the time in unix time format$image_name=time().'.'.$extension;//the new name will be containing the full path where will be stored (images folder)$newname="../gallery/".$image_name;//we verify if the image has been uploaded, and print error instead$copied = copy($_FILES['image']['tmp_name'], $newname);if (!$copied) {	echo '<h1>Copy unsuccessfull!</h1>';	$errors=1;}}}}//If no errors registred, print the success messageif(isset($_POST['Submit']) && !$errors)  {	$sub_id = $_GET['subId'];	add_new_pic($image_name,$sub_id);	header('Location:update.php?subId='.$sub_id.''); } ?> <!--next comes the form, you must set the enctype to "multipart/frm-data" and use an input type "file" --> <form name="newad" method="post" enctype="multipart/form-data"  action=""> <table> 	<tr><td><input type="file" name="image"></td></tr> 	<tr><td><input name="Submit" type="submit" value="Upload image"></td></tr> </table>	 </form>

And I put the this function in other functions file that included to this page.

function add_new_pic($image_name,$sub_id){	$query = "INSERT INTO links (link_image_src,link_sub_id) VALUES ('$image_name',$sub_id)";	mysql_query("SET NAMES 'utf8'");	$result=mysql_query($query);	if(!$result)	return false;	else	return true;}

But I didnt anderstand where to add this line that you wrote and what is doing.

$ext = array_pop(explode('.', $filename));

Edited by Aviway
Link to comment
Share on other sites

That's just a quicker way to get a file extension. Instead of this:

function getExtension($str) {		 $i = strrpos($str,".");		 if (!$i) { return ""; }		 $l = strlen($str) - $i;		 $ext = substr($str,$i+1,$l);		 return $ext;}

You could do this:

function getExtension($str) {  return array_pop(explode('.', $str));}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...