n. 1. the inherit form in every MySQL table. 2. the php script that makes it happen.

Support This Project

File Upload Example



//include class, create new Formitable, set primary key field name
$newForm = new Formitable( mysql_connect("server","user","pass"),"db","table" );

//set custom field labels
$newForm->labelFields( array("file_name","desc"),
"Select a File <small>(max size ".ini_get('upload_max_filesize').")</small>","File Description") );

//force field types
$newForm->forceTypes( array("file_name","desc"), array("file","text") );

//set success message
$newForm->msg_insertSuccess = "<center><label class=\"font\">File successfully uploaded.</label></center>";

//set file field length (file fields are not styleable)

//set error feedback method
$newForm->feedback = "box";

//handle files on submit

//path to upload to (with trailing slash)
$path = "/path/to/files/";

//array of filetypes to check against
$filetypes = array("exe","vb","com","js","php","php3","htm","html");

//should file be include(ed) or exclude(ed) to be acceptable?
$filemode = "exclude";

$_FILES as $key=>$value ){

//get built-in error code (since PHP 4.2.0)
if( isset($_FILES[$key]['error']) ){ $phpErr = $_FILES[$key]['error']; }
$phpErr = 0; }

$_FILES[$key]['name'] && $phpErr!=4 ){

// get the max file size from post (upload_max_filesize in php.ini)
            // http://us3.php.net/manual/en/ini.core.php#ini.upload-max-filesize
            // to set the upload size smaller than the value in php.ini
            // create an .htaccess file in the script directory with the following directive
            // php_value upload_max_filesize 1M
$maxSize = $_POST['MAX_FILE_SIZE'];

//test for possible errors: empty/partial file, file too big, file is not really an upload
if( $_FILES[$key]['size']==0 )
$newForm->errMsg[$key] = "File is empty.";
            else if(
$phpErr==3 )
$newForm->errMsg[$key] = "File incomplete (possibly too big)";
            else if(
$phpErr==1 || $phpErr==2 || $_FILES[$key]['size']>$maxSize)
$newForm->errMsg[$key] = "File is too big ($maxSize byte limit)";
            else if(!
$newForm->errMsg[$key] = "Error in upload.";

//everything ok, proceed with upload
else {
//get extension and test if acceptable
$ext=split("\.",$_FILES[$key]['name']); $ext=$ext[sizeof($ext)-1];
                if( (
$filemode=="exclude" && in_array($ext,$filetypes)) ||
$filemode=="include" && !in_array($ext,$filetypes)) )
$newForm->errMsg[$key] = "Unacceptable Filetype.";
//finally copy file
else if( $phpErr!=6 && $phpErr!=7 && copy($_FILES[$key]['tmp_name'], $path.$_FILES[$key]['name']) ){
//set file path to be stored in db
$_POST[$key] = $path.$_FILES[$key]['name'];
$newForm->errMsg[$key] = "Unable to copy file.";

        } else
$newForm->errMsg[$key] = "No file specified.";



//output form if not submitted or there were errors on submit
if( !isset($_POST['submit']) ||
$_POST['submit']) && $newForm->submitForm() == -1) ){
//change submit title and omit reset button
$newForm->closeForm("Upload File","",false);


MySQL Tables

CREATE TABLE `formitable_file` (
  `id` tinyint(3) unsigned NOT NULL auto_increment,
  `file_name` tinytext NOT NULL,
  `desc` tinytext NOT NULL,
  PRIMARY KEY  (`id`)