Jump to content

[SOLVED] Can I make file upload fields retain input after form validation?


Recommended Posts

Hi All,

 

I have a form that displays errors beneath each requisite field (e.g. not numeric, empty, invalid file type) when validated.

 

When the form process results in an error the values remain in my text fields but the upload fields reset (blank).

 

Is there away of retaining the user input in upload fields that are valid even after the form processes itself?

 

(Is this what 'sticky' means?)

 

 

You must process any uploaded file when it is uploaded. The $_FILES information is destroyed when the form processing code ends execution.

 

The type="file" input field is read only. You cannot set a value in it using any method known to man. And if you could, that would mean that the file gets uploaded each time the form gets submitted, thereby wasting time for the visitor and wasting your bandwidth.

Okay, but its a little messy though functional nonetheless.

 

<?php

if (isset($_POST['submit']))

//PROCESS THE FORM WHEN THE SUBMIT BUTTON IS PRESSED

{ 

//VALIDATE THE INDIVIDUAL TEXT FIELDS AND DEFINE THEM AS TRUE OR FALSE BASED ON THE USER'S INPUT

if (strlen($_POST['make']) > 0)
		{$make=TRUE;}
else 	{$make=FALSE;
		$message_make=" *You forgot to enter the make!";}


if (strlen($_POST['model']) > 0)
		{$model=TRUE;}
else 	{$model=FALSE;
		$message_model=" *You forgot to enter the model!";
		}


if (strlen($_POST['price']) > 0)
		{$price=TRUE;}
else 	{$price=FALSE;
		$message_price=" *You forgot to enter the price!";}


if (strlen($_POST['engine']) > 0)
		{$engine=TRUE;}
else 	{$engine=FALSE;
		$message_engine=" *You forgot to enter the engine!";}


if (strlen($_POST['body']) > 0)
		{$body=TRUE;}
else 	{$body=FALSE;
		$message_body=" *You forgot to enter the body!";}


if (strlen($_POST['transmission']) > 0)
		{$transmission=TRUE;}
else 	{$transmission=FALSE;
		$message_transmission=" *You forgot to enter the transmission!";}


if (strlen($_POST['year']) > 0)
		{$year=TRUE;}
else 	{$year=FALSE;
		$message_year=" *You forgot to enter the year!";}


if (strlen($_POST['colour']) > 0)
		{$colour=TRUE;}
else 	{$colour=FALSE;
		$message_colour=" *You forgot to enter the colour!";}


if (strlen($_POST['mileagem']) > 0)
		{$mileagem=TRUE;}
else 	{$mileagem=FALSE;
		$message_mileagem=" *You forgot to enter the mileage in miles!";}


if (strlen($_POST['mileagekm']) > 0)
		{$mileagekm=TRUE;}
else 	{$mileagekm=FALSE;
		$message_mileagekm=" *You forgot to enter the mileage in kilometres!";}


if (strlen($_POST['owners']) > 0)
		{$owners=TRUE;}
else 	{$owners=FALSE;
		$message_owners=" *You forgot to enter the owner!";}


if (strlen($_POST['doors']) > 0)
		{$doors=TRUE;}
else 	{$doors=FALSE;
		$message_doors=" *You forgot to enter the doors!";}


if (strlen($_POST['location']) > 0)
		{$location=TRUE;}
else 	{$location=FALSE;
		$message_location=" *You forgot to enter the location!";}

        if (isset($_POST['info'])) 
        {
          $info = trim($_POST['info']);
          if ($info == "" || empty($info)) 
            {
            $message_info = "Please enter data for info!";
            }
        }

        $filesize1=$HTTP_POST_FILES['ufile']['size'][0];

        if($filesize1==0) 
        {
        $filesize1=FALSE;
        $message_filesize1="You forgot to enter this image file!";
        //echo "$message_filesize1";
        }
        else 
        {
        $filesize1=TRUE;
        }


        $filesize2=$HTTP_POST_FILES['ufile']['size'][1];

        if($filesize2==0) 
        {
        $filesize2=FALSE;
        $message_filesize2="You forgot to enter this image file!";
        //echo "$message_filesize2";
        }
        else 
        {
        $filesize2=TRUE;
        }

        $filesize3=$HTTP_POST_FILES['ufile']['size'][2];

        if($filesize3==0) 
        {
        $filesize3=FALSE;
        $message_filesize3="You forgot to enter this image file!";
        //echo "$message_filesize3";
        }
        else 
        {
        $filesize3=TRUE;
        }


//CHECK IF ANY THE FILES ARE THE SAME:

        $filenamecheck1= $HTTP_POST_FILES['ufile']['name'][0];
        $filenamecheck2= $HTTP_POST_FILES['ufile']['name'][1];
        $filenamecheck3= $HTTP_POST_FILES['ufile']['name'][2];

        $filesize1=$HTTP_POST_FILES['ufile']['size'][0];
        $filesize2=$HTTP_POST_FILES['ufile']['size'][1];
        $filesize3=$HTTP_POST_FILES['ufile']['size'][2];

        if 
          (
               (($filenamecheck1 == $filenamecheck2) ||  ($filenamecheck2 == $filenamecheck3)  || ($filenamecheck1 == $filenamecheck3))
               && ((!$filesize1==0 && isset($_POST['submit'])) && (!$filesize2==0 && isset($_POST['submit'])) && (!$filesize3==0 && isset($_POST['submit'])))
          )
            {
             $filenamecheck_message = "one ore more of the files are the same";
             //echo "$message_filenamecheck";
             $message_filenamecheck = TRUE;
             $filenamecheck1= FALSE;
             $filenamecheck2= FALSE;
             $filenamecheck3= FALSE;
            }  

        else 
           {
            $message_filenamecheck = FALSE;
            $filenamecheck1= TRUE;
            $filenamecheck2= TRUE;
            $filenamecheck3= TRUE;         
           }

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//CHECK IF FILE 1 IS NOT *.JPEG OR *.GIF

$filesize1=$HTTP_POST_FILES['ufile']['size'][0];

if   (   (
           ($HTTP_POST_FILES['ufile']["type"][0] == "image/gif")
           || ($HTTP_POST_FILES['ufile']["type"][0] == "image/jpeg")
           || ($HTTP_POST_FILES['ufile']["type"][0] == "image/pjpeg")
         )
        // &&($HTTP_POST_FILES['ufile']["size"][0] < 50000)
     )

     { 
      $filetypecheck1=TRUE;
     }

     else
     {
      if (!($filesize1 == 0))
      {
      $message_filetypecheck1=FALSE;
      $message_filetypecheck1="The first of the sumbitted files is not of a *.JPG ! *.GIF file type!";
      echo "$message_filetypecheck1";
      }
     }

//CHECK IF FILE 2 IS NOT *.JPEG OR *.GIF

$filesize2=$HTTP_POST_FILES['ufile']['size'][1];

if   (   (
           ($HTTP_POST_FILES['ufile']["type"][1] == "image/gif")
           || ($HTTP_POST_FILES['ufile']["type"][1] == "image/jpeg")
           || ($HTTP_POST_FILES['ufile']["type"][1] == "image/pjpeg")
         )
        // &&($HTTP_POST_FILES['ufile']["size"][1] < 50000)
     )

     { 
      $filetypecheck2=TRUE;
     }

     else
     {
      if (!($filesize2 == 0))
      {
      $message_filetypecheck2=FALSE;
      $message_filetypecheck2="The second of the sumbitted files is not of a *.JPG ! *.GIF file type!";
      echo "$message_filetypecheck2";
      }
     }

//CHECK IF FILE 3 IS NOT *.JPEG OR *.GIF

$filesize3=$HTTP_POST_FILES['ufile']['size'][2];

if   (   (
           ($HTTP_POST_FILES['ufile']["type"][2] == "image/gif")
           || ($HTTP_POST_FILES['ufile']["type"][2] == "image/jpeg")
           || ($HTTP_POST_FILES['ufile']["type"][2] == "image/pjpeg")
         )
        // &&($HTTP_POST_FILES['ufile']["size"][2] < 50000)
     )

     { 
      $filetypecheck3=TRUE;
     }

     else
     {
      if (!($filesize3 == 0))
      {
      $message_filetypecheck3=FALSE;
      $message_filetypecheck3="The third of the sumbitted files is not of a *.JPG ! *.GIF file type!";
      echo "$message_filetypecheck3";
      }
     }





////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//IF ALL INPUT FIELDS ARE DEFINED AS TRUE
       		
if 
//IF A: IF ALL FIELDS ARE DEFINED AS TRUE
($make && $model && $price && $engine && $body && $transmission && $year && $colour && $mileagem && $mileagekm && $owners && $doors && $location && $info && $filesize1 && $filesize2 && $filesize3 && $filenamecheck1 && filenamecheck2 && filenamecheck3 && $filetypecheck1 && $filetypecheck2 && $filetypecheck3)

	{	
                //THEN A: DO THE FOLLOWING

//THEN VALIDATE FILE UPLOADS

//FIRST CHECK FILE TYPE BUT NOT SIZE

//////////////////////
//B IF/THEN WAS 'ERE//
//////////////////////


//DEFINE PATHS AS VARIABLES

$path1= "upload/".$HTTP_POST_FILES['ufile']['name'][0];
$path2= "upload/".$HTTP_POST_FILES['ufile']['name'][1];
$path3= "upload/".$HTTP_POST_FILES['ufile']['name'][2];

//NEXT CHECK IF EITHER OF THE FILES ALREADY EXIST

if 
//IF C: IF FILE EXISTS
(file_exists($path1) || file_exists($path2) || file_exists($path3))
     
     {
     //THEN C: RETURN ERROR 
     echo "<b>ERROR</b></br></br>
     None of the selected image files have been uploaded as a result of either or both of the following incidents occurring:</br></br>
     1) One or more of the image files you attempted to upload already exist on the server. 
     Please ensure that you have not already uploaded the image file(s) and / or that each file name is unique.</br></br>
     Tip: Try naming the image files semantically after a combination of the make, model and year of the vehichle rather than a random series of letters and numbers.
     </br></br>
     Should you experience further technical difficulty please contact the web master:</br></br>
     [place button here to link to web master cms error log form]
     ";
     }
//CLOSE THEN C


//NEXT POST THE IMAGES TO THE DESIGNATED FOLDER ON THE SERVER

else {
//ELSE C: UPLOAD IMAGES, SAVE PATH AND SUCCESS MESSAGE

copy($HTTP_POST_FILES['ufile']['tmp_name'][0], $path1);
copy($HTTP_POST_FILES['ufile']['tmp_name'][1], $path2);
copy($HTTP_POST_FILES['ufile']['tmp_name'][2], $path3);

//PICK UP AND DEFINE INPUT AS INDIVIDUAL VARIABLES

                  $make = $_POST['make'];
                  $model = $_POST['model'];
                  $price = $_POST['price'];
                  $engine = $_POST['engine'];
                  $body = $_POST['body'];
                  $transmission = $_POST['transmission'];
                  $year = $_POST['year'];
                  $colour = $_POST['colour'];
                  $mileagem = $_POST['mileagem'];
                  $mileagekm = $_POST['mileagekm'];
                  $owners = $_POST['owners'];
                  $doors = $_POST['doors'];
                  $location = $_POST['location'];

//DEFINE ADDITIONAL VARIABLES

                  $now_datetime = date('Y-m-d h:i:s');
                  $ipaddress = getenv('REMOTE_ADDR');

//CONNECT TO RELEVANT DATABASE

                  include("dbinfo.php");
          mysql_connect(localhost,$username,$password);
          @mysql_select_db($database) or die( "Unable to establish a connection to the relevant database.");

//INSERT THE INPUT INTO DATABASE

$query = "INSERT INTO test VALUES ('','$make','$model','$price','$engine','$body','$transmission','$year','$colour','$mileagem','$mileagekm','$owners','$doors','$location','$info','$now_datetime','$ipaddress','$path1','$path2','$path1')";
mysql_query($query);

//NEXT DISPLAY A SUMMARY OF WHAT HAS BEEN UPLOADED


echo "This item has been successfully submitted to the server.</br></br>
The following image file have been appended to your uploaded:</br></br>
";

echo "File Name :".$HTTP_POST_FILES['ufile']['name'][0]."<BR/>"; 
//echo "File Size :".$HTTP_POST_FILES['ufile']['size'][0]." KB<BR/>"; 
echo "File Type :".$HTTP_POST_FILES['ufile']['type'][0]."<BR/>"; 
//echo "<img src=\"$path1\" height=\"150\">";
echo "<P>";

echo "File Name :".$HTTP_POST_FILES['ufile']['name'][1]."<BR/>"; 
//echo "File Size :".$HTTP_POST_FILES['ufile']['size'][1]."<BR/>"; 
echo "File Type :".$HTTP_POST_FILES['ufile']['type'][1]."<BR/>"; 
//echo "<img src=\"$path2\" height=\"150\">";
echo "<P>";

echo "File Name :".$HTTP_POST_FILES['ufile']['name'][2]."<BR/>"; 
//echo "File Size :".$HTTP_POST_FILES['ufile']['size'][2]."<BR/>"; 
echo "File Type :".$HTTP_POST_FILES['ufile']['type'][2]."<BR/>"; 
//echo "<img src=\"$path3\" height=\"150\">";

echo "</br>It's best practice to confirm that your item has been submitted as desired</br></br>
[place button here to link to view relevant section]</br></br>
If you notice an error as a result of human input please find and delete the item indefinitely and reattempt its submission. 
Items should also be deleted as soon as they become redundant (e.g. vehichle sold)</br></br>
Should you experience further technical difficulty please contact the web master:</br></br>
[place button here to link to web master cms error log form]
";
}
//CLOSE ELSE C


//VERY IMPORTANT! EXIT(); WILL NO LONGER DISPLAY THE FORM
               exit();

	}
//CLOSE IF A (ALL FIELDS DEFINED AS TRUE)

} 

// CLOSE OVERALL (IF SUBMIT)

//END FORM PROCESS

?>

<HTML>
<HEAD>
</HEAD>
<BODY>

<!--BEGIN FORM AND SET IT TO PROCESS SELF AND HANDLE MULTIPART/FORM-DATA-->

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">

<fieldset>

<?php

// IF ANY INDIVIDUAL INPUT FIELD IS DEFINED AS FALSE THEN DISPLAY ERROR MESSAGE 

/*
DO NOT INCLUDE || $filesize1 || $filesize2 || $filesize3
OTHERWISWE THE FORM WILL PRESENT THE BELOW ERROR MESSAGE TO THE USER
THE BELOW CONDITIONS CHECK FOR ERROR MESSAGES DEFINED IN THE FORM PROCESS. 
THE ERROR MESSAGES FOR FILE UPLOAD INPUT ELEMENTS ARE NOT DEFINED IN THE FORM PROCESS
*/

if ($message_make || $message_model || $message_price || $message_engine || $message_body || $message_transmission || $message_year || $message_colour || $message_mileagem || $message_mileagekm || $message_owners || $message_doors || $message_location || $message_info || $message_filesize2 || $message_filesize1  || $message_filesize2 || $message_filesize3 || $message_filesize1 || $message_filesize2 || $message_filesize3 || $message_filenamecheck || $message_filetypecheck1 || $message_filetypecheck2 || $message_filetypecheck3) 
//
echo '*Your request could not be sent because some of the information is missing.</br></br>'; 

?>
   
<ol>

<!--BEGIN REGULAR TEXT FIELDS-->

    <li>
    <label for="make">Make:</label>
    <input type="text" name="make" id="make" class="text" value="<?php if (isset($_POST['make'])) echo $_POST['make']; ?>"/>
    <?php if ($message_make) echo ''.$message_make.''; ?></br>
    </li>

    <li>
    <label for="model">Model:</label>
    <input type="text" name="model" id="model" class="text" value="<?php if (isset($_POST['model'])) echo $_POST['model']; ?>"/>
    <?php if ($message_model) echo ''.$message_model.''; ?></br>
    </li>

    <li>
    <label for="price">Price:</label>
    <input type="text" name="price" id="price" class="text" value="<?php if (isset($_POST['price'])) echo $_POST['price']; ?>"/>
    <?php if ($message_price) echo ''.$message_price.''; ?></br>
    </li>	

    <li>
    <label for="engine">Engine:</label>
    <input type="text" name="engine" id="engine" class="text" value="<?php if (isset($_POST['engine'])) echo $_POST['engine']; ?>"/>
    <?php if ($message_engine) echo ''.$message_engine.''; ?></br>
    </li>

    <li>
    <label for="body">Body Type:</label>
    <input type="text" name="body" id="body" class="text" value="<?php if (isset($_POST['body'])) echo $_POST['body']; ?>"/>
    <?php if ($message_body) echo ''.$message_body.''; ?></br>
    </li>

    <li>
    <label for="transmission">Transmission:</label>
    <input type="text" name="transmission" id="transmission" class="text" value="<?php if (isset($_POST['transmission'])) echo $_POST['transmission']; ?>"/>
    <?php if ($message_transmission) echo ''.$message_transmission.''; ?></br>
    </li>

    <li>
    <label for="year">Year:</label>
    <input type="text" name="year" id="year" class="text" value="<?php if (isset($_POST['year'])) echo $_POST['year']; ?>"/>
    <?php if ($message_year) echo ''.$message_year.''; ?></br>
    </li>

    <li>
    <label for="colour">Colour:</label>
    <input type="text" name="colour" id="colour" class="text" value="<?php if (isset($_POST['colour'])) echo $_POST['colour']; ?>"/>
    <?php if ($message_colour) echo ''.$message_colour.''; ?></br>
    </li>

    <li>
    <label for="mileagem">Mileage M:</label>
    <input type="text" name="mileagem" id="mileagem" class="text" value="<?php if (isset($_POST['mileagem'])) echo $_POST['mileagem']; ?>"/>
    <?php if ($message_mileagem) echo ''.$message_mileagem.''; ?></br>
    </li>

    <li>
    <label for="mileagekm">Mileage KM:</label>
    <input type="text" name="mileagekm" id="mileagekm" class="text" value="<?php if (isset($_POST['mileagekm'])) echo $_POST['mileagekm']; ?>"/>
    <?php if ($message_mileagekm) echo ''.$message_mileagekm.''; ?></br>
    </li>

    <li>
    <label for="owners">Owners:</label>
    <input type="text" name="owners" id="owners" class="text" value="<?php if (isset($_POST['owners'])) echo $_POST['owners']; ?>"/>
    <?php if ($message_owners) echo ''.$message_owners.''; ?></br>
    </li>

    <li>
    <label for="doors">Doors:</label>
    <input type="text" name="doors" id="doors" class="text" value="<?php if (isset($_POST['doors'])) echo $_POST['doors']; ?>"/>
    <?php if ($message_doors) echo ''.$message_doors.''; ?></br>
    </li>

    <li>
    <label for="location">Location:</label>
    <input type="text" name="location" id="location" class="text" value="<?php if (isset($_POST['location'])) echo $_POST['location']; ?>"/>
    <?php if ($message_location) echo ''.$message_location.''; ?></br>
    </li>

<!--BEGIN TEXT AREA-->

<li>
<label for="info">Additional Information:</label></br>
<textarea name="info" rows="5" cols="50"/>
<?php if (isset($_POST['info'])) echo stripslashes($_POST['info']); ?>
</textarea>
<?php if ($message_info) echo ''.$message_info.''; ?></br>
</li>


<!--BEGIN FILE UPLOADS-->

    <li>
    <label for "ufile[]">Image File 1:</label>
    <input type="file" name="ufile[]"  id="ufile[]"/>
    <!--NOTICE THAT THIS ERROR DOES NOT CALL ON A VARIABLE IN THE FORM PROCESS LIKE THE TEXT FIELDS.--> 
    <?php 
    //AN ALTERNATIVE WAY CAN BE FOUND HERE: http://www.phpfreaks.com/forums/index.php/topic,226156.0.html
     $filesize1=$HTTP_POST_FILES['ufile']['size'][0];
      if($filesize1==0 && isset($_POST['submit'])) 
       {
        $filesize1=FALSE;
        $message_filesize1="You forgot to enter this image file!";
        echo "$message_filesize1";
       }
      else 
       {
        $filesize1=TRUE;
       } 
    ?>
    </li>


    <li>
    <label for "ufile[]">Image File 2:</label>
    <input type="file" name="ufile[]"  id="ufile[]"/>
    <!--NOTICE THAT THIS ERROR DOES NOT CALL ON A VARIABLE IN THE FORM PROCESS LIKE THE TEXT FIELDS.--> 
    <?php 
     $filesize2=$HTTP_POST_FILES['ufile']['size'][1];
      if($filesize2==0 && isset($_POST['submit'])) 
       {
        $filesize2=FALSE;
        $message_filesize2="You forgot to enter this image file!";
        echo "$message_filesize2";
       }
      else 
       {
        $filesize2=TRUE;
       }
    ?>
    </li>

    <li>
    <label for "ufile[]">Image File 3:</label>
    <input type="file" name="ufile[]"  id="ufile[]"/>
    <!--NOTICE THAT THIS ERROR DOES NOT CALL ON A VARIABLE IN THE FORM PROCESS LIKE THE TEXT FIELDS.--> 
    <?php 
     $filesize3=$HTTP_POST_FILES['ufile']['size'][2];
      if($filesize3==0 && isset($_POST['submit'])) 
       {
        $filesize3=FALSE;
        $message_filesize3="You forgot to enter this image file!";
        echo "$message_filesize3";
       }
      else 
       {
        $filesize3=TRUE;
       }
    ?>
    <?php
    //CHECK IF ANY THE FILES ARE THE SAME:

        $filenamecheck1= $HTTP_POST_FILES['ufile']['name'][0];
        $filenamecheck2= $HTTP_POST_FILES['ufile']['name'][1];
        $filenamecheck3= $HTTP_POST_FILES['ufile']['name'][2];

        $filesize1=$HTTP_POST_FILES['ufile']['size'][0];
        $filesize2=$HTTP_POST_FILES['ufile']['size'][1];
        $filesize3=$HTTP_POST_FILES['ufile']['size'][2];

        if 
          (
               (($filenamecheck1 == $filenamecheck2) ||  ($filenamecheck2 == $filenamecheck3)  || ($filenamecheck1 == $filenamecheck3))
               && ((!$filesize1==0 && isset($_POST['submit'])) && (!$filesize2==0 && isset($_POST['submit'])) && (!$filesize3==0 && isset($_POST['submit'])))
          )
            {
             $filenamecheck_message = "one ore more of the files are the same";
             echo "$filenamecheck_message";
             $filenamecheck_message = TRUE;
             //$filenamecheck1= FALSE;
             //$filenamecheck2= FALSE;
             //$filenamecheck3= FALSE;
            }  
        else {
        $filenamecheck_message = FALSE;
        //$filenamecheck1= TRUE;
        //$filenamecheck2= TRUE;
        //$filenamecheck3= TRUE;         
             }
    ?>
    </li>
    
    <li>
    <input name="submit" type="submit">
    </li>



</ol>

</fieldset>

</form>	

</BODY>
</HTML>

 

Anytime an error message is given the upload fields reset.

Hmm, thats a big no then. It makes sense after your explanations though. I'm trying to make life too easy for the user I geuss  8) .

 

Before I close this off any truth to what Maq mentioned regarding an array?

 

 

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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