Jump to content


Photo

Image Upload Problems - HELP!


  • Please log in to reply
1 reply to this topic

#1 melissal

melissal
  • Members
  • PipPip
  • Member
  • 12 posts

Posted 05 May 2006 - 02:10 AM

I've put the following code into a site...It allows users to add a product, and an image. The problem with it is that if they don't put an image in, nothing happens....It works great if they browse for an image, and click submit, but i need the image field to be optional. Can anyone help?


<?php 
    include('require.php');
    include('include/HTML_header.php');
?>

<table id="table_main" class="table_main">
    <tr>
        <td colspan="4">
            <?php include('include/header.php'); ?>
        </td>
    </tr>
    <tr>
        <td id="table_left" width="150px" align="left">
            <?php category_list_by_price(); ?><br />
            <?php category_list(); ?><br />
            <?php searchform(); ?>
        </td>
        <td width="20px">&nbsp;</td>
        <td id="table_content" width="560px" align="left">
        
<!-----------------------------------THE CONTENT GOES BELOW THIS LINE----------------------------------->
<?php 
// This page allows users to upload files to the server.

$counter = 1; // Number of files to allow for.

if (isset($_POST['submitted'])) { // Handle the form.

    //require_once ('../mysql_connect.php'); // Connect to the database.
    
    for ($i = 0; $i < $counter; $i++) { // Handle each uploaded file.
    
        // Create index names to refer to the proper upload and description.
        $filename = 'product' . $i;
        //$description = 'description' . $i;
    
        // Check for a file.
        if (isset($_FILES[$filename]) && ($_FILES[$filename]['error'] != 4)) {

            // Check for a description (not required).
            /*if (!empty($_POST[$description])) {
                $d = "'" . escape_data($_POST[$description]) . "'";
            } else {
                $d = 'NULL';
            }*/
            
            // Add the record to the database.
            $query = "INSERT INTO products (product_file_name, product_file_size, product_file_type, product_ipaddress,product_date,product_user_id,product_title,product_description,product_category_id,product_price_id,product_price) VALUES ('{$_FILES[$filename]['name']}', {$_FILES[$filename]['size']}, '{$_FILES[$filename]['type']}', '".$_SERVER['REMOTE_ADDR']."', NOW(), '".$_SESSION['user_id']."','".$_POST['product_title']."','".$_POST['product_description']."','".$_POST['product_category_id']."','".$_POST['product_price_id']."','".$_POST['product_price']."')";
            $result = mysql_query ($query);
        
            if ($result) {
                
                // Return the product_id from the database.
                $product_id = mysql_insert_id();
                
                
                // Move the file over.
                if (move_uploaded_file($_FILES[$filename]['tmp_name'], "../uploads/$product_id-{$_FILES[$filename]['name']}")) {
                
                    echo '<p>File number ' . ($i + 1) . ' has been uploaded!</p>';
                    
                } else { // File could not be moved.
                
                    echo '<p><font color="red">File number ' . ($i + 1) . ' could not be moved.</font></p>';
        
                    // Remove the record from the database.
                    $query = "DELETE FROM products WHERE product_id = $product_id";
                    $result = mysql_query ($query);
                    
                    // Add more detailed error reporting, if desired.
                    
                }
                
            } else { // If the query did not run OK.
                echo '<p><font color="red">Your submission could not be processed due to a system error. We apologize for any inconvenience!</font></p>'; 
                // Print the query and invoke the mysql_error() function to debug.
            }
            
        } // End of if (isset($the_file)...
        
    } // End of FOR loop.
    
    mysql_close(); // Close the database connection.
        
} // End of the main Submit conditional.
?>

<div class="titletext">Add a Product</div><br />
<form enctype="multipart/form-data" action="product_add-working.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="524288">
    
    <?php // Create the inputs.
    for ($i = 0; $i < $counter; $i++) {
        echo '
        
            <table>
                <tr>
                    <td width="120"><font color="#FF0033">*</font>Product Title/Name:</td>
                    <td width="200"><input type="text" name="product_title" size="30" maxlength="50" /></td>
                </tr>
                <tr>
                    <td width="120"><font color="#FF0033">*</font>Description:</td>
                    <td width="200"><textarea name="product_description" cols="23" rows="5"></textarea></td>
                </tr>
                <tr>
                    <td width="120"><font color="#FF0033">*</font>Category:</td>
                    <td width="200"><input type="text" name="product_category_id" size="30" maxlength="50" /></td>
                </tr>
                <tr>
                    <td width="120"><font color="#FF0033">*</font>Price:</td>
                    <td width="200"><input type="text" name="product_price_id" size="30" maxlength="50" /></td>
                </tr>
                <tr>
                    <td width="120">Price:</td>
                    <td width="200"><input type="text" name="product_price" size="30" maxlength="50" /></td>
                </tr>
                <tr>
                    <td width="120">Image:</td>
                    <td width="200"><input type="file" name="product' . $i . '" /></td>
                </tr>
    
        </table>
    
    ';
    }
    ?>
    
    <input type="hidden" name="submitted" value="TRUE" />
    <div align="center"><input type="submit" name="submit" value="Submit" /></div>

</form>



<!-----------------------------------THE CONTENT GOES ABOVE THIS LINE----------------------------------->
                </td>
        <td width="20px">&nbsp;</td>
    </tr>
</table>

<?php include('include/loginfooter2.php'); ?>


#2 oldschool

oldschool
  • Members
  • PipPip
  • Member
  • 15 posts

Posted 05 May 2006 - 10:23 AM

Your only running the insert query when there is an POST value, so therefore, move the query outside of the image POST




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users