Jump to content

multiple upload and storing path in db


Stream

Recommended Posts

Using script like bellow we can upload a few image but how can I add path name to the sql. Should get some thing like this:

$sql

=

"INSERT INTO users SET imagerow1 ='tmp_name[$key]' , imagerow2='tmp_name[$key]', imagerow3 ='tmp_name[$key]', imagerow4='tmp_name[$key]' "

;

Could you help me please to build a correct sql string

<?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 files$uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'uploaded_files/';// make a note of the location of the upload form in case we need it$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'multiple.upload.form.php';// make a note of the location of the success page$uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'multiple.upload.success.php';// name of the fieldname used for the file in the HTML form$fieldname = 'file';//echo'<pre>';print_r($_FILES);exit; // Now let's deal with the uploaded files// 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 formisset($_POST['submit'])or error('the upload form is neaded', $uploadForm); // check if any files were uploaded and if// so store the active $_FILES array keys$active_keys = array();foreach($_FILES[$fieldname]['name'] as $key => $filename){if(!empty($filename)){  $active_keys[] = $key;}}// check at least one file was uploadedcount($active_keys)or error('No files were uploaded', $uploadForm); // check for standard uploading errorsforeach($active_keys as $key){($_FILES[$fieldname]['error'][$key] == 0)  or error($_FILES[$fieldname]['tmp_name'][$key].': '.$errors[$_FILES[$fieldname]['error'][$key]], $uploadForm);} // check that the file we are working on really was an HTTP uploadforeach($active_keys as $key){@is_uploaded_file($_FILES[$fieldname]['tmp_name'][$key])  or error($_FILES[$fieldname]['tmp_name'][$key].' not an HTTP upload', $uploadForm);} // validation... since this is an image upload script we// should run a check to make sure the upload is an imageforeach($active_keys as $key){@getimagesize($_FILES[$fieldname]['tmp_name'][$key])  or error($_FILES[$fieldname]['tmp_name'][$key].' not an image', $uploadForm);} // make a unique filename for the uploaded file and check it is// not taken... if it is keep trying until we find a vacant oneforeach($active_keys as $key){$now = time();while(file_exists($uploadFilename[$key] = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name'][$key])){  $now++;  }}// now let's move the file to its final and allocate it with the new filenameforeach($active_keys as $key){@move_uploaded_file($_FILES[$fieldname]['tmp_name'][$key], $uploadFilename[$key])  or error('receiving directory insuffiecient permission', $uploadForm);  } // If you got this far, everything has worked and the file has been successfully saved.// We are now going to redirect the client to the success page.header('Location: ' . $uploadSuccess);// make an error handler which will be used if the upload failsfunction 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?>

Link to comment
Share on other sites

Why are you having several fields like "imagerow"? Why not have just a single field for the path to the image (maybe extra fields with metadata for the image), and if you need to supply multiple images, either use prepared statements or use multiple VALUES, like:

INSERT INTO users (imagerow1,imagerow2,imagerow3) VALUES('temp1.1','temp1.2','temp1.3'),('temp2.1','temp2.2','temp2.3'),('temp3.1','temp3.2','temp3.3');

Also... where is your SQL attempt in the file you've given?

Link to comment
Share on other sites

Your idea is good to put all the path in a feild, I think in this case I should use exploid to get back date am I right? My difficalty is that I can't get how to use $key variable , how can I know or show that it keeps firstimage or secongimage or third one.It should be something like $key1 = firstimage $key1 = secondimage .......

// now let's move the file to its final and allocate it with the new filenameforeach($active_keys as $key)  @move_uploaded_file($_FILES[$fieldname]['tmp_name'][$key], $uploadFilename[$key])  or error('receiving directory insuffiecient permission', $uploadForm);  // I think something like<br />$sql =  "INSERT INTO users SET imagerow1 ='tmp_name[$key]' , imagerow2='tmp_name[$key]', imagerow3 ='tmp_name[$key]', imagerow4='tmp_name[$key]' }

Thank you

Link to comment
Share on other sites

I think in this case I should use exploid to get back date am I right?
What date? Wait... what are you trying to achieve in the end (eliminate the word "database" out of your description; That's a "how", and I'm asking "what")?
My difficalty is that I can't get how to use $key variable , how can I know or show that it keeps firstimage or secongimage or third one.
Since you have
foreach($active_keys as $key)

$key will be modified at each iteration to reflect each filename. They come into the order the browser sent them.

Link to comment
Share on other sites

boen_robotThank you for respnse!I think I should add another foreach like bellow to add the path
foreach($active_keys as $key){$sql = "INSERT INTO users SET  imagerow = mysql_real_escape_string  ( $_FILES[$fieldname]['tmp_name'][$key]  ) , " , "  ;	   }

Link to comment
Share on other sites

Why?(I still don't get your goal, but it sure looks like there's something fundamentally wrong in your arhitecture)

Link to comment
Share on other sites

how does your form looks like?

Link to comment
Share on other sites

Here bellow my form using which I can send image to cataloge and it works perfect. What I need just to build Sql query to store the path of the images in DB. I think I should add something like this.

foreach($active_keys as $key){$sql = "INSERT INTO users SET  imagerow = mysql_real_escape_string  ( $_FILES[$fieldname]['tmp_name'][$key]  ) , " , "  ;		 }

Upload form File to upload: here textbox Browse button File to upload: here textbox Browse button File to upload: here textbox Browse button Press to... Upload us

Link to comment
Share on other sites

what i meant is post your html structure of your form. looping query is not good idea. you can prepare the query once from the files and execute in once. but before that we need to see how does your inputs ( multiple files) are coming from the form.

Link to comment
Share on other sites

The code like bellow

<?php// filename: upload.form.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 location of the upload handler$uploadHandler = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'multiple.upload.processor.php';// set a max file size for the html upload form$max_file_size = 30000; // size in bytes// now echo the html page?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"><html lang="en"><head>  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">  <link rel="stylesheet" type="text/css" href="stylesheet.css">   <title>Upload form</title></head><body><form id="Upload" action="<?php echo $uploadHandler ?>" 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="file1">File to upload:</label>   <input id="file1" type="file" name="file[]">  </p>     <p>   <label for="file2">File to upload:</label>   <input id="file2" type="file" name="file[]">  </p>     <p>   <label for="file3">File to upload:</label>   <input id="file3" type="file" name="file[]">  </p>     <p>   <label for="submit">Press to...</label>   <input id="submit" type="submit" name="submit" value="Upload us!">  </p></form></body></html>

Link to comment
Share on other sites

I got page that uploads first the files in foldersSWF > game/swf/IMG > game/img/Then it adds them to SQL query like img path game/img/$IMAGE_FILENAME$ I can link the codes of those pages when i get to home so you can see the structure a bit.

Link to comment
Share on other sites

No problem, hope my files will help you even little bit. Ima try to get home after 1 hr but if i cant get ill be on after 4 hrs. Im at (Work based learning) My files has been done with POST method, but you can easily change them to get or just check how i've done mine and upgrade urs.

Link to comment
Share on other sites

At last could find what i looked for !

<?php# Assuming image1, etc accept null values you could try something like this... Not tested#set some variables$query_part_1 = '';$query_part_2 = '';$i = 1;foreach($active_keys as $key){    $query_part_1 .= ",'image" . $i++ . "'";    $query_part_2 .= ",'" . $_FILES[$fieldname]['name'][$key] . "'";}$query = "INSERT INTO properties ('location','description'" . $query_part_1 . ") VALUES ('" . $location . "','" . $description . "'" . $query_part_2 . ")";?>

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...