Foros del Web » Programando para Internet » PHP »

insertar un formulario en una tabla

Estas en el tema de insertar un formulario en una tabla en el foro de PHP en Foros del Web. me gustaria saber si para insertar todos los campos de un formulario en una tabla tengo que ir metiendolos uno por uno: $query="INSERT into tabla(nombre,email,fecha)values('$nombre','$email' ...
  #1 (permalink)  
Antiguo 05/12/2003, 05:00
 
Fecha de Ingreso: diciembre-2003
Mensajes: 32
Antigüedad: 14 años
Puntos: 0
insertar un formulario en una tabla

me gustaria saber si para insertar todos los campos de un formulario en una tabla tengo que ir metiendolos uno por uno:

$query="INSERT into tabla(nombre,email,fecha)values('$nombre','$email' ,now() )";

o existe alguna forma más sencilla de hacerlo, como al enviar un formulario por email usando un foreach:

foreach($_POST as $nombre_campo => $valor){
$cuerpo .= "\$" . $nombre_campo . "='" . $valor . "';\n";
eval($cuerpo);
}

¿se podria modificar de alguna forma para insertar los datos en una tabla?
  #2 (permalink)  
Antiguo 05/12/2003, 05:48
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

Si nombras los campos del formulario HTML como los campos de la tabla, podrias hacer un foreach parecido:
Código PHP:
$campos=array();
$valores=array();
$no_campos=array('enviar'); // array con los nombres de los 
// campos del formulario que no corresponden con un campo de
// la tabla, como el boton de enviar
foreach($_POST as $nombre_campo => $valor) {
  if (!
in_array($nombre_campo,$no_campos)) {
    
$campos[]=$nombre_campo;
    
$valores[]="'".$valor."'";  // le ponemos las comillas
  
}
}
$campos_sql=implode(',',$campos);
$valores_sql=implode(',',$valores);
$sql="INSERT INTO tabla ($campos_sql) VALUES ($valores_sql)";
echo 
$sql
Mas o menos. Lo he sacado directamente de mi cabeza, todavia no lo he probado. Asi que puede fallar por todos lados.

Pero la idea seria esa: crear la cadena SQL en el bucle.

Suerte.

PD: Por supuesto, si hay otros campos de la BD que no vienen del formulario (como una fecha que tome el valor de NOW()), debes meterlo en la $sql a "mano".
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:54.