Click to See Complete Forum and Search --> : Uploaded image into database


gunnarflax
10-30-2009, 06:38 PM
I've used the multiple-upload script from the sticky in the php-forum and I try to upload 2 images at the same time as I insert an unique id and the url into a database called pictures with the fields id and url.

the php code I have is:
<?php
include "../conn/config.php";
include "../conn/connect_database.php";
ini_set('display_errors', 1);
error_reporting(E_ALL);

$rawid = mysql_query("SELECT MAX(id) FROM pictures");
$id = $rawid+1;

$sql="INSERT INTO pictures (id, url) VALUES ('$id','http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$key."')";

if (!mysql_query($sql,$opendb)){
die('Error: ' . mysql_error());
}
?>


and the code from the multiple image uploader is:
<?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 form
isset($_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 uploaded
count($active_keys)
or error('No files were uploaded', $uploadForm);

// check for standard uploading errors
foreach($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 upload
foreach($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 image
foreach($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 one
foreach($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 filename
foreach($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 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

?>

The upload itself works but I cannot get the right url for the database and the id somehow becomes 7+1. I don't understand why $rawid become 7. Can anyone please help me?

gunnarflax
10-31-2009, 04:51 PM
Come on! I never receive any helpful answers in this forum! Someone with just a little more sql knowledge than me must know how to fix this! Please just give me a little of your time!

Sorry for being so impatient and quite an asshole...

aj_nsc
10-31-2009, 05:00 PM
Well there's your problem:

$rawid = mysql_query("SELECT MAX(id) FROM pictures");


What you want is:

$rawid = mysql_result(mysql_query("SELECT MAX(id) FROM pictures"),0,0);

gunnarflax
11-01-2009, 04:23 PM
Thank you so much! It worked! :D
Though I have one more problem to solve now: I have a link in a table which is generated from the contents of the table pictures in my database. I want to be able to delete a row from the database by clicking the link "delete". Must I use forms or can I use links which I have tried to do so far?

the code for the page and link looks like this:
<?php
$result = mysql_query("SELECT * FROM pictures ORDER BY id");

echo '<table>'."\n".
' <tbody>'."\n";

while($row = mysql_fetch_array($result)){
echo ' <tr>'."\n".
' <td width="70"><a href="javascript:deletePic()" onclick="javascript:picToDelete='."'".$row['url']."'".';">ta bort</a></td><td width="25"><a href="'.$row['url'].'" rel="facebox">visa</a></td><td>'.$row['url'].'</td>'."\n".
' </tr>'."\n";
}

echo ' </tbody>'."\n".
' </table>'."\n";
?>

As you can see am I trying to use onclick and javascript to get the right content to delete from the database. I haven't finished any of the scripts yet since I tried and just couldn't find a solution.

<script type="text/javascript" language="javascript">
var picToDelete;

function deletePic() {
var answer = confirm("Är du säker på att du vill radera bilden från servern?")
if (answer){
<?php
mysql_query("DELETE FROM pictures WHERE url = $picToDelete") or die(mysql_error());
mysql_query("DELETE FROM tblgb WHERE gbID = $gbID") or die(mysql_error());
?>
}
}
</script>

I try to set the variable picToDelete with onclick and somehow use it in the script where the content is deleted but I've probably taken a wrong turn somewhere since I don't know if you can cooperate php with javascript. Any ideas?