Forms
|
|
|
|
<?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==1) printf("<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
|
|
|
|