garydt Posted March 15, 2007 Share Posted March 15, 2007 I've finally sorted out the directory permissions and have successfully uploaded images into a directory. Now i want to insert the image name along with the logged in username into the database but it isn't inserting anything. the code:- <?php require_once('Connections/elvisdb.php'); ?> <?php // filename: upload.processor.php // first let's set some variables // make a note of the current working directory, relative to root. $directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']); // make a note of the directory that will recieve the uploaded file $uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'uploads/'; // make a note of the location of the upload form in case we need it $uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'uploadform.php'; // make a note of the location of the success page $uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'uploadsucs.php'; // fieldname used within the file <input> of the HTML form $fieldname = 'file'; // Now let's deal with the upload // possible PHP upload errors $errors = array(1 => 'php.ini max file size exceeded', 2 => 'html form max file size exceeded', 3 => 'file upload was only partial', 4 => 'no file was attached'); // check the upload form was actually submitted else print the form isset($_POST['submit']) or error('the upload form is neaded', $uploadForm); // check for PHP's built-in uploading errors ($_FILES[$fieldname]['error'] == 0) or error($errors[$_FILES[$fieldname]['error']], $uploadForm); // check that the file we are working on really was the subject of an HTTP upload @is_uploaded_file($_FILES[$fieldname]['tmp_name']) or error('not an HTTP upload', $uploadForm); // validation... since this is an image upload script we should run a check // to make sure the uploaded file is in fact an image. Here is a simple check: // getimagesize() returns false if the file tested is not an image. @getimagesize($_FILES[$fieldname]['tmp_name']) or error('only image uploads are allowed', $uploadForm); // make a unique filename for the uploaded file and check it is not already // taken... if it is already taken keep trying until we find a vacant one // sample filename: 1140732936-filename.jpg $now = time(); while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name'])) { $now++; } // now let's move the file to its final location and allocate the new filename to it @move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename) or error('receiving directory insuffiecient permission', $uploadForm); session_start(); $user = $_SESSION['MM_Username']; mysql_select_db($database_elvisdb, $elvisdb); $insertSQL sprintf("INSERT INTO images (usnm, ImageName, imageFile) VALUES ('$user','%s', '%s')", $photo, $_FILES['$uploadFilename']['type']); // If you got this far, everything has worked and the file has been successfully saved. // We are now going to redirect the client to a success page. header('Location: ' . $uploadSuccess); // The following function is an error handler which is used // to output an HTML error page if the file upload fails function error($error, $location, $seconds = 5) { header("Refresh: $seconds; URL=\"$location\""); echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'."\n". '"http://www.w3.org/TR/html4/strict.dtd">'."\n\n". '<html lang="en">'."\n". ' <head>'."\n". ' <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n". ' <link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n". ' <title>Upload error</title>'."\n\n". ' </head>'."\n\n". ' <body>'."\n\n". ' <div id="Upload">'."\n\n". ' <h1>Upload failure</h1>'."\n\n". ' <p>An error has occured: '."\n\n". ' <span class="red">' . $error . '...</span>'."\n\n". ' The upload form is reloading</p>'."\n\n". ' </div>'."\n\n". '</html>'; exit; } // end error handler ?> <!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=iso-8859-1" /> <title>Untitled Document</title> </head> <body> </body> </html> Link to comment https://forums.phpfreaks.com/topic/42882-image-upload/ Share on other sites More sharing options...
EagerWolf Posted March 15, 2007 Share Posted March 15, 2007 I prefer to store path in database ... Upload file in your upload_dir/username/whatever.jpg ... And store path to image in database.. I've read about storing image in database (it is said it is faster) ... but I think database isn't make to store images (I guess).. In fact we've tested it and it wasn't faster storing path in database... To store path do smth like this: $uploaddir = "directory"; $username = "GET_USERNAME_FROM_UPLOADE"; $name = "CREATE_RANDOM_NAME.jpg"; $path_to_img = $uploaddir."/".$username."/".$name; And store $path_to_img in your database... Hope this will be your solution ... Link to comment https://forums.phpfreaks.com/topic/42882-image-upload/#findComment-208351 Share on other sites More sharing options...
garydt Posted March 16, 2007 Author Share Posted March 16, 2007 Thanks. I have the pathtoimg variable now but its not inserting anything into the database and i can't see why. The code- <?php require_once('Connections/elvisdb.php'); ?> <?php // filename: upload.processor.php // first let's set some variables // make a note of the current working directory, relative to root. $directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']); // make a note of the directory that will recieve the uploaded file $uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'uploads/'; // make a note of the location of the upload form in case we need it $uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'uploadform.php'; // make a note of the location of the success page $uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'uploadsucs.php'; // fieldname used within the file <input> of the HTML form $fieldname = 'file'; // Now let's deal with the upload // validation... since this is an image upload script we should run a check // to make sure the uploaded file is in fact an image. Here is a simple check: // getimagesize() returns false if the file tested is not an image. @getimagesize($_FILES[$fieldname]['tmp_name']); // make a unique filename for the uploaded file and check it is not already // taken... if it is already taken keep trying until we find a vacant one // sample filename: 1140732936-filename.jpg $now = time(); while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name'])) { $now++; } // now let's move the file to its final location and allocate the new filename to it @move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename); $pathtoimg = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'uploads/.$uploadfilename'; session_start(); $user = $_SESSION['MM_Username']; mysql_select_db($database_elvisdb, $elvisdb); $query = sprintf("INSERT INTO images (ImageName, usnm) VALUES ('$pathtoimg', '$user')"); echo $fieldname; echo $pathtoimg ?> <!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=iso-8859-1" /> <title>Untitled Document</title> </head> <body> <form name="form1" id="Upload" action="<?php echo $editFormAction; ?>" enctype="multipart/form-data" method="POST"> <h1> Upload form </h1> <p> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size ?>"> </p> <p> <label for="file">File to upload:</label> <input id="file" type="file" name="file"> </p> <p> <label for="submit">Press to...</label> <input id="submit" type="submit" name="submit" value="Upload me!"> </p> <input type="hidden" name="MM_insert" value="form1"> </form> </body> </html> Link to comment https://forums.phpfreaks.com/topic/42882-image-upload/#findComment-208708 Share on other sites More sharing options...
garydt Posted March 16, 2007 Author Share Posted March 16, 2007 I've tried doing it with insertSQL . It still doesn't work. What have i done wrong? Link to comment https://forums.phpfreaks.com/topic/42882-image-upload/#findComment-208757 Share on other sites More sharing options...
papaface Posted March 16, 2007 Share Posted March 16, 2007 Your not running your queries from what I can see, you should be running them, not storing the SQL code in a variable and not running it. Try: mysql_select_db($database_elvisdb, $elvisdb); $query = "INSERT INTO images (ImageName, usnm) VALUES ('$pathtoimg', '$user')"; mysql_query($query); echo $fieldname; echo $pathtoimg ?> Link to comment https://forums.phpfreaks.com/topic/42882-image-upload/#findComment-208766 Share on other sites More sharing options...
garydt Posted March 16, 2007 Author Share Posted March 16, 2007 Thanks. It's going in now. it's storing the url of the uploaded image but the $uploadFilename isn't showing the filename, it's just coming up as $uploadFilename Why is this? Link to comment https://forums.phpfreaks.com/topic/42882-image-upload/#findComment-208865 Share on other sites More sharing options...
garydt Posted March 16, 2007 Author Share Posted March 16, 2007 Do you think it's because $uploadFilename isn't storing the filename? Link to comment https://forums.phpfreaks.com/topic/42882-image-upload/#findComment-209080 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.