Ahí va un ejemplo por si quieres guiarte
Guardamos los campos de la tabla en un array que necesitaremos en el php del formulario y en el de meter los datos
Código PHP:
$campos = array(
'id' => array(
'longitud' => 8,
'tipo' => 'int'
),
'nombre' => array(
'longitud' => 100,
'tipo' => 'varchar'
)
);
Generamos el formulario con los campos
Código PHP:
function generarFormulario($campos)
{
$formulario = '<form method="post" action="z2.php">';
foreach($campos AS $clave => $valor)
{
switch($valor['tipo'])
{
case 'int':
case 'varchar':
$formulario .= $clave . ' <input type="text" name="' . $clave . '" maxlength="' . $valor['longitud'] . '" /><br />';
break;
default:
die("Falta tipo de campo para generar formulario.")
}
}
$formulario .= '<input type="submit" value="Enviar" /></form>';
return $formulario;
}
Comprobamos los datos del formulario
Código PHP:
function comprobarDatos($campos)
{
$datos = array();
foreach($campos AS $clave => $valor)
{
$dato = $_POST[$clave];
if(
empty($dato) OR
strlen($dato) > $valor['longitud']
)
{
return false;
}
switch($valor['tipo'])
{
case 'int':
$dato = intval($dato);
break;
case 'varchar':
$dato = strval($dato);
break;
default:
die("Falta tipo de dato para comprobar");
}
if(empty($dato))
{
return false;
}
$datos[$clave] = $dato;
}
return $datos;
}
Generamos la consulta de la bd
Código PHP:
function consultaDb($campos,$datos)
{
$nombres = array();
foreach($campos AS $clave => $valor)
{
$nombres[] = $clave;
$valores[] = "'" . stripslashes($datos[$clave]) . "'";
}
$consulta = '
INSERT INTO tabla(
' . implode(',', $nombres) . '
)VALUES(
' . implode(',', $valores) . '
)
';
return $consulta;
}
Con todo esto sólo necesitamos 3 páginas: la del array con los datos de los campos de la tabla y las funciones (todo lo de arriba), la del formulario y la que comprueba e inserta los datos. La primera es todo lo de arriba
formulario.php
Código PHP:
require("datos.php");
echo generarFormulario($campos);
comprobar.php
Código PHP:
require("datos.php");
$datos = comprobarDatos($campos);
$consulta = consultaDb($campos, $datos);
// Y ya tenemos la consulta de insertar