Jump to content

adding data into mysql database + uploading image + creating thumbnail


The Diabolical

Recommended Posts

Greetings,

 

What I'm trying to do is have users upload their event information into a database which would include a flyer.  I don't want the image file to go into the database (other than the filename) rather I'd like it to be dropped into a directory.  In the same script I'd like to dynamically generate a thumbnail.  I have the two scripts and separately they work fine, but I can't get them to work together.

 

I'm guessing the conflict because the thumbnail script is using $_POST and the mysql script is using $_SESSION.  If so how can I modify them to both use $_SESSION?

 

The thumbnail script is goes from line 1 - 146 and the mysql portion is the rest.

 

The results of processing this look something like this.

 

QUERY TEXT:

INSERT INTO td_events (eventgenre_sel, eventname, eventvenue, eventdate, eventgenre, eventprice, eventpromoter, eventflyer) VALUES ('12', 'spooky times', 'Ironwood Stage & Grill', '2010-12-17 22:36:00', 'DNB', '5000', 'me', '174366-1.jpg')

 

 

<?php

$debug = FALSE;

/**********************************************************************************************
   
   CREATES THUMBNAIL
   
**********************************************************************************************/

//define a maxim size for the uploaded images
define ("MAX_SIZE","1024"); 
// define the width and height for the thumbnail
// note that theese dimmensions are considered the maximum dimmension and are not fixed, 
// because we have to keep the image ratio intact or it will be deformed
define ("WIDTH","500"); 
define ("HEIGHT","650"); 

  // this is the function that will create the thumbnail image from the uploaded image
// the resize will be done considering the width and height defined, but without deforming the image
function make_thumb($img_name,$filename,$new_w,$new_h)
{
	//get image extension.
	$ext=getExtension($img_name);
	//creates the new image using the appropriate function from gd library
	if(!strcmp("jpg",$ext) || !strcmp("jpeg",$ext) || !strcmp("JPG",$ext))
		$src_img=imagecreatefromjpeg($img_name);

  	if(!strcmp("png",$ext) || !strcmp("PNG",$ext))
		$src_img=imagecreatefrompng($img_name);

	 	//gets the dimmensions of the image
	$old_x=imageSX($src_img);
	$old_y=imageSY($src_img);

	 // next we will calculate the new dimmensions for the thumbnail image
	// the next steps will be taken: 
	// 	1. calculate the ratio by dividing the old dimmensions with the new ones
	//	2. if the ratio for the width is higher, the width will remain the one define in WIDTH variable
	//		and the height will be calculated so the image ratio will not change
	//	3. otherwise we will use the height ratio for the image
	// as a result, only one of the dimmensions will be from the fixed ones
	$ratio1=$old_x/$new_w;
	$ratio2=$old_y/$new_h;
	if($ratio1>$ratio2)	{
		$thumb_w=$new_w;
		$thumb_h=$old_y/$ratio1;
	}
	else	{
		$thumb_h=$new_h;
		$thumb_w=$old_x/$ratio2;
	}

  	// we create a new image with the new dimmensions
	$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);

	// resize the big image to the new created one
	imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); 

	// output the created image to the file. Now we will have the thumbnail into the file named by $filename
	if(!strcmp("png",$ext))
		imagepng($dst_img,$filename); 
	else
		imagejpeg($dst_img,$filename); 

  	//destroys source and destination images. 
	imagedestroy($dst_img); 
	imagedestroy($src_img); 
}

// This function reads the extension of the file. 
// It is used to determine if the file is an image by checking the extension. 
function getExtension($str) {
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
}
// This variable is used as a flag. The value is initialized with 0 (meaning no error found) 
// and it will be changed to 1 if an error occurs. If the error occurs the file will not be uploaded.
$errors=0;
// checks if the form has been submitted
if(isset($_POST['Submit']))
{
//reads the name of the file the user submitted for uploading
	$image=$_FILES['eventflyer']['name'];
	// if it is not empty
	if ($image) 
	{
		// get the original name of the file from the clients machine
		$filename = stripslashes($_FILES['eventflyer']['name']);

		// get the extension of the file in a lower case format
	 	$extension = getExtension($filename);
		$extension = strtolower($extension);
		// if it is not a known extension, we will suppose it is an error, print an error message 
		// and will not upload the file, otherwise we continue
		if (($extension != "jpg")  && ($extension != "jpeg") && ($extension != "JPG") && ($extension != "PNG") && ($extension != "png"))	
		{
			echo '<h1>Unknown extension!</h1>';
			$errors=1;
		}
		else
		{
			// get the size of the image in bytes
			// $_FILES[\'image\'][\'tmp_name\'] is the temporary filename of the file in which 
		// the uploaded file was stored on the server
			$size=getimagesize($_FILES['eventflyer']['tmp_name']);
			$sizekb=filesize($_FILES['eventflyer']['tmp_name']);

			//compare the size with the maxim size we defined and print error if bigger
			if ($sizekb > MAX_SIZE*500)
			{
				echo '<h1>You have exceeded the size limit!</h1>';
				$errors=1;
			}

  			//we will give an unique name, for example the time in unix time format
			$image_name=$filename;
			//the new name will be containing the full path where will be stored (images folder)
		 	$newname="flyers/".$image_name;
			$copied = copy($_FILES['eventflyer']['tmp_name'], $newname);
			//we verify if the image has been uploaded, and print error instead
			if (!$copied) 
			{
				echo '<h1>Copy unsuccessfull!</h1>';
				$errors=1;
			}
			else
			{
				// the new thumbnail image will be placed in images/thumbs/ folder
				$thumb_name='flyers/thumb_'.$image_name;
				// call the function that will create the thumbnail. The function will get as parameters 
				// the image name, the thumbnail name and the width and height desired for the thumbnail
				$thumb=make_thumb($newname,$thumb_name,WIDTH,HEIGHT);
			}}	}}

  //If no errors registred, print the success message and show the thumbnail image created
if(isset($_POST['Submit']) && !$errors) 
{
	echo "<h1>Thumbnail created Successfully!</h1>";
	echo '<img src="'.$thumb_name.'">';
}


/************************************************************
   Adjust the headers...
************************************************************/
header("Expires: Thu, 17 May 2001 10:17:17 GMT");    // Date in the past
  	header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
header ("Pragma: no-cache");                          // HTTP/1.0

/*****************************************************************************
   Check the session details.
   we will store all the post variables in session variables
   this will make it easier to work with the verification routines
*****************************************************************************/
session_start();


if (!isset($_SESSION['SESSION'])) require_once( "../include/session_init.php");

$arVal = array();
require_once("../include/session_funcs1.php");

reset ($_POST);
while (list ($key, $val) = each ($_POST)) {
	if ($val == "") $val = "NULL";
	$arVals[$key] = (get_magic_quotes_gpc()) ? $val : addslashes($val); 
	if ($val == "NULL")
		$_SESSION[$key] = NULL;
	else
		$_SESSION[$key] = $val;

	if ($debug) echo $key . " : " . $arVals[$key] . "<br>";
}

/**********************************************************************************************
   Make sure session variables have been set and then check for required fields
   otherwise return to the registration form to fix the errors.
**********************************************************************************************/

// check to see if these variables have been set...
if ((!isset($_SESSION["eventname"])) || (!isset($_SESSION["eventvenue"])) || (!isset($_SESSION["eventdate"])) ||  (!isset($_SESSION["eventgenre"]))
	 || (!isset($_SESSION["eventprice"])) || (!isset($_SESSION["eventpromoter"])) || (!isset($_SESSION["eventflyer"]))) {
	 resendToForm("?flg=red");
}
	// form variables must have something in them...
if ($_SESSION['eventname'] == "" || $_SESSION['eventvenue'] == "" || $_SESSION['eventdate'] == "" || $_SESSION['eventgenre'] == "" || $_SESSION['eventprice'] == "" || $_SESSION['eventpromoter'] == "" || $_SESSION['eventflyer'] == "") {
	resendToForm("?flg=red");
}

/**********************************************************************************************
  Insert into the database...
**********************************************************************************************/

$conn = mysql_connect($_SESSION['MYSQL_SERVER1'],$_SESSION['MYSQL_LOGIN1'],$_SESSION['MYSQL_PASS1']) or die ('Error connecting to mysql');

mysql_select_db($_SESSION['MYSQL_DB1']) or die("Unable to select database");

$eventgenre_sel = addslashes($_REQUEST['eventgenre_sel']);
$eventname = addslashes($_REQUEST['eventname']);
$eventvenue = addslashes($_REQUEST['eventvenue']);
$eventdate = addslashes($_REQUEST['eventdate']);
$eventgenre = addslashes($_REQUEST['eventgenre']);
$eventprice = addslashes($_REQUEST['eventprice']);
$eventpromoter = addslashes($_REQUEST['eventpromoter']);
$eventflyer = addslashes($_REQUEST['eventflyer']);

$sqlquery = "INSERT INTO td_events (eventgenre_sel, eventname, eventvenue, eventdate, eventgenre, eventprice, eventpromoter, eventflyer) "
	."VALUES ('$eventgenre_sel', '$eventname', '$eventvenue', '$eventdate', '$eventgenre', '$eventprice', '$eventpromoter', '$eventflyer')";

echo 'QUERY TEXT:<br />'.$sqlquery;

$result = MYSQL_QUERY($sqlquery);

$insertid = mysql_insert_id();

	/*** This following function will update session variables and resend to the form so the user can fix errors ***/

function resendToForm($flags) {
		reset ($_POST);
		// store variables in session...
		while (list ($key, $val) = each ($_POST)) {
			$_SESSION[$key] = $val;
		}	
		// go back to the form...
		//echo $flags;
		header("Location: /user_registration.php".$flags);
		exit;
}
mysql_close($conn);


?>

Archived

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

×
×
  • 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.