Buenas aqui les dejo una contribucion es una clase que hice para generar formularios en php por ahora solo genera el formulario la validacion tendrias que agregarla desde javascript pero funciona bastante bien. pronto la mejorare.
class_form.php
Código PHP:
Ver original<?php
/******************************************************************************
* html_form *
* *
* Version: 1.1 *
* Date: 2011-10-21 *
* Author: Jose Quintero *
*******************************************************************************/
class html_form{
var $name;
var $action;
var $method;
var $enctype;
var $onsubmit;
var $form;
var $input;
var $type;
var $label;
var $value;
var $oForm;
var $cForm;
var $radio;
var $checkbox;
var $select;
var $texto;
var $fieldset;
var $legend;
var $widht;
function openform($name='form1', $method='post', $action='#', $enctype='', $onsubmit=''){
$this->action = $action;
$this->method = $method;
$this->name = $name;
$this->enctype = $enctype;
$this->onsubmit = $onsubmit;
$this->oform = "<form name='".$this->name."' action='".$this->action."' method='".$this->method."' enctype='".$this->enctype."' onsubmit='".$this->onsubmit."'>";
return $this->oform;
}
function addInput($type, $name, $label='',$value=''){
$this->type = $type;
$this->name = $name;
$this->label= $label;
$this->value = $value;
if($this->type == "submit" || $this->type=="reset"){
$this->input = "<label></label>";
}
else{
$this->input= "<label>".$this->label."</label><br>";
}
$this->input .= "<input type='".$this->type."' name='".$this->name."' value='".$this->value."' id='".$this->name."'/>";
return $this->input;
}
function addcheckradio($type,$name,$values,$selected=0){
$this->value = $values;
$this->selected = $selected;
$this->type = $type;
if ($this->type=="checkbox"){
$this->name = $name."[]";
}
else{
$this->name = $name;
}
$c=1;
while(list($val,$l)=each($this->value)){ if ($c==$this->selected){
$this->check = " checked/>";
}
else{
$this->check = " />";
}
$this->radio .= "<label>".$this->value[$val]."</label><input type='".$this->type."' name='".$this->name."' value='".$val."'".$this->check."<br>";
$c++;
}
return $this->radio;
}
function addTextarea($name, $cols=20, $rows=5, $label='',$value=''){
$this->name=$name;
$this->row= $rows;
$this->col= $cols;
$this->value = $value;
$this->label = $label;
$this->textarea = "<label>".$this->label."</label><br><textarea name='".$this->name."' cols='".$this->col."' rows='".$this->row."'>".$this->value."</textarea>";
return $this->textarea;
}
function addSelect($name, $values, $label='', $multiple=0){
$this->values=$values;
$this->name=$name;
$this->label=$label;
if($multiple==1){
$this->select = "<label>".$this->label."</label><br><select name='".$this->name."[]' multiple='multiple'>";
}
else{
$this->select = "<label>".$this->label."</label><br><select name='".$this->name."'>";
}
while(list($values, $text)=each($this->values)) {
$this->select .= "<option value='".$values."'>".$this->values[$values]."</option>";
}
$this->select .= "</select>";
return $this->select;
}
function openfieldset($texto,$width='300'){
$this->legend=$texto;
$this->width=$width;
$this->fieldset="<fieldset style='width:".$this->width."px;'><legend>".$this->legend."</legend>";
return $this->fieldset;
}
function closefieldset(){
$this->fieldset="</fieldset>";
return $this->fieldset;
}
function closeform(){
$this->cform = "</form>";
return $this->cform;
}
}
?>
aqui te muestro un ejemplo explicado de como se usa.
Código PHP:
Ver original<?php
/*incluimos el archivo de la clase y creamos la instancia para generar
el formulario*/
include("class_form.php");
$frm = new html_form();
/*
Iniciar el formulario
openform(nombre, metodo, accion, enctype, onsubmit)
nombre = nombre del formulario
metodo = get o post (por defecto es post)
accion = el script que se ejecutara cuando se envie el formulario
enctype = determina como sera codificada la data(application/x-www-form-urlencoded,
multipart/form-data,
text/plain)
onsubmit = ejecutara el script de javascript para validar el formulario.
*/
$formulario = $frm->openform("form1","post","procesa_datos.php","multipart/form-data");
/*openfieldset(leyenda, tamaños)
inicia el fieldset
leyenda = texto que aparecera
tamaño = ancho del fieldset
*/
$formulario .= $frm->openfieldset("Cajas de Texto",300);
/*
añadir input (texto, password, file, submit, reset)
addInput(tipo, nombre, etiqueta, valor)
tipo = puede ser text, password, submit, reset
nombre = nombre de la caja de texto sera usado tambien como id
etiqueta = etiqueta a mostrar en los (en los submit y reset no se usa)
valor = si mostrara algun valor por defecto(en el caso de submit y reset
es el texto que mostrara el
boton)
*/
$formulario .= $frm->addInput("text","nombre","Nombres: ")."<br>";
$formulario .= $frm->addInput("text","apellido","Apellidos: ")."<br>";
$formulario .= $frm->addInput("password","password","Contraseña: ")."<br>";
$formulario .= $frm->addInput("hidden","opcion","",1);
$formulario .= $frm->addInput("file","foto","Foto: ");
/*
closefieldset
cierra el fieldset
*/
$formulario .= $frm->closefieldset();
/*
añadir radio boton
addcheckradio(tipo,nombre, valores, seleccionado)
tipo = puede ser checkbox o radio.
nombre = nombre del boton
valores = array(valor1=>etiqueta1,valor2=>etiqueta2);
el array puede ser numerico o de texto.
seleccionado = cual sera seleccionado por defecto ninguno esta marcado
*/
$formulario .= $frm->openfieldset("Radio Botones",300);
$values = array("M"=>"Masculino","F"=>"Femenino"); $formulario .= $frm->addcheckradio("radio","sexo",$values,1);
$formulario .= $frm->closefieldset();
$formulario .= $frm->openfieldset("Radio Botones",300);
$values = array(5=>"Excelente",4=>"Bueno",3=>"Regular",2=>"Malo",1=>"Deficiente"); $formulario .= $frm->addcheckradio("radio","encuesta",$values,1);
$formulario .= $frm->closefieldset();
$values = array(1=>"Basket",2=>"Futbol",3=>"Tenis",4=>"Beisbol",5=>"Golf", 6=>"Atletismo",7=>"Musica",8=>"Internet");
$formulario .= $frm->openfieldset("Checkbox",300);
$formulario .= $frm->addcheckradio("checkbox","hobbies",$values,1);
$formulario .= $frm->closefieldset();
/*
añadir area de textp
addTextarea(nombre,columnas, filas, etiqueta,valor)
nombre = nombre de la caja de textp
columnas y filas = tamaño de la caja de texto(por defecto es 20 cols, 5 rows
Etiqueta = valor que mostrara el label de la caja de texto
valor = si el texto mostrara algo por defecto
*/
$formulario .= $frm->openfieldset("Area de Texto",300);
$formulario .= $frm->addTextarea("direccion",20,5,"Direccion")."<br>";
$formulario .= $frm->closefieldset();
/*
añadir select option
addSelect(nombre,valores, etiqueta,multiple)
nombre = nombre del select
valores = array tipo (valor1=>texto1,valor2=>texto2)
Etiqueta = valor que mostrara el label del select
multiple = 1 para activar multiple, por defecto es desactivado.
*/
$formulario .= $frm->openfieldset("Select Options",300);
$valores=array("ven"=>"Venezuela","col"=>"Colombia"); $formulario .= $frm->addSelect("paises",$valores, "Paises: ")."<br>";
$valores=array(1=>"Amarillo",2=>"Azul",3=>"Rojo"); $formulario .= $frm->addSelect("colores",$valores, "Colores: ",1);
$formulario .= $frm->closefieldset();
$formulario .= $frm->addInput("submit","enviar","","Enviar");
$formulario .= $frm->addInput("reset","reset","","Reset");
/*
cierra el formulario
closeform()
*/
$formulario .= $frm->closeform();
echo $formulario;
?>
y este es un ejemplo de que recoge bien los datos enviados
Código PHP:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<body>
<?php
echo "Nombre: ".$_POST[nombre]."<br>";
echo "Apellido: ".$_POST[apellido]."<br>";
echo "Password: ".md5($_POST[password
])."<br>"; echo "Opcion: ".$_POST[opcion]."<br>";
echo "Sexo: ".$_POST[sexo]."<br>";
echo "Opinion del Sitio: ".$_POST[encuesta]."<br>";
$hobbie = $_POST[hobbies];
foreach($hobbie as $val){
echo "Hobbie: ".$val."<br>";
}
echo "Direccion: ".$_POST[direccion]."<br>";
echo "Paises: ".$_POST[paises]."<br>";
$colores= $_POST[colores];
foreach($colores as $val){
echo "Colores: ".$val."<br>";
}
?>
</body>
</html>
cualquier cosa me escriben por aqui o por el twitter @pctec21 gracias