Jump to content

Upload image script not working with insert into


kevwood
Go to solution Solved by mac_gyver,

Recommended Posts

I have created to parts of code that work independently of each other but when i try combine them the upload part stops working!

 

here is my html form code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sonc Hydro -Mammoth Pro Tents</title>
<link rel="stylesheet" type="text/css" href="css/main_styles.css" />
<link rel="stylesheet" type="text/css" href="css/main_layout.css" />
<script type="text/javascript" src="scripts/image.js"></script>


</head>

<body bgcolor="#4d6821" onLoad="switchImage('slideImg')">
	<div id="admin_container">
		<div id="admin_body">
            <h1>Upload Page</h1>
        		<div class="admin_select">
                	<h2>Pleas select which action to take</h2>
                    <form id="selection">
            			<select onchange="window.open(this.options[this.selectedIndex].value,'_top')">
                        	<option>Please Select..</option>
            				<option value="test_add.php">Add Prod</option>
                			<option value="test_edit.php">Edit Prod</option>
                            <option value="test_del.php">Delete Prod</option>
            			</select>
                    </form>
                </div>
                <div class="admin_select">
                	<form id="prod" action="insert3.php" method="post" enctype="multipart/form-data">
                    	Name:<br />
                        <input type="text" name="name" id="name" />
                        <br />
                        <br />
                        Desctiption:<br />
                        <textarea id="description" name="description" rows="25" cols="100"></textarea>
                        <br />
                        <br />
                        Price: (do not put £ symbol in)<br />
                        <input type="text" name="price" id="price"  />
                        <br />
                        <br />
                        Image:
                        <input type="file" name"image" id="image" />
                        <br />
                        <br />
                        Type:
                        <select id="prod_type" name="prod_type" >
                        	<option value="lighting">Lighting</option>
                            <option value="systems">Systems</option>
                            <option value="filters/fans">Filters/Fans</option>
                            <option value="tents">Tents</option>
                            <option value="nutrient">Nutrient</option>
                            <option value="sheeting">Sheeting</option>
                            <option value="accessories">Accessories</option>
                      </select>
                        <br />
                        <br />
                        Made by:<br />
                        <input type="text" name="made" id="made" />
                        <br />
                        <br />
                        Distributed by:<br />
                        <input type="text" name="distribute" id="distribute" />
                        <br />
                        <br />
                        <input type="submit" name="prod_sub" id="prod_sub" value="add to DB" />
                    </form>
                </div>
        </div>
	</div>
</body>
</html>

and here is the php script insert3.php

<?php
$name = $_POST['name'];
$desc = $_POST['description'];
$price = $_POST['price'];
$prod_type = $_POST['prod_type'];
$made = $_POST['made'];
$dist = $_POST['distribute'];
$servername = "xxxxxxxxxx";
$db = "xxxxxxxxxxx";
$user_name = "xxxxxxxxxx";
$password = "xxxxxxxxx";

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["image"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["prod_sub"]) && isset($_FILES["image"])) {
    $check = getimagesize($_FILES["image"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}

// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}

// Check file size
if ($_FILES["image"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["image"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}

// create connection to db
try {
    $conn = new PDO("mysql:host=$servername;dbname=$db", $user_name, $password);
// PDO error mode set to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected to database <br /> <br />";
}
// Set veriable to catch error created
catch(PDOException $error)
    {
    echo "Connection failed: <br /> <br />" . $error->getMessage();
}
try{
    $stmt = $conn->prepare("INSERT INTO Products(NAME, DESCRIPTION, PRICE, IMAGES, TYPE, MADE, DISTRIBUTE)  
    VALUES (:name, :desc, :price, :image, :prod_type, :made, :dist)");
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':desc', $desc);
    $stmt->bindParam(':price', $price);
    $stmt->bindParam(':image', $target_file);
    $stmt->bindParam(':prod_type', $prod_type);
    $stmt->bindParam(':made', $made);
    $stmt->bindParam(':dist', $dist);
    $stmt->execute();
    $conn->exec($sql);
    echo "New record added";
}
catch(PDOException $error)
{
    echo $sql . "<br />" . $error->getMessage();
}
?>

as i mentioned if i take the code out for the file upload it works fine (apart from storing the image how i want) and the upload script works fine to upload an image but they do  to work together.

 

the information is added to the db but the file is not uploaded and every echo message i have is displayed.

 

any other information need please ask, i can give you a link to the testing site if needed.

Link to comment
Share on other sites

i feel like taking a long walk off a short pier haha.  why does it  always end u being something so small haha.  i have fixed that and updated the code so the insert is actually part of the upload script now.  here is the updated script which is working fine now.  

<?php

echo "<pre>";
echo "POST:";
print_r($_POST);
echo "FILES:";
var_dump($_FILES);
echo "</pre>";

$name = $_POST['name'];
$desc = $_POST['description'];
$price = $_POST['price'];
$image = $_POST['image'];
$prod_type = $_POST['prod_type'];
$made = $_POST['made'];
$dist = $_POST['distribute'];
$servername = "xxxxxxxxxxxxxxxxx";
$db = "xxxxxxxxxxxxx";
$user_name = "xxxxxxxxxxx";
$password = "xxxxxxxxx";

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["image"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["prod_sub"]) && isset($_FILES["image"])) {
    $check = getimagesize($_FILES["image"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["image"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["image"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["image"]["name"]). " has been uploaded.";
		// create connection to db
		try {
    		$conn = new PDO("mysql:host=$servername;dbname=$db", $user_name, $password);
			// PDO error mode set to exception
    		$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    		echo "Connected to database <br /> <br />";
		}
		// Set veriable to catch error created
		catch(PDOException $error)
    		{
    		echo "Connection failed: <br /> <br />" . $error->getMessage();
		}
		try{
    		$stmt = $conn->prepare("INSERT INTO Products(NAME, DESCRIPTION, PRICE, IMAGES, TYPE, MADE, DISTRIBUTE)  
    		VALUES (:name, :desc, :price, :image, :prod_type, :made, :dist)");
    		$stmt->bindParam(':name', $name);
    		$stmt->bindParam(':desc', $desc);
    		$stmt->bindParam(':price', $price);
    		$stmt->bindParam(':image', $target_file);
   		 	$stmt->bindParam(':prod_type', $prod_type);
    		$stmt->bindParam(':made', $made);
    		$stmt->bindParam(':dist', $dist);
    		$stmt->execute();
			$conn->exec($sql);
    		echo "New record added";
		}
		catch(PDOException $error)
		{
    		echo $sql . "<br />" . $error->getMessage();
		}
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}


?>

thanks for the help on this.

Link to comment
Share on other sites

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.