Solved

help with modifying a PHP upload script

Posted on 2009-05-06
30
362 Views
Last Modified: 2013-12-13
hello, I wonder if i could get some help modifying this upload script please.

At the moment I have it so a user can upload a document to the server.

What i need to be able to do now though is

1. The user selects a course from a dropdown list on the form, and then uploads the document. That dropdown list is populated from a table in my mysql database called leaders. the column names are ID, course , email.  

2. When a user selects a course from the dropdown list and submits the document, i would like to send an email to the address attached to course, and in the email  there will be a link to the new uploaded document on the server.

As i say the uploading of the document works at the moment but need some help modifying it with the above modifications. Could somebody help me please?.

Regards,

LPHP
<?PHP

require_once("Session.class");

$sess = new Session();

if($sess->getVariable("auth") != "yes")

{

	header("Location: ../login-OOtest.php");

	exit();

}

include('header.html');
 

echo("<center><h1>Paper Submissions</h1>");

echo("Please rename paper to delegate name. i.e joe_bloggs.pdf");

echo("<br />");

echo("<form action=\"./upload1.php\" method=\"post\" enctype=\"multipart/form-data\"/>");

echo("<label for=\"file\">Select a file:</label>

	  <input type=\"file\" name=\"userfile\" id=\"file\"/>

	  <button>Upload File</button></center>");
 
 

 include('footer.html');

?>
 

<?PHP
 

 

// Configuration - Options

// These will be the types of file that will pass the validation.

	$allowed_filetypes = array('.doc','.txt','.pdf');

// Maximum filesize in BYTES.

	$max_filesize = 2000000;

// The place the files will be uploaded to (currently /uploads/ directory).

    $upload_path = './uploads/';

// Get the name of the file (including file extension).

   	$filename = $_FILES['userfile']['name'];

// Get the extension from the filename.

   	$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);
 

// Check if the filetype is allowed, if not DIE and inform the Delegate.

   if(!in_array($ext,$allowed_filetypes))

      die('The file you attempted to upload is not allowed.');
 

// Check the filesize, if it is too large then DIE and inform the Delegate.

   if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)

      die('The file you attempted to upload is too large.');
 

// Check if we can upload to the specified path, if not DIE and inform the Delegate.

   if(!is_writable($upload_path))

      die('You cannot upload to the specified directory, please CHMOD it to 777.');
 

// Upload the file to your specified path.

   if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename))

         echo 'Your file upload was successful, view the file <a href="' . $upload_path . 			                 $filename . '" title="Your File">here</a>';

// It worked.

      else

// It failed :(.

         echo 'There was an error during the file upload.  Please try again.';
 

?>

Open in new window

0
Comment
Question by:LearningPHPMySQL
  • 16
  • 14
30 Comments
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
There are several components to getting you where you want to go.  I assume you can get into your database and generate the drop-down <select> menu.  The code below assumes you named that field "courseID"

The tricky thing here-- what I'm assuming you're mainly asking about-- is the mail component of it.  If not, let me know.  What's tricky is that it all depends on how your mail server is setup.  Are you using shared hosting?  Do you have a dedicated server?  Does your domain, in fact, have its own separate mail server?

The code below is fairly standard and may work as is.  If not, you can try:
  • removing the ini_set lines (try leaving each in by itself, or removing both)
  • try just your domain name-- www.mydomainname.com-- rather than mail
  • if you have your address setup in Outlook or another mail client, check your settings and see what your outgoing server is; that server name should work in the SMTP line
Note that this function is more likely to work if you're sending and receiving messages within the same domain.  If you have problems getting it going, try testing it in just a simple script where you do nothing but call the mail() function using constant values (in other words, remove anything else from your code that may be causing a problem.

I know that's a bit wide open.  Let me know if it helps!

<?php
 

// Upload the file to your specified path.

   if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename)) {

         echo 'Your file upload was successful, view the file <a href="' .

			 $upload_path . $filename . '" title="Your File">here</a>';
 

		$course_details = mysql_query("SELECT * FROM leaders WHERE ID=" .

			$_REQUEST['courseID']);
 

		$email_message = "A user has just submitted a file for the course " . 

			mysql_result($course_details,0,"course") .

			".  That file can be downloaded here: " . 

			"http://www.mydomainname.com/uploads/" . $filename

		

		$email_address = mysql_result($course_details,0,"email");
 

		// mydomainname.com is your domain and joe@mydomainname.com is your email

		ini_set ("sendmail_from","joe@mydomainname.com");

		ini_set("SMTP","mail.mydomainname.com");

		mail($email_address, "joe@mydomainname.com", "New File Upload!", $email_message);
 

// It worked.

   }  else {

// It failed :(.

         echo 'There was an error during the file upload.  Please try again.';

   }
 
 
 
 
 

?>

Open in new window

0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
would i do this?  

bear with me please,  I'm new to all this :'(
upload.php

<?PHP

require_once("includes/account.class");

require_once("includes/database.class");
 

try {

	$db = new Database("includes/vars.inc");

	// use database "test"

	$db->useDatabase("test");

	// create new account.

	$conn = new connection($db->getConnection(), "leaders");

}

catch(Exception $e) {

	echo $e->getMessage() . "\n <br /> ";

	exit();

}

include('header.html');
 

$list = mysql_query("SELECT * FROM leaders");
 

echo("<center><h1>Paper Submissions</h1>");

echo("Please rename paper to delegate name. i.e joe_bloggs.pdf");

echo("<br />");

echo("<form action=\"./upload1.php\" method=\"post\" enctype=\"multipart/form-data\"/>");

echo("<label for=\"file\">Select a file:</label>

	  <input type=\"file\" name=\"userfile\" id=\"file\"/>

	  <select name=\"list\" size=\"10\"></select>

	  <option value=\"$list['course']\"></option>

	  <button>Upload File</button></center>");
 
 

 include('footer.html');

?>
 

upload1.php

<?PHP

/**

require_once("includes/account.class");

require_once("includes/database.class");
 

try {

	$db = new Database("includes/vars.inc");

	// use database "test"

	$db->useDatabase("test");

	// create new account.

	$conn = new connection($db->getConnection(), "leaders");

}

catch(Exception $e) {

	echo $e->getMessage() . "\n <br /> ";

	exit();

}

// Configuration - Options

// These will be the types of file that will pass the validation.

	$allowed_filetypes = array('.doc','.txt','.pdf');

// Maximum filesize in BYTES.

	$max_filesize = 2000000;

// The place the files will be uploaded to (currently /uploads/ directory).

    $upload_path = './uploads/';

// Get the name of the file (including file extension).

   	$filename = $_FILES['userfile']['name'];

// Get the extension from the filename.

   	$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);
 

// Check if the filetype is allowed, if not DIE and inform the Delegate.

   if(!in_array($ext,$allowed_filetypes))

      die('The file you attempted to upload is not allowed.');
 

// Check the filesize, if it is too large then DIE and inform the Delegate.

   if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)

      die('The file you attempted to upload is too large.');
 

// Check if we can upload to the specified path, if not DIE and inform the Delegate.

   if(!is_writable($upload_path))

      die('You cannot upload to the specified directory, please CHMOD it to 777.');
 

// Upload the file to your specified path.

if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename)) {

	echo 'Your file upload was successful, view the file <a href="' .

                         $upload_path . $filename . '" title="Your File">here</a>';

 

	$course_details = mysql_query("SELECT * FROM leaders WHERE ID=" .

                        $_REQUEST['courseID']);

 

	$email_message = "A user has just submitted a file for the course " .

                        mysql_result($course_details,0,"course") .

                        ".  That file can be downloaded here: " .

                        "http://www.mydomainname.com/uploads/" . $filename

    $email_address = mysql_result($course_details,0,"email");

 

// mydomainname.com is your domain and joe@mydomainname.com is your email

      ini_set ("sendmail_from","joe@mydomainname.com");

	  ini_set("SMTP","mail.mydomainname.com");

	  mail($email_address, "joe@mydomainname.com", "New File Upload!", $email_message);

// It worked.

      else

// It failed :(.

         echo 'There was an error during the file upload.  Please try again.';
 

 

?>

Open in new window

0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
Are you asking for help with accessing your MySQL database?  In other words, are you asking about the code in lines 6 - 16?
0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
I am reusing code from another script (my login script) to connect to the database. I have spotted the error on line 11 which should be new Account.

Now the connection is there though i need help with the form, so it populates the listbox so i can pick a course, and then upload document and click submit.  Then it runs upload1.php and hopefully when done uploads the document to a directory and also sends an email with the link to the email associated with that course.
0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
Personally, I use a different method for connecting to and accessing the database.  With your connection method, I'm not sure if my code will work, but let's give it a shot.  If it doesn't work, let me know and I'll show you my connection method... but you'll need to know your database's address and your logon name and password.

<!-- You'll want to put this code up top, where you've

	currently got your try/catch block //-->

<?php
 

	//connect to MySQL and select database

	$db = new Database("includes/vars.inc");

	mysql_select_db("test",$db) or die("Cannot select database");
 

	if($_REQUEST['courseID']=="") {

		//generate resultset for first visit

		$courseQuery = "SELECT * FROM leaders ORDER BY course ASC";

		$courseResult = mysql_query($courseQuery) or die("Cannot execute list query");

		$numCourses = mysql_numrows($courseResult);

	} else {

		//get details for selected course

		$courseQuery = "SELECT * FROM leaders WHERE ID = " . $_REQUEST['courseID'];

		$courseDetails = mysql_query($courseQuery) or die("Cannot execute details query");

	}
 

?>
 
 

<!-- Add this code wherever you want your listbox to appear //-->

<?php
 

	//print dropdown select box of courses

	echo "<select name='courseID'>";

	for($i=0;$i<$numCourses;$i++) {

		echo "<option value='" . 

			mysql_result($courseResult,$i,"ID") . "'>";

		echo mysql_result($courseResult,$i,"course");

		echo "</option>";

	}

	echo "</select>";
 

?>
 
 

<!-- The following is an adapted version of the first code block

	I posted in response to your question; my same notes and suggestions

	from my first post apply //-->

<?php

 

// Upload the file to your specified path.

   if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename)) {

         echo 'Your file upload was successful, view the file <a href="' .

                         $upload_path . $filename . '" title="Your File">here</a>';

 

                $email_message = "A user has just submitted a file for the course " . 

                        mysql_result($courseDetails,0,"course") .

                        ".  That file can be downloaded here: " . 

                        "http://www.mydomainname.com/uploads/" . $filename

                

                $email_address = mysql_result($courseDetails,0,"email");

 

                // mydomainname.com is your domain and joe@mydomainname.com is your email

                ini_set ("sendmail_from","joe@mydomainname.com");

                ini_set("SMTP","mail.mydomainname.com");

                mail($email_address, "joe@mydomainname.com", "New File Upload!", $email_message);

 

// It worked.

   }  else {

// It failed :(.

         echo 'There was an error during the file upload.  Please try again.';

   }

 

?>

Open in new window

0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
thank you, I will try have a go at this now. Thank you for helping me , I need it :o
0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
It's my pleasure.  I love this stuff! :-)
0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
have i got the first page correct .. upload.php?

and in the 2nd page upload1.php  phpedit is showing an error on this line

$email_address = mysql_result($courseDetails,0,"email"); saying unexpectid T variable ??
<?PHP
 

try {

	//connect to MySQL and select database

	$db = new Database("includes/vars.inc");

	mysql_select_db("test",$db) or die("Cannot select database");

 

	if($_REQUEST['courseID']=="") {

		//generate resultset for first visit

		$courseQuery = "SELECT * FROM leaders ORDER BY course ASC";

		$courseResult = mysql_query($courseQuery) or die("Cannot execute list query");

		$numCourses = mysql_numrows($courseResult);

	} else {

		//get details for selected course

		$courseQuery = "SELECT * FROM leaders WHERE ID = " . $_REQUEST['courseID'];

		$courseDetails = mysql_query($courseQuery) or die("Cannot execute details query");

	}
 

}

catch(Exception $e) {

	echo $e->getMessage() . "\n <br /> ";

	exit();

}

include('header.html');
 
 

echo("<center><h1>Paper Submissions</h1>");

echo("Please rename paper to delegate name. i.e joe_bloggs.pdf");

echo("<br />");

echo("<form action=\"./upload1.php\" method=\"post\" enctype=\"multipart/form-data\"/>");

echo("<label for=\"file\">Select a file:</label>");

echo("<input type=\"file\" name=\"userfile\" id=\"file\"/>");

	//print dropdown select box of courses

echo("<select name='courseID'>");

	for($i=0;$i<$numCourses;$i++) {

echo("<option value='" . mysql_result($courseResult,$i,"ID") . "'>");

echo mysql_result($courseResult,$i,"course");

echo("</option>");

	}

echo ("</select>");

echo ("<button>Upload File</button></center>");
 
 

include('footer.html');

?>
 

<?PHP
 

// Configuration - Options

// These will be the types of file that will pass the validation.

	$allowed_filetypes = array('.doc','.txt','.pdf');

// Maximum filesize in BYTES.

	$max_filesize = 2000000;

// The place the files will be uploaded to (currently /uploads/ directory).

    $upload_path = './uploads/';

// Get the name of the file (including file extension).

   	$filename = $_FILES['userfile']['name'];

// Get the extension from the filename.

   	$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);
 

// Check if the filetype is allowed, if not DIE and inform the Delegate.

   if(!in_array($ext,$allowed_filetypes))

      die('The file you attempted to upload is not allowed.');
 

// Check the filesize, if it is too large then DIE and inform the Delegate.

   if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)

      die('The file you attempted to upload is too large.');
 

// Check if we can upload to the specified path, if not DIE and inform the Delegate.

   if(!is_writable($upload_path))

      die('You cannot upload to the specified directory, please CHMOD it to 777.');
 

// Upload the file to your specified path.

if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename)) {

	echo 'Your file upload was successful, view the file <a href="' .

	                $upload_path . $filename . '" title="Your File">here</a>';

 

	$email_message = "A user has just submitted a file for the course " .

	               mysql_result($courseDetails,0,"course") .

	               ".  That file can be downloaded here: " .

	               "http://www.mydomainname.com/uploads/" . $filename

                

	       $email_address = mysql_result($courseDetails,0,"email");

 

	// mydomainname.com is your domain and joe@mydomainname.com is your email

	ini_set ("sendmail_from","joe@mydomainname.com");

	ini_set("SMTP","mail.mydomainname.com");

	mail($email_address, "joe@mydomainname.com", "New File Upload!", $email_message);

 

	// It worked.

}  else {

	// It failed :(.

	echo 'There was an error during the file upload.  Please try again.';

}
 

?>

Open in new window

0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
Sorry, I wasn't looking very closely, and I assumed all the code was in one page.  Your code for the first page looks ok... because you're not doing everything in one page, though, you can remove that conditional at the top and just stick with:

try {
     //connect to MySQL and select database
      $db = new Database("includes/vars.inc");
      mysql_select_db("test",$db) or die("Cannot select database");
 
            //generate resultset for first visit
            $courseQuery = "SELECT * FROM leaders ORDER BY course ASC";
            $courseResult = mysql_query($courseQuery) or die("Cannot execute list query");
            $numCourses = mysql_numrows($courseResult);
}
When you load it up, does the list populate ok?

As for your second page, you need to access your database again.  Use the following code at the beginning of the file, just like you do in the first page.  The way you've got it above, it shouldn't work.  However, if after you update it as below, you still get that "unexpected T variable" error, check to make sure your field name is correct (i.e. are you sure the field is called "email"?).

About editing your previous post to remove your name... I don't have the foggiest.  Sorry!

<?php
 

try {

	//connect to MySQL and select database

	$db = new Database("includes/vars.inc");

	mysql_select_db("test",$db) or die("Cannot select database");
 

	//get details for selected course

	$courseQuery = "SELECT * FROM leaders WHERE ID = " . $_REQUEST['courseID'];

	$courseDetails = mysql_query($courseQuery) or die("Cannot execute details query");

}
 

catch(Exception $e) {

	echo $e->getMessage() . "\n <br /> ";

	exit();

}
 

?>

Open in new window

0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
I am still getting the unexpected T variable" error on phpedit.

after $filename and before $email_address is their suppost to be a semi-colon or something ?

The first script is loading fine and populating the box,  so looks like i just need to fix this error and then i will beable to test.
"http://www.mydomainname.com/uploads/" . $filename

                

 $email_address = mysql_result($courseDetails,0,"email");

 

Open in new window

0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
You're right-- we're missing a semicolon there.  Haha, listen to me saying "we."  Yes, I left out that semicolon.  Add that in after $filename, and you should be good.  I'm an idiot for not looking right there when you told me you had a parse error.
0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
Ok I am getting somwhere i think. I have got rid of that error, and now the file is being uploaded correctly but error messages are appearing also.

Notice: Undefined variable: courseDetails in /var/www/vhosts/numyspace.co.uk/web_users/home/~unn_r031923/public_html/Testing/upload1TEST.php on line 47

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/numyspace.co.uk/web_users/home/~unn_r031923/public_html/Testing/upload1TEST.php on line 47

Notice: Undefined variable: courseDetails in /var/www/vhosts/numyspace.co.uk/web_users/home/~unn_r031923/public_html/Testing/upload1TEST.php on line 51

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/numyspace.co.uk/web_users/home/~unn_r031923/public_html/Testing/upload1TEST.php on line 51

my table is definitely leaders and the 3 columns are
 "courseID"       
"course"
"email"

My list box is populating ok, then i search for the document and submit and then it shows a link on the page saying the the document was uploaded successfully, but with those 3 errors underneath.
<?PHP
 
 
 

try {

	//connect to MySQL and select database

	// Connects to your Database

	mysql_connect("localhost", "xx", "xx") or die(mysql_error());

	mysql_select_db("test") or die(mysql_error());
 

	//generate resultset for first visit

	$courseQuery = "SELECT * FROM leaders ORDER BY course ASC";

	$courseResult = mysql_query($courseQuery) or die("Cannot execute list query");

	$numCourses = mysql_numrows($courseResult);

}

catch(Exception $e) {

	echo $e->getMessage() . "\n <br /> ";

	exit();

}

include('header.html');
 
 

echo("<center><h1>Paper Submissions</h1>");

echo("Please rename paper to delegate name. i.e joe_bloggs.pdf");

echo("<br />");

echo("<form action=\"./upload1TEST.php\" method=\"post\" enctype=\"multipart/form-data\"/>");

echo("<label for=\"file\">Select a file:</label>");

echo("<input type=\"file\" name=\"userfile\" id=\"file\"/>");

	//print dropdown select box of courses

echo("<select name='courseID'>");

	for($i=0;$i<$numCourses;$i++) {

echo("<option value='" . mysql_result($courseResult,$i,"ID") . "'>");

echo mysql_result($courseResult,$i,"course");

echo("</option>");

	}

echo ("</select>");

echo ("<button>Upload File</button></center>");
 
 

include('footer.html');

?>

Open in new window

0
 

Author Comment

by:LearningPHPMySQL
Comment Utility

<?PHP

try {

	//connect to MySQL and select database

	// Connects to your Database

	mysql_connect("localhost", "xxx", "xxx") or die(mysql_error());

	mysql_select_db("test") or die(mysql_error());
 

}

catch(Exception $e) {

	echo $e->getMessage() . "\n <br /> ";

	exit();

}

// Configuration - Options

// These will be the types of file that will pass the validation.

	$allowed_filetypes = array('.doc','.txt','.pdf');

// Maximum filesize in BYTES.

	$max_filesize = 2000000;

// The place the files will be uploaded to (currently /uploads/ directory).

    $upload_path = './uploads/';

// Get the name of the file (including file extension).

   	$filename = $_FILES['userfile']['name'];

// Get the extension from the filename.

   	$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);
 

// Check if the filetype is allowed, if not DIE and inform the Delegate.

   if(!in_array($ext,$allowed_filetypes))

      die('The file you attempted to upload is not allowed.');
 

// Check the filesize, if it is too large then DIE and inform the Delegate.

   if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)

      die('The file you attempted to upload is too large.');
 

// Check if we can upload to the specified path, if not DIE and inform the Delegate.

   if(!is_writable($upload_path))

      die('You cannot upload to the specified directory, please CHMOD it to 777.');
 

// Upload the file to your specified path.

if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename)) {

	echo 'Your file upload was successful, view the file <a href="' .

	                $upload_path . $filename . '" title="Your File">here</a>';

 

	$email_message = "A user has just submitted a file for the course " .

	               mysql_result($courseDetails,0,"course") .

	               ".  That file can be downloaded here: " .

	               "http://www.mydomainname.com/uploads/" . $filename;

                

	       $email_address = mysql_result($courseDetails,0,"email");

 

	// mydomainname.com is your domain and joe@mydomainname.com is your email

	ini_set ("sendmail_from","joe@mydomainname.com");

	ini_set("SMTP","mail.mydomainname.com");

	mail($email_address, "joe@mydomainname.com", "New File Upload!", $email_message);

 

	// It worked.

}  else {

	// It failed :(.

	echo 'There was an error during the file upload.  Please try again.';

}
 

?>

Open in new window

0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
Okay, you're missing the code from that last block of code I posted.  Instead of what you put in your last post, it needs to be as below.  Do you see where $courseDetails is assigned a recordset result?  That's what's missing above.

<?PHP<?php

 

try {

	//connect to MySQL and select database

	$db = new Database("includes/vars.inc");

	mysql_select_db("test",$db) or die("Cannot select database");

 

	//get details for selected course

	$courseQuery = "SELECT * FROM leaders WHERE ID = " . $_REQUEST['courseID'];

	$courseDetails = mysql_query($courseQuery) or die("Cannot execute details query");

}

 

catch(Exception $e) {

	echo $e->getMessage() . "\n <br /> ";

	exit();

}

 

?>
 

// Configuration - Options

// These will be the types of file that will pass the validation.

	$allowed_filetypes = array('.doc','.txt','.pdf');

// Maximum filesize in BYTES.

	$max_filesize = 2000000;

// The place the files will be uploaded to (currently /uploads/ directory).

    $upload_path = './uploads/';

// Get the name of the file (including file extension).

   	$filename = $_FILES['userfile']['name'];

// Get the extension from the filename.

   	$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);

 

// Check if the filetype is allowed, if not DIE and inform the Delegate.

   if(!in_array($ext,$allowed_filetypes))

      die('The file you attempted to upload is not allowed.');

 

// Check the filesize, if it is too large then DIE and inform the Delegate.

   if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)

      die('The file you attempted to upload is too large.');

 

// Check if we can upload to the specified path, if not DIE and inform the Delegate.

   if(!is_writable($upload_path))

      die('You cannot upload to the specified directory, please CHMOD it to 777.');

 

// Upload the file to your specified path.

if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename)) {

	echo 'Your file upload was successful, view the file <a href="' .

	                $upload_path . $filename . '" title="Your File">here</a>';

 

	$email_message = "A user has just submitted a file for the course " .

	               mysql_result($courseDetails,0,"course") .

	               ".  That file can be downloaded here: " .

	               "http://www.mydomainname.com/uploads/" . $filename;

                

	       $email_address = mysql_result($courseDetails,0,"email");

 

	// mydomainname.com is your domain and joe@mydomainname.com is your email

	ini_set ("sendmail_from","joe@mydomainname.com");

	ini_set("SMTP","mail.mydomainname.com");

	mail($email_address, "joe@mydomainname.com", "New File Upload!", $email_message);

 

	// It worked.

}  else {

	// It failed :(.

	echo 'There was an error during the file upload.  Please try again.';

}

 

?>

Open in new window

0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
Grrr... See below.  Sorry, typo in last.

<?PHP

 

try {

	//connect to MySQL and select database

	$db = new Database("includes/vars.inc");

	mysql_select_db("test",$db) or die("Cannot select database");

 

	//get details for selected course

	$courseQuery = "SELECT * FROM leaders WHERE ID = " . $_REQUEST['courseID'];

	$courseDetails = mysql_query($courseQuery) or die("Cannot execute details query");

}

 

catch(Exception $e) {

	echo $e->getMessage() . "\n <br /> ";

	exit();

}

 

// Configuration - Options

// These will be the types of file that will pass the validation.

	$allowed_filetypes = array('.doc','.txt','.pdf');

// Maximum filesize in BYTES.

	$max_filesize = 2000000;

// The place the files will be uploaded to (currently /uploads/ directory).

    $upload_path = './uploads/';

// Get the name of the file (including file extension).

   	$filename = $_FILES['userfile']['name'];

// Get the extension from the filename.

   	$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);

 

// Check if the filetype is allowed, if not DIE and inform the Delegate.

   if(!in_array($ext,$allowed_filetypes))

      die('The file you attempted to upload is not allowed.');

 

// Check the filesize, if it is too large then DIE and inform the Delegate.

   if(filesize($_FILES['userfile']['tmp_name']) > $max_filesize)

      die('The file you attempted to upload is too large.');

 

// Check if we can upload to the specified path, if not DIE and inform the Delegate.

   if(!is_writable($upload_path))

      die('You cannot upload to the specified directory, please CHMOD it to 777.');

 

// Upload the file to your specified path.

if(move_uploaded_file($_FILES['userfile']['tmp_name'],$upload_path . $filename)) {

	echo 'Your file upload was successful, view the file <a href="' .

	                $upload_path . $filename . '" title="Your File">here</a>';

 

	$email_message = "A user has just submitted a file for the course " .

	               mysql_result($courseDetails,0,"course") .

	               ".  That file can be downloaded here: " .

	               "http://www.mydomainname.com/uploads/" . $filename;

                

	       $email_address = mysql_result($courseDetails,0,"email");

 

	// mydomainname.com is your domain and joe@mydomainname.com is your email

	ini_set ("sendmail_from","joe@mydomainname.com");

	ini_set("SMTP","mail.mydomainname.com");

	mail($email_address, "joe@mydomainname.com", "New File Upload!", $email_message);

 

	// It worked.

}  else {

	// It failed :(.

	echo 'There was an error during the file upload.  Please try again.';

}

 

?>

Open in new window

0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Author Comment

by:LearningPHPMySQL
Comment Utility
I have changed my code now,  and it is the same as yours other than i am using this for connection below.

Now i am getting the following error

Cannot execute details query

Which is something to do with the SQL query ?


try {

	//connect to MySQL and select database

	// Connects to your Database

	mysql_connect("localhost", "xxx", "xxx") or die(mysql_error());

	mysql_select_db("test") or die(mysql_error());
 

	//get details for selected course

	$courseQuery = "SELECT * FROM leaders WHERE ID = " . $_REQUEST['courseID'];

	$courseDetails = mysql_query($courseQuery) or die("Cannot execute details query");

}

Open in new window

0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
With the code you just posted, add in an echo statement so we can see if there's something wrong with the SQL you're trying to execute.  Let's make sure we're getting good data from that courseID.

try {

	//connect to MySQL and select database

	// Connects to your Database

	mysql_connect("localhost", "xxx", "xxx") or die(mysql_error());

	mysql_select_db("test") or die(mysql_error());

 

	//get details for selected course

	$courseQuery = "SELECT * FROM leaders WHERE ID = " . $_REQUEST['courseID'];

	echo "<p>" . $courseQuery ."<p>";

	$courseDetails = mysql_query($courseQuery) or die("Cannot execute details query");

}

Open in new window

0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
SELECT * FROM leaders WHERE ID =

Cannot execute details query
0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
Yep, you're not getting any data from that drop down menu (listbox).  First thing, load up your initial page and right click to show the source.  Make sure that when your list is populating, it's actually getting values (i.e. make sure each <option> tag has a value in the value attribute).  If it does, run through your entire process, making sure to pick a course that you know the value for.  See what your error message says then.

I've not dealt much with file upload forms, so I'm actually not sure if other form fields (like this courseID listbox) get submitted when the file itself uploads.  You may need to separate that out into a separate step.
0
 

Author Comment

by:LearningPHPMySQL
Comment Utility

<form action="./upload1TEST.php" method="post" enctype="multipart/form-data"/><label for="file">Select a file:</label><input type="file" name="userfile" id="file"/><select name='courseID'><br />

<b>Warning</b>:  mysql_result() [<a href='function.mysql-result'>function.mysql-result</a>]: ID not found in MySQL result index 3 in <b>/public_html/Test/uploadTEST.php</b> on line <b>40</b><br />
 

<option value=''>Paper_Topic_1</option><br />

<b>Warning</b>:  mysql_result() [<a href='function.mysql-result'>function.mysql-result</a>]: ID not found in MySQL result index 3 in <b>/var/www/vhosts/numyspace.co.uk/web_users/home/~unn_r031923/public_html/Testing/uploadTEST.php</b> on line <b>40</b><br />

<option value=''>Paper_Topic_2</option></select><button>Upload File</button>

Open in new window

0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
working now,  ID should be courseID on both pages : )  YaY!

Just need last query on the email.

the line

ini_set("SMTP","mail.mydomainname.com");  

what is this ?    is that like jondoh@hotmail.com ?
0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
Can you post for me all of your code from your initial page?  I think I see the problem, but I don't want to muddy the waters any further! :-)
0
 
LVL 8

Accepted Solution

by:
Bobaran98 earned 500 total points
Comment Utility
Sorry, only just saw your last post.  Those ini_set lines may not be necessary.  Try going without the SMTP line.  If it doesn't work, try using:

ini_set("SMTP","localhost");

If it still doesn't work... well, if you're sending from your email address, and you've got your address setup in a mail client like Outlook, look in your settings and get the info for your outgoing mail server.  Then try putting that server address in the place of localhost.


0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
It is now looks like it is working now ID has changed to courseID.

Not sending the email though, I not sure how to configure it though

// mydomainname.com is your domain and joe@mydomainname.com is your email
      ini_set ("sendmail_from","jonblabla@hotmail.com");
      ini_set("SMTP","mail.mydomainname.com");
      mail($email_address, "New Paper Submission", "New File Upload!", $email_message);
<?PHP
 

try {

	//connect to MySQL and select database

	// Connects to your Database

	mysql_connect("localhost", "xxx", "xxx") or die(mysql_error());

	mysql_select_db("test") or die(mysql_error());
 

	//generate resultset for first visit

	$courseQuery = "SELECT * FROM leaders ORDER BY course ASC";

	$courseResult = mysql_query($courseQuery) or die("Cannot execute list query");

	$numCourses = mysql_numrows($courseResult);

}

catch(Exception $e) {

	echo $e->getMessage() . "\n <br /> ";

	exit();

}

include('header.html');
 
 

echo("<center><h1>Paper Submissions</h1>");

echo("Please rename paper to delegate name. i.e joe_bloggs.pdf");

echo("<br />");

echo("<form action=\"./upload1TEST.php\" method=\"post\" enctype=\"multipart/form-data\"/>");

echo("<label for=\"file\">Select a file:</label>");

echo("<input type=\"file\" name=\"userfile\" id=\"file\"/>");

	//print dropdown select box of courses

echo("<select name='courseID'>");

	for($i=0;$i<$numCourses;$i++) {

echo("<option value='" . mysql_result($courseResult,$i,"courseID") . "'>");

echo mysql_result($courseResult,$i,"course");

echo("</option>");

	}

echo ("</select>");

echo ("<button>Upload File</button></center>");
 
 

include('footer.html');

?>

Open in new window

0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
sorry : )  Only just saw your new message.  I will try your suggestions now   Thank You
0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
ini_set("SMTP","smtp.uk.aol.com");   that is my server address  but it is not working
0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
Yeah, there's probably no chance you would be able to send mail from either a hotmail or an aol address.  But try removing both ini_set lines and just using the mail() function with your email address.  It may work, who knows?  Just depends how your server's setup.  If not, try that ini_set("SMTP","localhost");
0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
I have tried all sorts here but cannot send the mail.

I have tried the ini_set("SMTP", "localhost");

Tried it with just the mail() function,

I have echo'd  $email_address  and it is picking out the correct address  just somehow will not send the email.  This is frustrating,  I want to bury my head in the sand : (
0
 
LVL 8

Expert Comment

by:Bobaran98
Comment Utility
May I ask how your website is hosted?  Is it a shared hosting deal-- an account you have with a company where you get X mb of space on their machine?  Or is it on a dedicated server you have direct access to?

Unfortunately, this mailing issue is especially tricky because of all the variables involved, especially now that the web community is cracking down so hard on spammers.
0
 

Author Comment

by:LearningPHPMySQL
Comment Utility
its a university account  http://www.numyspace.co.uk/   I think they pay these for the web hosting ? but i am not sure.
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

I imagine that there are some, like me, who require a way of getting currency exchange rates for implementation in web project from time to time, so I thought I would share a solution that I have developed for this purpose. It turns out that Yaho…
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now