adam291086 Posted October 1, 2007 Share Posted October 1, 2007 I have an online photogallery nearly working. I get the error below and have no idea why its happening. The 'Still Here!' bit is what the code is echoing so i can see if that set of code works. I have followed a tutorial for this and Not really sure what to do. Still here! Fatal error: Call to undefined function: insert_location() in /homepages/12/d214897219/htdocs/adam/create_thumbnails.php on line 48 This is the create-thumbnails code <?php include("GallerySizer.php"); include("config.php"); DEFINE("IMAGE_FULL", '../adam/photos/'); //database connect $db_server ="this is correct"; $db_user = "this is correct"; $db_pass = "this is correct"; $db_name = "this is correct"; $con = mysql_connect("$db_server","$db_user","$db_pass"); // Album cover $cover = $_FILES['image']['name'][$_POST['album_cover']]; if (!$_REQUEST['process']){ echo("Error! No images chosen for processing. <br />"); echo("Click <a href='index.php'>here</a> to start processing your images."); die(); } elseif (!$_POST['album_id']){ echo("No album selected. Please <a href=\"\">choose an album</a> to upload images to."); die(); } else { for($i = 0; $i < count($_FILES['image']['tmp_name']); $i++){ $fileName = $_FILES['image']['name'][$i]; copy($_FILES['image']['tmp_name'][$i], IMAGE_FULL . $fileName); $thumb = new GallerySizer(); if($thumb->getLocation($_FILES['image']['name'][$i])){ if($thumb->loadImage()){ echo("Still here!"); if($thumb->getSize()){ if($thumb->setThumbnail()){ if($thumb->copyThumbImage()){ if($thumb->resizeImage()){ $thumb->copyResizedImage(); } } } } } else { echo("Invalid image/file has been uploaded. Please upload a supported file-type (JPEG/PNG)"); unlink(IMAGE_FULL . $fileName); die(); } insert_location($thumb); } } //insert image function insert_location($thumb_obj) { $image_location = $thumb_obj->getImageLocation(); $thumb_location = $thumb_obj->getThumbLocation(); // If image matches cover selection, update album cover if($cover == $_FILES['image']['name'][$i]){ $sql = "UPDATE albums SET album_cover = '" . $thumb_location . "' WHERE album_id = " . $_POST['album_id']; $result = @mysql_query($sql) or die("Error inserting records: " . mysql_error()); } mysql_select_db("db218351273", $con); $sql = ("INSERT INTO photos (photo_id, photo_title, photo_desc, photo_date, photo_location, thumbnail_location,album_id) VALUES('0', '$_POST[photo_title]', '$_POST[photo_desc]', 'NOW()', '$image_location', '$thumb_location', '$_POST[album_id]')"); $result = mysql_query($sql) or die("Error inserting record(s) into the database: " . mysql_error()); if ($result){ echo("Images successfully converted and stored! <br />Click <a href='index.html'>here</a> to continue."); } } } ?> This is the GallerySizer code <?php // Define script constants DEFINE("IMAGE_BASE", '../adam/photos/'); DEFINE("THUMB_BASE", '../adam/thumbs/'); DEFINE("MAX_WIDTH", 100); DEFINE("MAX_HEIGHT", 100); DEFINE("RESIZE_WIDTH", 800); DEFINE("RESIZE_HEIGHT", 600); class GallerySizer{ var $img; // Original image file object var $thumb; // Thumbnail file object var $resize; // Resized image file name var $width; // Original image width var $height; // Original image height var $new_width; // Resized image width var $new_height; // Resized image height var $image_path; // Path to image var $thumbscale; // Scale to resize thumbnail var $image_file; // Resized image filename var $thumbnail; // Thumbnail image file object var $random_file; // Resized image file name (random) /***** * Retrieves path to uploaded image. * Retrieves filename of uploaded image */ function getLocation($image){ $this->image_file = str_replace("..", "/", $image); $this->image_path = IMAGE_BASE . $this->image_file; return true; } /***** * Determines image type, and creates an image object */ function loadImage(){ $this->img = null; $extension = strtolower(end(explode('.', $this->image_path))); if ($extension == 'jpg' || $extension == 'jpeg'){ $this->img = imagecreatefromjpeg($this->image_path); } else if ($extension == 'png'){ $this->img = imagecreatefrompng($this->image_path); } else { return false; } // Sets a random name for the image based on the extension type $file_name = strtolower(current(explode('.', $this->image_file))); $this->random_file = $file_name . $this->getRandom() . "." . $extension; $this->thumbnail = $this->random_file; $this->converted = $this->random_file; $this->resize = $this->random_file; return true; } /***** * Retrieves size of original image. Sets the conversion scale for both * the thumbnail and resized image */ function getSize(){ if ($this->img){ $this->width = imagesx($this->img); $this->height = imagesy($this->img); $this->thumbscale = min(MAX_WIDTH / $this->width, MAX_HEIGHT / $this->height); } else { return false; } return true; } /***** * Creates a thumbnail image from the original uploaded image */ function setThumbnail(){ // Check if image is larger than max size if ($this->thumbscale < 1){ $this->new_width = floor($this->thumbscale * $this->width); $this->new_height = floor($this->thumbscale * $this->height); // Create temp image $tmp_img = imagecreatetruecolor($this->new_width, $this->new_height); // Copy and resize old image into new imagecopyresampled($tmp_img, $this->img, 0, 0, 0, 0, $this->new_width, $this->new_height, $this->width, $this->height); $this->thumb = $tmp_img; } return true; } /***** * Resizes uploaded image to desired viewing size */ function resizeImage(){ if ($this->width < RESIZE_WIDTH){ $this->resize = $this->img; return true; } else { // Create re-sized image $tmp_resize = imagecreatetruecolor(RESIZE_WIDTH, RESIZE_HEIGHT); // Copy and resize image imagecopyresized($tmp_resize, $this->img, 0, 0, 0, 0, RESIZE_WIDTH, RESIZE_HEIGHT, $this->width, $this->height); imagedestroy($this->img); $this->resize = $tmp_resize; return true; } } /***** * Copies thumbnail image to specified thumbnail directory. * Sets permissions on file */ function copyThumbImage(){ imagejpeg($this->thumb, $this->thumbnail); if(!@copy($this->thumbnail, THUMB_BASE . $this->thumbnail)){ echo("Error processing file... Please try again!"); return false; } if(!@chmod($this->thumbnail, 666)){ echo("Error processing file... Please try again!"); return false; } if(!@unlink($this->thumbnail)){ echo("Error processing file... Please try again!"); return false; } return true; } /***** * Copies the resized image to the specified images directory. * Sets permissions on file. */ function copyResizedImage(){ imagejpeg($this->resize, $this->converted); if(!@copy($this->converted, IMAGE_BASE . $this->converted)){ echo("Error processing file... Please try again!"); return false; } if(!@chmod($this->converted, 666)){ echo("Error processing file... Please try again!"); return false; } if(!unlink($this->converted)){ echo("Error processing file... Please try again!"); return false; } // Delete the original uploaded image if(!unlink(IMAGE_BASE . $this->image_file)){ echo("Error processing file... Please try again!"); return false; } return true; } /***** * Generates a random number. Random number is used to rename * the original uploaded image, once resized. */ function getRandom(){ return "_" . date("dmy_His"); } /***** * Returns path to thumbnail image */ function getThumbLocation(){ return "../adam/thumbs/" . $this->random_file; } /***** * Returns path to resized image */ function getImageLocation(){ return "../adam/photos/" . $this->random_file; } } ?> Quote Link to comment https://forums.phpfreaks.com/topic/71346-solved-fatal-error-call-to-undefined-function/ Share on other sites More sharing options...
MrManager Posted October 1, 2007 Share Posted October 1, 2007 Try moving the function definition to the top, above the call. Quote Link to comment https://forums.phpfreaks.com/topic/71346-solved-fatal-error-call-to-undefined-function/#findComment-358989 Share on other sites More sharing options...
Orio Posted October 1, 2007 Share Posted October 1, 2007 Man you totally messed up your code- have you noticed that the function is being defined inside the "else" that starts in line 24? Or that your for loop starts in line 25 and ends in line 51? The code is a total mess. Start using tabbing and other spacing. I'd also recommend you to use a text editor that has some highlighting, I personally use Notepad++. After you clean up your code and fix all of the brace issues, your code should run without this error. Orio. Quote Link to comment https://forums.phpfreaks.com/topic/71346-solved-fatal-error-call-to-undefined-function/#findComment-358992 Share on other sites More sharing options...
shocker-z Posted October 1, 2007 Share Posted October 1, 2007 your calling the function before it's been defined <?php include("GallerySizer.php"); include("config.php"); DEFINE("IMAGE_FULL", '../adam/photos/'); //database connect $db_server ="this is correct"; $db_user = "this is correct"; $db_pass = "this is correct"; $db_name = "this is correct"; $con = mysql_connect("$db_server","$db_user","$db_pass"); //insert image function insert_location($thumb_obj) { $image_location = $thumb_obj->getImageLocation(); $thumb_location = $thumb_obj->getThumbLocation(); // If image matches cover selection, update album cover if($cover == $_FILES['image']['name'][$i]){ $sql = "UPDATE albums SET album_cover = '" . $thumb_location . "' WHERE album_id = " . $_POST['album_id']; $result = @mysql_query($sql) or die("Error inserting records: " . mysql_error()); } mysql_select_db("db218351273", $con); $sql = ("INSERT INTO photos (photo_id, photo_title, photo_desc, photo_date, photo_location, thumbnail_location,album_id) VALUES('0', '$_POST[photo_title]', '$_POST[photo_desc]', 'NOW()', '$image_location', '$thumb_location', '$_POST[album_id]')"); $result = mysql_query($sql) or die("Error inserting record(s) into the database: " . mysql_error()); if ($result){ echo("Images successfully converted and stored! <br />Click <a href='index.html'>here</a> to continue."); } } // Album cover $cover = $_FILES['image']['name'][$_POST['album_cover']]; if (!$_REQUEST['process']){ echo("Error! No images chosen for processing. <br />"); echo("Click <a href='index.php'>here</a> to start processing your images."); die(); } elseif (!$_POST['album_id']){ echo("No album selected. Please <a href=\"\">choose an album</a> to upload images to."); die(); } else { for($i = 0; $i < count($_FILES['image']['tmp_name']); $i++){ $fileName = $_FILES['image']['name'][$i]; copy($_FILES['image']['tmp_name'][$i], IMAGE_FULL . $fileName); $thumb = new GallerySizer(); if($thumb->getLocation($_FILES['image']['name'][$i])){ if($thumb->loadImage()){ echo("Still here!"); if($thumb->getSize()){ if($thumb->setThumbnail()){ if($thumb->copyThumbImage()){ if($thumb->resizeImage()){ $thumb->copyResizedImage(); } } } } } else { echo("Invalid image/file has been uploaded. Please upload a supported file-type (JPEG/PNG)"); unlink(IMAGE_FULL . $fileName); die(); } insert_location($thumb); } } } ?> try that also spaced your code up Liam Quote Link to comment https://forums.phpfreaks.com/topic/71346-solved-fatal-error-call-to-undefined-function/#findComment-358997 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.