Wrox Programmer Forums

Need to download code?

View our list of code downloads.

Go Back   Wrox Programmer Forums > PHP/MySQL > Moderated Pro PHP
Password Reminder
Register
Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read
Moderated Pro PHP This is a moderated forum for discussing advanced, professional level issues with PHP. Your posts will not appear until a moderator approves them. Posts that are not the right level for this forum will be responded to and you'll be asked to post them in the [url="http://p2p.wrox.com/sql-server-2000-20/9"]Beginning PHP[/url] forum instead.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the Moderated Pro PHP section of the Wrox Programmer to Programmer discussions. This is a community of tens of thousands of software programmers and website developers including Wrox book authors and readers. As a guest, you can read any forum posting. By joining today you can post your own programming questions, respond to other developersí questions, and eliminate the ads that are displayed to guests. Registration is fast, simple and absolutely free .
DRM-free e-books 300x50
Reply
 
Thread Tools Display Modes
  #1 (permalink)  
Old November 26th, 2010, 09:58 AM
Registered User
 
Join Date: Nov 2010
Posts: 2
Thanks: 0
Thanked 0 Times in 0 Posts
Default Image Upload in php 6.0

I'm presently battling with this code in chapter7 of wrox's php 6.0 regarding images. The problem is that both the source code I downloaded from wrox's official website and the one I manually lifed from the chapter 7 page pages is not displaying the image on any browser but an "X" figure.

The only difference is that the manually lifted code is inserting the sql query into all the fields of the image table; while the source code from the wrox's website isn't.
Below are excerpts:

Code from Wrox (I only modifed the image directories as I commented.

1. Table in use:
[code]
<?php
$db = mysql_connect('localhost', 'bp6am', 'bp6ampass') or
die ('Unable to connect. Check your connection parameters.');
mysql_select_db('moviesite', $db) or die(mysql_error($db));

//create the images table
$query = 'CREATE TABLE images (
image_id INTEGER NOT NULL AUTO_INCREMENT,
image_caption VARCHAR(255) NOT NULL,
image_username VARCHAR(255) NOT NULL,
image_filename VARCHAR(255) NOT NULL DEFAULT "",
image_date DATE NOT NULL,
PRIMARY KEY (image_id)
)
ENGINE=MyISAM';
mysql_query($query, $db) or die (mysql_error($db));

echo 'Images table successfully created.';
?>
Code:
2. upload_image.php

<html>
 <head>
  <title>Upload your pic to our site!</title>
  <style type="text/css">
  <!--
td {vertical-align: top;}
  -->
  </style>
 </head>
 <body>
  <form action="check_image.php" method="post" enctype="multipart/form-data">
   <table>
    <tr>
     <td>Your Username</td>
     <td><input type="text" name="username" /></td>
    </tr>
     <td>Upload Image*</td>
     <td><input type="file" name="uploadfile" /></td>
    </tr><tr>
     <td colspan="2">
      <small><em>* Acceptable image formats include: GIF, JPG/JPEG and PNG.
       </em></small>
     </td>
    </tr><tr>
     <td>Image Caption<br/>
     </td>
     <td><input type="text" name="caption" /></td>
    </tr><tr>
     <td colspan="2" style="text-align: center">
      <input type="submit" name="submit" value="Upload"/>
     </td>
    </tr>
   </table>
  </form>
 </body>
</html>



3.check_image.php (this 1 does not insert image_filename into the image table)
Code:
<?php
//connect to MySQL
$db = mysql_connect('localhost', 'root', '') or 
    die ('Unable to connect. Check your connection parameters.');
mysql_select_db('moviesite', $db) or die(mysql_error($db));

//change this path to match your images directory from the text
//$dir ='C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/images';
$dir='C:/xampp/htdocs/WroxPhp6.0/Ch07';//this is the 1st thing I changed

//change this path to match your thumbnail directory
$thumbdir = $dir . '/thumbs';

//change this path to match your fonts directory and the desired font
putenv('GDFONTPATH=' . 'C:/Windows/Fonts');
$font = 'arial';

// handle the uploaded image
if ($_POST['submit'] == 'Upload') {

    //make sure the uploaded file transfer was successful
    if ($_FILES['uploadfile']['error'] != UPLOAD_ERR_OK)
    {
        switch ($_FILES['uploadfile']['error']) {
        case UPLOAD_ERR_INI_SIZE:
            die('The uploaded file exceeds the upload_max_filesize directive ' .
                'in php.ini.');
            break;
        case UPLOAD_ERR_FORM_SIZE:
            die('The uploaded file exceeds the MAX_FILE_SIZE directive that ' .
                'was specified in the HTML form.');
            break;
        case UPLOAD_ERR_PARTIAL:
            die('The uploaded file was only partially uploaded.');
            break;
        case UPLOAD_ERR_NO_FILE:
            die('No file was uploaded.');
            break;
        case UPLOAD_ERR_NO_TMP_DIR:
            die('The server is missing a temporary folder.');
            break;
        case UPLOAD_ERR_CANT_WRITE:
            die('The server failed to write the uploaded file to disk.');
            break;
        case UPLOAD_ERR_EXTENSION:
            die('File upload stopped by extension.');
            break;
        }
    }
    
    //get info about the image being uploaded
    $image_caption = $_POST['caption'];
    $image_username = $_POST['username'];
    $image_date = @date('Y-m-d');
    list($width, $height, $type, $attr) =
        getimagesize($_FILES['uploadfile']['tmp_name']);

    // make sure the uploaded file is really a supported image
    $error = 'The file you uploaded was not a supported filetype.';
    switch ($type) {
    case IMAGETYPE_GIF:
        $image = imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or
            die($error);
        break;
    case IMAGETYPE_JPEG:
        $image = imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']) or
            die($error);
        break;
    case IMAGETYPE_PNG:
        $image = imagecreatefrompng($_FILES['uploadfile']['tmp_name']) or
            die($error);
        break;
    default:
        die($error);
    }

    //insert information into image table
    $query = "INSERT INTO images (image_caption, image_username, image_date)
VALUES ('$image_caption', '$image_username', '$image_date')";
$result = mysql_query($query, $db) or die (mysql_error($db));
    
    //retrieve the image_id that MySQL generated automatically when we inserted
    //the new record
    $last_id = mysql_insert_id();
    
    // save the image to its final destination
    $image_id = $last_id;
    imagejpeg($image, $dir . '/' . $image_id  . '.jpg');
    imagedestroy($image);

} else {
    // retrieve image information
    $query = 'SELECT
        image_id, image_caption, image_username, image_date
    FROM
        images
    WHERE
        image_id = ' . $_POST['id'];
    $result = mysql_query($query, $db) or die (mysql_error($db));
    extract(mysql_fetch_assoc($result));

    list($width, $height, $type, $attr) = getimagesize($dir . '/' . $image_id .
        '.jpg');
}

if ($_POST['submit'] == 'Save') {
    // make sure the requested image is valid
    if (isset($_POST['id']) && ctype_digit($_POST['id']) &&
        file_exists($dir . '/' . $_POST['id'] . '.jpg')) {
        $image = imagecreatefromjpeg($dir . '/' . $_POST['id'] . '.jpg');
    } else {
        die('invalid image specified');
    }

    // apply the filter    
    $effect = (isset($_POST['effect'])) ? $_POST['effect'] : -1;
    switch ($effect) {
    case IMG_FILTER_NEGATE:
        imagefilter($image, IMG_FILTER_NEGATE); 
        break;
    case IMG_FILTER_GRAYSCALE:
        imagefilter($image, IMG_FILTER_GRAYSCALE); 
        break;
    case IMG_FILTER_EMBOSS:
        imagefilter($image, IMG_FILTER_EMBOSS); 
        break;
    case IMG_FILTER_GAUSSIAN_BLUR:
        imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR);
        break;
    }

    // add the caption if requested
    if (isset($_POST['emb_caption'])) {
        imagettftext($image, 12, 0, 20, 20, 0, $font, $image_caption);
    }

    //add the logo watermark if requested
    if (isset($_POST['emb_logo'])) {
        // determine x and y position to center watermark
        list($wmk_width, $wmk_height) = getimagesize('images/logo.png');
        $x = ($width - $wmk_width) / 2;
        $y = ($height - $wmk_height) / 2;
    
        $wmk = imagecreatefrompng('images/logo.png');
        imagecopymerge($image, $wmk, $x, $y, 0, 0, $wmk_width, $wmk_height, 20);
        imagedestroy($wmk);
    }

    // save the image with the filter applied
    imagejpeg($image, $dir . '/' . $_POST['id'] . '.jpg', 100);

    //set the dimensions for the thumbnail
    $thumb_width = $width * 0.10;
    $thumb_height = $height * 0.10;

    //create the thumbnail
    $thumb = imagecreatetruecolor($thumb_width, $thumb_height);
    imagecopyresampled($thumb, $image, 0, 0, 0, 0, $thumb_width, $thumb_height,
        $width, $height);
    imagejpeg($thumb, $dir . '/' . $_POST['id'] . '.jpg', 100);
    imagedestroy($thumb);
?>
<html>
 <head>
  <title>Here is your pic!</title>
 </head>
 <body>
  <h1>Your image has been saved!</h1>
  <img src="WroxPhp6.0/Ch07/<?php echo $_POST['id']; ?>.jpg" /><?php echo//here I changed the directory to my localhost ?>
 </body>
</html>
<?php
} else {
?>
<html>
 <head>
  <title>Here is your pic!</title>
 </head>
 <body>
  <h1>So how does it feel to be famous?</h1>
  <p>Here is the picture you just uploaded to our servers:</p>
<?php 
   if ($_POST['submit'] == 'Upload') {
       $imagename = 'WroxPhp6.0/Ch07/' . $image_id  . '.jpg';//here I also changed the directory to my localhost (WroxPhp6.0/Ch07 dir)
   } else {
       $imagename = 'image_effect.php?id=' . $image_id  . '&e=' .
           $_POST['effect'];

       if (isset($_POST['emb_caption'])) {
           $imagename .= '&capt=' . urlencode($image_caption); 
       }

       if (isset($_POST['emb_logo'])) {
           $imagename .= '&logo=1'; 
       }
   }
?>
   <img src="WroxPhp6.0/Ch07<?php echo $imagename; ?>" style="float:left;">
  <table>
   <tr><td>Image Saved as: </td><td><?php echo $image_id  . '.jpg'; ?></td></tr>
   <tr><td>Height: </td><td><?php echo $height; ?></td></tr>
   <tr><td>Width: </td><td><?php echo $width; ?></td></tr>
   <tr><td>Upload Date: </td><td><?php echo $image_date; ?></td></tr>
  </table>
  <p>You may apply special options to your image below. Note: saving an image
with any of the options applied  <em>cannot be undone</em>.</p>
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
   <div>
    <input type="hidden" name="id" value="<?php echo $image_id;?>"/>
    Filter: <select name="effect">
     <option value="-1">None</option>
<?php
    echo '<option value="' . IMG_FILTER_GRAYSCALE . '"';
    if (isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_GRAYSCALE) {
        echo ' selected="selected"';
    }
    echo '>Black and White</option>';

    echo '<option value="' . IMG_FILTER_GAUSSIAN_BLUR . '"';
    if (isset($_POST['effect']) && $_POST['effect'] ==
        IMG_FILTER_GAUSSIAN_BLUR) {
        echo ' selected="selected"';
    }
    echo '>Blur</option>';

    echo '<option value="' . IMG_FILTER_EMBOSS . '"';
    if (isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_EMBOSS) {
        echo ' selected="selected"';
    }
    echo '>Emboss</option>';

    echo '<option value="' . IMG_FILTER_NEGATE . '"';
    if (isset($_POST['effect']) && $_POST['effect'] == IMG_FILTER_NEGATE) {
        echo ' selected="selected"';
    }
    echo '>Negative</option>';
?>
    </select>
    <br/><br/>
<?php
    echo '<input type="checkbox" name="emb_caption"';
    if (isset($_POST['emb_caption'])) {
        echo ' checked="checked"';
    }
    echo '>Embed caption in image?';
    echo '<br/><br/><input type="checkbox" name="emb_logo"';
    if (isset($_POST['emb_logo'])) {
        echo ' checked="checked"';
    }
    echo '>Embed watermarked logo in image?';
?>
    <br/><br/>
    <input type="submit" value="Preview" name="submit" />
    <input type="submit" value="Save" name="submit" />
   </div>
  </form>
 </body>
</html>
<?php
}
?>
4.Manually lifted code

check_image.php (this 1 inserts image_filename into the image table)
Code:
<?php
$db = mysql_connect("localhost","root","") or
die ("Unable to connect. Check your connection parameters.");
mysql_select_db("moviesite", $db) or die(mysql_error($db));

//change this path to match your images directory
$dir ="C:/xampp/htdocs/WroxPhp6.0/Ch07/manual";
//make sure the uploaded file transfer was successful

if ($_FILES["uploadfile"]["error"] != UPLOAD_ERR_OK) {
switch ($_FILES["uploadfile"]["error"]) {
case UPLOAD_ERR_INI_SIZE:
die("The uploaded file exceeds the upload_max_filesize directive " .
"in php.ini.");
break;
case UPLOAD_ERR_FORM_SIZE:
die("The uploaded file exceeds the MAX_FILE_SIZE directive that " .
"was specified in the HTML form.");
break;
case UPLOAD_ERR_PARTIAL:
die("The uploaded file was only partially uploaded.");
break;
case UPLOAD_ERR_NO_FILE:
die("No file was uploaded.");
break;
case UPLOAD_ERR_NO_TMP_DIR:
die("The server is missing a temporary folder.");
break;
case UPLOAD_ERR_CANT_WRITE:
die("The server failed to write the uploaded file to disk.");
break;
case UPLOAD_ERR_EXTENSION:
die("File upload stopped by extension.");
break;
}
}
//get info about the image being uploaded
$uploadfile = $_POST["uploadfile"];
$image_caption = $_POST["caption"];
$image_username = $_POST["username"];
$image_date = date("Y-m-d");
list($width, $height, $type, $attr) = getimagesize($_FILES["uploadfile"]["tmp_name"]);
// make sure the uploaded file is really a supported image
switch ($type) {
case IMAGETYPE_GIF:
$image = imagecreatefromgif($_FILES["uploadfile"]["tmp_name"]) or
die("The file you uploaded was not a supported filetype.");
$ext = ".gif";
break;
case IMAGETYPE_JPEG:
$image = imagecreatefromjpeg($_FILES["uploadfile"]["tmp_name"]) or
die("The file you uploaded was not a supported filetype.");
$ext = ".jpg";
break;
case IMAGETYPE_PNG:
$image = imagecreatefrompng($_FILES["uploadfile"]["tmp_name"]) or
die("The file you uploaded was not a supported filetype.");
$ext = ".png";
break;
default:
die("The file you uploaded was not a supported filetype.");
}
//insert information into image table
$query = "INSERT INTO images (image_caption, image_username, image_date)
VALUES ('$image_caption.', '$image_username', '$image_date')";
$result = mysql_query($query, $db) or die (mysql_error($db));
//retrieve the image_id that MySQL generated automatically when we inserted
//the new record
$last_id = mysql_insert_id();
//because the id is unique, we can use it as the image name as well to make
//sure we donít overwrite another image that already exists
$imagename = $last_id.$ext;
// update the image table now that the final filename is known.
$query = "UPDATE images SET image_filename = '$imagename'
WHERE image_id = '$last_id'";
$result = mysql_query($query, $db) or die (mysql_error($db));
$sel=mysql_query("select * from images where image_filename='$imagename'");
$res=mysql_fetch_array($sel);
$image_filename=$res['image_filename'];
//save the image to its final destination
switch ($type) {
case IMAGETYPE_GIF:
imagegif($image, $dir . '/' . $imagename);
break;
case IMAGETYPE_JPEG:
imagejpeg($image, $dir . '/' . $imagename, 100);
break;
case IMAGETYPE_PNG:
imagepng($image, $dir . '/' . $imagename);
break;
}
imagedestroy($image);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Here's your pic</title>
</head>
<body>
<h1> So how does it feel to be famous? </h1 >
<p> Here is the picture you just uploaded to our servers: </p >
<img src="WroxPhp6.0/Ch07/manual/<?php echo $imagename; ?>; ?>" style="float:left;">
<table>
<tr> <td> Image Saved as: </td> <td><?php echo $imagename; ?></td> </tr>
<tr> <td> Image Type: </td> <td> <?php echo $ext; ?> </td> </tr>
<tr> <td> Height: </td> <td> <?php echo $height; ?> </td > </tr>
<tr> <td> Width: </td> <td> <?php echo $width; ?> </td > </tr>
<tr> <td> Upload Date: </td > <td > <?php echo $image_date; ?> </td > </tr>
</table>
</body>
</html>
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
Upload image-create & save thumbnail-display image angshujit ASP.NET 2.0 Professional 6 July 11th, 2013 10:34 PM
How to: Upload image to server and save image name in db with other form info Clint PHP How-To 1 October 26th, 2009 05:50 AM
how to upload image? vipin k varghese BOOK: XSLT Programmer's Reference, 2nd Edition 3 June 3rd, 2008 02:53 AM
Image Upload spbharti Pro PHP 3 February 3rd, 2006 07:20 AM
Image upload Pallav Javascript How-To 8 October 21st, 2004 12:14 AM



All times are GMT -4. The time now is 04:01 AM.


Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
© 2013 John Wiley & Sons, Inc.