Foros del Web » Programando para Internet » PHP »

Guardar varios input en una tabla en el mismo campo.

Estas en el tema de Guardar varios input en una tabla en el mismo campo. en el foro de PHP en Foros del Web. Saludos, Necesito saber si alguien puede ayudarme con lo siguiente... Yo tengo una tabla llamada THijos con los siguientes campos: Nombre - edad - ocupacion ...
  #1 (permalink)  
Antiguo 01/03/2012, 10:57
Avatar de genaro_belen  
Fecha de Ingreso: diciembre-2010
Ubicación: Santo Domingo, RD
Mensajes: 94
Antigüedad: 13 años, 4 meses
Puntos: 3
Guardar varios input en una tabla en el mismo campo.

Saludos,
Necesito saber si alguien puede ayudarme con lo siguiente...

Yo tengo una tabla llamada THijos con los siguientes campos:

Nombre - edad - ocupacion - domicilio

Yo tengo en un formulario creado en html los siguientes inputs texts.

<input type="text" name="Nombre[]" /> <input type="text" name="edad[]" /> <input type="text" name="ocupacion[]" /> <input type="text" name="domicilio[]" />

Yo tengo esos mismos campos 10 veces... osea que me da la facilidad de agregar 10 hijos... Yo necesito guardar en la tabla THijos los hijos agregados en los inputs.


osea por cada registro llenado, me cree un registro...

Yo estaba haciendo lo siguiente, pero no me funciona...


Código PHP:
Ver original
  1. $sql_insert_hijo = "INSERT INTO `humanos_db`.`thijos` (`id_hijos`, `hj_nombre`, `hj_edad`, `hj_ocupacion`, `hj_domicilio`) VALUES (NULL, '', '', '', '', '');";
  2. mysql_query($sql_insert_hijo);

se que me hace falta un foreach, pero no se como implementarlo para que me grabe solo los que estan vacios ya que cuando le pongo el foreach, aunque el cliente llene 1 campo, me esta guardando los 10 con la informacion vacia, y no necesito eso...


Alguna ayuda?

Gracias
  #2 (permalink)  
Antiguo 01/03/2012, 11:01
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: Guardar varios input en una tabla en el mismo campo.

dentro de tu foreach puedes poner una condicion
foreach(..)
{
if($nombre!="")
{
insert into ...
}
}
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #3 (permalink)  
Antiguo 01/03/2012, 11:03
Avatar de genaro_belen  
Fecha de Ingreso: diciembre-2010
Ubicación: Santo Domingo, RD
Mensajes: 94
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Guardar varios input en una tabla en el mismo campo.

las variables que debo usar dentro del foreach... cuales son?

si pudiera poner un poquito mas largo tu codigo por favor te lo agradeceria mucho..
  #4 (permalink)  
Antiguo 01/03/2012, 11:11
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: Guardar varios input en una tabla en el mismo campo.

suponiendo que tus inputs se llamen nombre1, nombre2 etc..
esto podria servirte

Cita:
foreach($_POST as $nombre_campo => $valor)
{
$rest=$nombre_campo[0].$nombre_campo[1].$nombre_campo[2].$nombre_campo[3].$nombre_campo[4].$nombre_campo[5];
if($rest=="nombre")
{
if($valor!="")
{
$sql="insert into ...."
}
}
}
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #5 (permalink)  
Antiguo 01/03/2012, 11:22
 
Fecha de Ingreso: octubre-2011
Ubicación: Chile
Mensajes: 52
Antigüedad: 12 años, 6 meses
Puntos: 17
Respuesta: Guardar varios input en una tabla en el mismo campo.

foreach($hijos[] as $hijo) {
insert $hijo
}

O bien, podrias transformar los datos a json e insertarlos en 1 solo dato
__________________
No respondo mensajes privados, pregunte por foro como todos los mortales.
  #6 (permalink)  
Antiguo 01/03/2012, 11:30
Avatar de genaro_belen  
Fecha de Ingreso: diciembre-2010
Ubicación: Santo Domingo, RD
Mensajes: 94
Antigüedad: 13 años, 4 meses
Puntos: 3
Respuesta: Guardar varios input en una tabla en el mismo campo.

@EduardoU24 y de donde tu estas sacando el array $hijos[], no creo que eso que plantees me de resultado...

@Pirruman, aun no me sale asi como me planteas...

Mi codigo es este:

Código PHP:
Ver original
  1. foreach($_POST as $nombre_campo => $valor)
  2.                             {
  3.                             $rest = $nombre_campo['nombre'].$nombre_campo['edad'].$nombre_campo['domicilio'].$nombre_campo['ocupacion'];
  4.                            
  5.                             if($rest=="nombre")
  6.                                 {
  7.                                     if($valor!="")
  8.                                         {
  9.                                            
  10.                                             echo $nombre_campo['ocupacion']."<br/>"; //esto es solo para prueba a ver si esta entrando... pero no esta entrando a este bloque...
  11.                                        
  12.                                         }
  13.                                 }
  14.                             }


y el resultado es en blanco por eso pienso que no esta entrando a este bloque...

cual sera mi problema... :(
  #7 (permalink)  
Antiguo 01/03/2012, 11:55
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: Guardar varios input en una tabla en el mismo campo.

bueno es que confundes esta parte

Cita:
$rest=$nombre_campo[0].$nombre_campo[1].$nombre_campo[2].$nombre_campo[3].$nombre_campo[4].$nombre_campo[5];
lo que hago es que extraigo las primera 6 letras de la variable y despues comparo si esa variable es del input nombre y no de otra cosa
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #8 (permalink)  
Antiguo 01/03/2012, 13:14
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: Guardar varios input en una tabla en el mismo campo.

este codigo te puede servir si tus inputs son diez (si usas los nombres del 0 a 9 nombre0,apellido0,edad0,nombre1,apellido1,edad1.et c) o menos de diez (si usas los nombres del 1 al 9 (nombre1,apellido1,edad1,nombre2,apellido2,edad2.e tc)
Cita:
<form name="formularioP" method="post" action="#">
Nombre<input type="text" name="nombre1"/>
Apellido<input type="text" name="apellido1"/>
Edad<input type="text" name="edad1"/>
<br/>
<br/>
Nombre<input type="text" name="nombre2"/>
Apellido<input type="text" name="apellido2"/>
Edad<input type="text" name="edad2"/>
<br/>
<br/>
Nombre<input type="text" name="nombre3"/>
Apellido<input type="text" name="apellido3"/>
Edad<input type="text" name="edad3"/>
<br/>
<br/>
<input type="submit" value="enviar" name="guardar"/>

</form>

<?php
print "<br>";

foreach($_POST as $nombre_campo => $valor)
{
$res = substr($nombre_campo, 0, 3);
if($res=="nom" && $valor=="")
{
$i=1;
}
elseif($res=="nom")
{
$i=0;
}
$numerocampo= substr($nombre_campo, -1);
if($valor !="" &&$i!=1)
{
if($res=="nom"){$datos[$numerocampo]["chrnombre"]=$valor;}
if($res=="ape"){$datos[$numerocampo]["chrapellido"]=$valor;}
if($res=="eda"){$datos[$numerocampo]["chredad"]=$valor;}
}
}
foreach($datos as $nombre_campo2 => $valor2)
{
print "INSERT INTO mitabla (Tnombre,Tapellido,Tedad) VALUES ('".$valor2['chrnombre']."','".$valor2['chrapellido']."','".$valor2['chredad']."',)";
print "<br>";
}
-Esta validado a que al menos el nombre no sea vacio
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”

Etiquetas: formulario, html, input, mysql, registro, sql, tabla
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 02:56.