Zend - The PHP Company




Forms

Add Code


Form Generator  

Type: class
Added by: hubidubi
Entered: 11/06/2002
Last modified: 07/12/2001
Rating: - (fewer than 3 votes)
Views: 17379
Form generator which waits for an array and gives back a full input form. It can process the data (insert, update, delete) Now supports file upload and styles


<?php

/*
 *  Form creator
 *  
 *  Coded by Hubidubi (hubidubi@freemail.hu)
 *
 */

class form {
    var 
$items// array containing the data for the form
    
var $arrayname// name of the form array

    
function form($items=array()) {
    if (!empty(
$items)) {
        
$this->items=$items;
        foreach (
$items as $item) {
        if (
$item[0]=="name") {
            
$this->arrayname=$item[1]; // getting the table name
            
$name=true;
            break;
        }
        }
        if (!isset(
$name)) die("The form hasn't got name parameter");
    }
    }

    function 
drawForm() { // drawing the input form 
    
global $PHP_SELF;

    if (!empty(
$this->items)) {

        foreach (
$this->items as $item) {
        if (
$item[0]=="file"$f=1// Is there file upload?
        
if ($item[0]=="textstyle"$textstyle=$item[1];
        if (
$item[0]=="formstyle"$formstyle=$item[1];
        if (
$item[0]=="titlestyle"$titlestyle=$item[1];
        if (
$item[0]=="title"$title=1;
        }
        if (!isset(
$textstyle)) $textstyle="";
        if (!isset(
$formstyle)) $formstyle="";
        if (!isset(
$titlestyle)) $titlestyle=$textstyle;

        if (
$f==1printf("<form method="post" name="%s" enctype="multipart/form-data" action=%s>",$this->arrayname,$PHP_SELF);
        else 
printf("<form method="post" name="%s" action="%s">",$this->arrayname,$PHP_SELF);
        echo(
"<center><table BORDER="0">");
        foreach (
$this->items as $item) {
        if (
$item[0]=="title") {
            
// Draw the title        
            // with alignment
            
if (isset($item[2])) printf("<thead><tr><td align="%s" class="%s" colspan=2>%s</td></tr></thead>",$item[3],$titlestyle,$item[1]);
            
// without alignment
            
else printf("<thead><tr><td class="%s" colspan=2>%s</td></tr></thead>",$item[1],$titlestyle);
        }
        }

        foreach (
$this->items as $item) { // items of the form     
        
switch ($item[0]) {
        case 
"text"// text form
            
printf("<tr><td class="%s">$item[1]</td>",$textstyle);
            if (!isset(
$item[2])) printf("<td><input type="text" name="%s[%s]" value="" class="%s"></td></tr>",$this->arrayname,$item[2],$formstyle);
            else 
printf("<td><input type="text" name="%s[%s]" size="%d" value="%s" class="%s"></td></tr>",$this->arrayname,$item[2],$item[3],$item[4],$formstyle);
            break;
        case 
"password"// password 
            
printf("<tr><td class="%s">$item[1]</td>",$textstyle);
            if (!isset(
$item[2])) printf("<td><input type="password" name="%s[%s]" value="" class="%s"></td></tr>",$this->arrayname,$item[2],$formstyle);
            else 
printf("<td><input type="password" name="%s[%s]" size="%d" value="%s" class="%s"></td></tr>",$this->arrayname,$item[2],$item[3],$item[4],$formstyle);
            break;
        case 
"radio"// radio button
            
printf("<tr><td class="%s">$item[1]</td>",$textstyle);
            
printf("<td class="%s">",$textstyle);
            foreach (
$item[3] as $key=>$value) {
            if (isset(
$item[4]) && $item[4]==$key) {
                
printf("<input type="radio" name="%s[%s]" value="%s" checked class="%s">%s<br>",$this->arrayname,$item[2],$key,$formstyle,$value);
            }
            else {
                
printf("<input type="radio" name="%s[%s]" value="%s" class="%s">%s<br>",$this->arrayname,$item[2],$key,$formstyle,$value);
            }
            }
            echo(
"</td>");
            break;
        case 
"checkbox"// checkbox button
            
printf("<tr><td class="%s">$item[1]</td>",$textstyle);
            echo(
"<td>");
            if (isset(
$item[3])) printf("<input type="checkbox" name="%s[%s]" value="%s" class="%s" checked>",$this->arrayname,$item[2],1,$formstyle);
            else 
printf("<input type="checkbox" name="%s[%s]" value="%s" class="%s">",$this->arrayname,$item[2],1,$formstyle);
            echo(
"</td>");
            break;
        case 
"select":
            
printf("<tr><td class="%s">$item[1]</td>",$textstyle);
            
printf("<td><select name="%s[%s]" class="%s">",$this->arrayname,$item[2],$formstyle);
            foreach (
$item[3] as $key=>$value) {
            if (isset(
$item[4]) && $item[4]==$key)  // setting default value
                
printf("<option value="%s" selected>%s</option>",$key,$value);
            else 
printf("<option value="%s">%s</option>",$key,$value);
            }
            echo(
"</select></td></tr>");
            break;
        case 
"textarea"// textarea
            
printf("<tr><td class="%s">$item[1]</td>",$textstyle);
            if (!isset(
$item[3])) printf("<td><textarea name="%s[%s]" class="%s" wrap="on"></textarea></td></tr>",$this->arrayname,$item[2],$formstyle);
            else 
printf("<td><textarea name="%s[%s]" class="%s" wrap="on" cols="%d" rows=%d>%s</textarea></td></tr>",$this->arrayname,$item[2],$formstyle,$item[3],$item[4],$item[5]);
            break;
        case 
"file"// file upload field
            
printf("<tr><td class="%s">$item[1]</td><td>",$textstyle);
            
printf("<input type="file" name="%s" size="%d" class="%s">",$item[2],$item[3],$formstyle);
            
printf("<input type="hidden" name="MAX_FILE_SIZE" value="%d">",$config->MaxUploadSize);
            
printf("<input type="hidden" name="%s[fileupload]" value="%s"></td></tr>",$this->arrayname,$item[2]);
            break;
        case 
"hidden"// hidden fields
            
printf("<input type="hidden" name="%s[%s]" value="%s">",$this->arrayname,$item[1],$item[2]);
            break;
        case 
"submit"// defining the label for submit button
            
$submit=$item[1];
            
$submitname=$item[2];
            break;
        case 
"delete"// delete button
            
$delete=$item[1];
            
$deletename=$item[2];
            break;
        }
        }
        if (isset(
$delete)) printf("<tr><td colspan=2 class="%s"><input type="checkbox" name="%s" value="1" class="%s">%s</td></tr>",$textstyle,$deletename,$formstyle,$delete); // checkbox for deletion
        
printf("<tr><td colspan=2 align=center><br><input type="submit" name="%s" value="%s" class="%s"></td></tr></table></center></form>",$submitname,$submit,$formstyle);
    } else print(
"<br>A form kirajzol�s�hoz nincsenek adatok<br>");
    }

    
/* If is there a file upload, it has got some extra parameter (e.g. file_type). 
     * These parameter are put here to the main array
     */
    
function preinsert($pairs=array(),$tabla="") {
    global 
$config;

    foreach (
$pairs as $key=>$value) {
        if (
$key=="fileupload") { // special variable containing the prefix of the name of the uploaded file
        
$name=$value."_name";
        
$size=$value."_size";
        
$type=$value."_type";
        
$path=$value;
        global $
$name,$$size,$$type,$$path;
        if ($
$size>$config->MaxUploadSize) { // checking the size of the uploaded file, you must set $config->MaxUploadSize
            
printf("The uploaded file is too big. The maximal size is %d byte. <br>Please repeat the upload!",$config->MaxUploadSize);
            
$this->drawform();
        } else {
            
// let's put the values of the uploaded image to the main array
            
$pairs[file_name]=$$name;
            
$pairs[file_size]=$$size;
            
$pairs[file_type]=$$type;
            
$pairs[file_path]=$$path;
            if (!empty(
$tabla)) $this->insert($pairs,$tabla); // if you get table name, insert do everything to you
            
else return($pairs); // if there's no table, we return with the finished array
            
break;
        }
        }
    }
    }

    function 
insert($pairs,$table) { // method for inserting record to the database
    
$SQL="INSERT INTO $table (";
    
$first=true;
    foreach (
$pairs as $key=>$value) {
        if (
$key!="id" || $key!="title" || $key!="submit") { // everything except record ID,title,submit
        
if ($first)  {
            
$value=""".$value;
            
$first=false;
        }else {
            
$key=",".$key;
            
$value=","".$value;
        }
        
$fields.=$key;
        
$values.=$value.""";
        }
    }
    
$SQL.=$fields."VALUES(".$values.")";
    // Your database code here ...
    }

    function update(
$pairs,$table) { // method for updating records in the database
    
$SQL="UPDATE $table SET ";
    
$first=true;
    foreach (
$pairs as $key=>$value) {
        if (
$key!="id" || $key!="title" || $key!="submit") { // everything except record ID,title,submit
        if (
$first)  {
            
$SQL.="$key="$value"";
            
$first=false;
        }else {
            
$SQL.=",$key="$value"";
        }
        }
    }
    
$SQL.=" WHERE id=$pairs[id]";
    // Your database code here ...
    }

    function delete(
$id,$table) { // method for deleting record from a table
    
$SQL="DELETE FROM $table WHERE id=$id";
    
$db->query($SQL);
    // Your database code here ...
    }
}

?>


Usage Example


<html>
<head>
<style>
.titlestyle {
    color : #FF0010;
    font-family : Arial, Helvetica, sans-serif;
    font-size:12pt;
    text-decoration : none;
    font-weight:bold;
}

.textstyle {
    color : #FF0000;
    font-family : Arial, Helvetica, sans-serif;
    font-size:8pt;
    text-decoration : none;
}


.formstyle {
    color : #0000FF;
    font-family : Arial, Helvetica, sans-serif;
    font-size:8pt;
}

</style>
</head>
<body>

<span class=textstyle>text</span><br>
<span class=formstyle>form</span><br>
<?php
include_once("form.inc");


if (!isset(
$submit)) {


    
// Title of the table: title,title name, alignment (optional)
    
$title=array("title","This is the title","center");

    
// Style for the texts, class name required
    
$textstyle=array("textstyle","textstyle");

    
// Style for the form elements, class name required
    
$formstyle=array("formstyle","formstyle");

    
// Style for the title, class name required
    
$titlestyle=array("titlestyle","titlestyle");

    
$radio=array(1=>"apple",2=>"pear",3=>"watermelon"); // values for radio buttons
    // radio button: type, label, name, values,default value (optional)
    
$fruit=array("radio","Fruits","fruit",$radio,2);

    
// checkbox: type, label, name, checked (if set, it is checked)
    
$check=array("checkbox","Check Me!","check",1);

    
$select=array(1=>"carrot",2=>"beetroot",3=>"salad"); // values for select
    // select: type, Label, name, values, default value (optional)
    
$list=array("select","Vegetables","list",$select,2);

    
// text field: type, label, name, size (optional), default value (optional)
    
$text=array("text","Input","input",50,"default value");


    
// password field: type, label, name, size (optional), default value (optional)
    
$password=array("password","Password","input",50,"default value");

    
// textarea: type, label, name, number of cols (optional), number of rows (optional), default text (optional)
    
$box=array("textarea","Text","text",60,8,"Default text here");

    
// file upload: type, label, name, size (optional) 
    
$file=array("file","File Upload","file",40);

    
// hidden: type,name,value
    // note: id is reserved for id field in the database, which usually a primary key
    
$hidden=array("hidden","id",4);

    
// delete button: type, label for the button, name
    
$delete=array("delete","Delete Button","delete");

    
// submit button: type, label, name
    
$submit=array("submit","OK, Let's Do It!","submit");

    
// name of the array, which will contains the data from the form
    
$name=array("name","myarray");


    
// the main array
    
$input_data=array($titlestyle,$textstyle,$formstyle,$title,$text,$password,$file,$list,$fruit,$check,$box,$delete,$submit,$name,$hidden);
    print(
"Before SUBMIT<br>");

    
$form=new form($input_data);
    
$form->drawForm();
} else {
    
$form=new form();

    print(
"After SUBMIT<br>");
    echo(
"<br><br>");


    if (isset(
$delete)) {
    echo(
"Deleting record... <br>");
    
$form->delete($myarray[id],"database_table"); // record ID, table name
    
} else {
    echo(
"Inserting data from the form....<br>");
    
$form->insert($myarray,"database_table"); // array containing data & table name
    
    
echo("<br><br>");
    echo(
"Updating data from the form...<br>");
    
$form->update($myarray,"database_table");  // array containing data & table name
    
}
}

?>

</body>
</html>


Rate This Script





Search



This Category All Categories