Jump to content

Uploading Image Location to DB and Image File to Directory using PDO?


Go to solution Solved by hankmoody,

Recommended Posts

Can I get some help or a point in the right direction.

  • I am trying to create a form that allows me to add, edit and delete records from a database.
  • I can add, edit and delete if I dont include the image upload code.
  • If I include the upload code I cant edit records without having to upload the the same image to make the record save to the database.
  • So I can tell I have got the code processing in the wrong way, thing is I cant seem to see or grasp the flow of this, to make the corrections I need it work.

Any help would be great!

 

Here is the form add.php code

<?php require_once ("dbconnection.php"); 
	$id="";
	$venue_name="";
	$address="";
	$city="";
	$post_code="";			
	$country_code="";
	$url="";
	$email="";
	$description="";
	$img_url="";
	$tags="";
	
	if(isset($_GET['id'])){
		$id = $_GET['id'];
		$sqlLoader="Select from venue where id=?";
		$resLoader=$db->prepare($sqlLoader);
		$resLoader->execute(array($id));		
	} 
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Add Venue Page</title>
<link href='http://fonts.googleapis.com/css?family=Droid+Sans' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
	
</head>
<body>
<div class="container">
<?php
	$sqladd="Select * from venue where id=?";
	$resadd=$db->prepare($sqladd);
	$resadd->execute(array($id));
		while($rowadd = $resadd->fetch(PDO::FETCH_ASSOC)){
		$v_id=$rowadd['id'];
		$venue_name=$rowadd['venue_name'];
		$address=$rowadd['address'];	
		$city=$rowadd['city'];
		$post_code=$rowadd['post_code'];
		$country_code=$rowadd['country_code'];
		$url=$rowadd['url'];
		$email=$rowadd['email'];
		$description=$rowadd['description'];
		$img_url=$rowadd['img_url'];
		$tags=$rowadd['tags'];
	}
?>
   <h1 class="edit-venue-title">Add Venue:</h1>
   <form role="form" enctype="multipart/form-data" method="post" name="formVenue" action="save.php">
    <input type="hidden" name="id" value="<?php echo $id; ?>"/>

	<div class="form-group">
		 	<input class="form-control" type="hidden" name="id" value="<?php echo $id; ?>"/>
		 	<p><strong>ID:</strong> <?php echo $id; ?></p>
		 	<strong>Venue Name: *</strong> 
		 	<input class="form-control" type="text" name="venue_name" value="<?php echo $venue_name; ?>"/><br/>
		 	<br/>
		 	<strong>Address: *</strong>
		 	<input class="form-control" type="text" name="address" value="<?php echo $address; ?>"/><br/>
		 	<br/>
		 	<strong>City: *</strong>
		 	<input class="form-control" type="text" name="city" value="<?php echo $city; ?>"/><br/>
		 	<br/>
		 	<strong>Post Code: *</strong>
		 	<input class="form-control" type="text" name="post_code" value="<?php echo $post_code; ?>"/><br/>
		 	<br/>
		 	<strong>Country Code: *</strong>
		 	<input class="form-control" type="text" name="country_code" value="<?php echo $country_code; ?>"/><br/>
		 	<br/>
		 	<strong>URL: *</strong>
		 	<input class="form-control" type="text" name="url" value="<?php echo $url; ?>"/><br/>
		 	<br/>
		 	<strong>Email: *</strong>
		 	<input class="form-control" type="email" name="email" value="<?php echo $email; ?>"/><br/>
		 	<br/>
		 	<strong>Description: *</strong>
		 	<textarea  class="form-control"  type="text" name="description" rows ="7" value=""><?php echo $description; ?></textarea><br/>
		 	<br/>
		 	<strong>Image Upload: *</strong>
		 	<input class="form-control" type="file" name="image" value="<?php echo $img_url; ?>"/>
		 	      		<small>File sizes 300kb's and below 500px height and width.<br/><strong>Image is required or data will not save.</strong></small>	 	<br/><br/>
		 	<strong>Tags: *</strong>
		 	<input class="form-control" type="text" name="tags" value="<?php echo $tags; ?>"/><small>comma seperated vales only, e.g. soul,hip-hop,reggae</small><br/>
		 	<br/>
 			<p>* Required</p>
 			<br/>
 			<input  class="btn btn-primary" type="submit" name="submit" value="Save">

	 </div>

    </form>
</div>
</body>
</html>

Here is the save.php code

<?php	
error_reporting(E_ALL);
  ini_set("display_errors", 1);
	include ("dbconnection.php");
	$venue_name=$_POST['venue_name'];
	$address=$_POST['address'];
	$city=$_POST['city'];
	$post_code=$_POST['post_code'];
	$country_code=$_POST['country_code'];
	$url=$_POST['url'];
	$email=$_POST['email'];
	$description=$_POST['description'];
	$tags=$_POST['tags'];
	$id=$_POST['id'];

	if(is_uploaded_file($_FILES['image']['tmp_name'])){ 
    $folder = "images/hs-venues/"; 
    $file = basename( $_FILES['image']['name']); 
    $full_path = $folder.$file; 
    if(move_uploaded_file($_FILES['image']['tmp_name'], $full_path)) { 
    //echo "succesful upload, we have an image!";
    var_dump($_POST);



		if($id==null){

				$sql="INSERT INTO venue(venue_name,address,city,post_code,country_code,url,email,description,img_url,tags)values(:venue_name,:address,:city,:post_code,:country_code,:url,:email,:description,:img_url,:tags)";
				$qry=$db->prepare($sql);
				$qry->execute(array(':venue_name'=>$venue_name,':address'=>$address,':city'=>$city,':post_code'=>$post_code,':country_code'=>$country_code,':url'=>$url,':email'=>$email,':description'=>$description,':img_url'=>$full_path,':tags'=>$tags));
		}else{
				$sql="UPDATE venue SET venue_name=?, address=?, city=?, post_code=?, country_code=?, url=?, email=?, description=?, img_url=?, tags=? where id=?";
				$qry=$db->prepare($sql);
				$qry->execute(array($venue_name, $address, $city, $post_code, $country_code, $url, $email, $description, $full_path, $tags, $id));
				}

		if($success){
			var_dump($_POST);
            echo "<script language='javascript' type='text/javascript'>alert('Successfully Saved!')</script>";
            echo "<script language='javascript' type='text/javascript'>window.open('index.php','_self')</script>";
        	}
        
        

        else{
        	var_dump($_POST);
            echo "<script language='javascript' type='text/javascript'>alert('Successfully Saved!')</script>";
            echo "<script language='javascript' type='text/javascript'>window.open('index.php','_self')</script>";
    		}
    	
    	} //if uploaded
    	
    	else{ 
    		var_dump($_POST);
            echo "<script language='javascript' type='text/javascript'>alert('Upload Recieved but Processed Failed!')</script>";
            echo "<script language='javascript' type='text/javascript'>window.open('index.php','_self')</script>";
    		} 
		
		} //move uploaded
			else{
			var_dump($_POST);
            echo "<script language='javascript' type='text/javascript'>alert('Successfully Updated.')</script>";
            echo "<script language='javascript' type='text/javascript'>window.open('index.php','_self')</script>";
			} 

	?>

Thanks in advance!

Edited by hankmoody

Change your flow to only upload an image file on new records.  Let the user upload the image file first.  If the upload is received successfully then prompt the user for the info behind it.  To ensure that you don't get a lot of images w/out info, create an image record to track the image name and the date is was uploaded and periodically go thru the image table to look for images that are over a certain age and do not have a true info record in the main table.  Basically, you will never have to modify the image once you have it, so just worry about the data after you do. 

HHhmm, thats sounds good, however that would make the image more important than the data, so to speak.

 

The idea is, the image is optional, so they dont have to upload an image whilst creating a record (venue) they can come back later and update the record with an image, or change it.

 

Does that make sense?

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.