Foros del Web » Programando para Internet » PHP »

Recibir valores de un Array por POST

Estas en el tema de Recibir valores de un Array por POST en el foro de PHP en Foros del Web. Buen día chicos Les quiero comentar mi nuevo problemita. Tengo un formulario (grandecito) para registrar a un empleado, toda su informacion. Llegue a la seccion ...
  #1 (permalink)  
Antiguo 16/02/2017, 11:36
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Recibir valores de un Array por POST

Buen día chicos

Les quiero comentar mi nuevo problemita.

Tengo un formulario (grandecito) para registrar a un empleado, toda su informacion. Llegue a la seccion de informacion familiar, donde generalmente se colocan:
Nombre
Parentesco
Fecha Nacimiento
Dirección
Teléfono ...
de un numero N de familiares. La forma facil es limitarme y decir, ok voy a poner ese mismo "combo de informacion" 3 veces para aceptar nada mas 3 familiares.

Pero que pasa si la empresa quiere colocar mas ?? y ojo, eso puede ser en cualquier parte, familiares, cursos, educación en fin... entonces pensé en clonar con JS mi "combo de informacion" y ya lo tengo, obviamente a cada name de mis inputs los pase a array (name="nombre_familiar[]") El problema lo tengo al tratar esa info en mi archivo php

Primero recibo mis datos de todos los arrays que llene en el form
Código PHP:
Ver original
  1. // La f al final de las variables y nombres hace referencia a familiar
  2. $nombref = $mysqli->real_escape_string($_POST['nombref[]']);
  3. $parentesco = $mysqli->real_escape_string($_POST['parentesco[]']);
  4. $nacimientof = $mysqli->real_escape_string($_POST['nacimientof[]']);
  5. $direccionf = $mysqli->real_escape_string($_POST['direccionf[]']);
  6. $telefonof = $mysqli->real_escape_string($_POST['telefonof[]']);

ok si hago un echo de esos campos no me sale nada

Código PHP:
Ver original
  1. echo 'Nombre Familiar: <b>'.$nombref.'</b><br>';
  2. echo 'Parentesco: <b>'.$parentesco.'</b><br>';
  3. echo 'Nacimiento Faminiar: <b>'.$nacimientof.'</b><br>';
  4. echo 'Direccion Familiar: <b>'.$direccionf.'</b><br>';
  5. echo 'Telefono Familiar: <b>'.$telefonof.'</b><br>';

Si hago un print_r($_POST); veo que los array van bien hasta el archivo

Cita:
[nombref] => Array ( [0] => NOMBRE FAMILIAR 1 [1] => NOMBRE FAMILIAR 2 [2] => NOMBRE FAMILIAR 3 ) [parentesco] => Array ( [0] => PADRE [1] => MADRE [2] => HIJO/A ) [nacimientof] => Array ( [0] => 2017-12-31 [1] => 2002-05-22 [2] => 1992-04-25 ) [direccionf] => Array ( [0] => DIRECCION FAMILIAR 1 [1] => DIRECCION FAMILIAR 2 [2] => DIRECCION FAMILIAR 3 ) [telefonof] => Array ( [0] => 1111-1111 [1] => 2222-2222 [2] => 3333-3333 )
Si hago un foreach para un campo puedo ver de manera correcta la info
Código PHP:
Ver original
  1. foreach($_POST['nombref'] as $nf){
  2.         echo 'Nombre Familiar: <b>'.$nf.'</b><br>';
  3.     }

Resultado del foreach
Cita:
Nombre Familiar: NOMBRE FAMILIAR 1
Nombre Familiar: NOMBRE FAMILIAR 2
Nombre Familiar: NOMBRE FAMILIAR 3
Pero no puedo seguir, ya busque muchas formas de meter en un solo foreach todos los campos para que me imprima toda la info de cada familiar, todo mi "combo de informacion". intente anidar foreachs pero eso me repite los datos por cada foreach que hago

Tienen una forma de tratar esa informacion ?? yo lo quiero insertar a una base de datos, (ya modificarla/editarla veo luego que hago)

O tienen una forma mejor de tratar ese tipo de problemas ?? como les digo no quiero tener que limitar mi sistema a N numero de familiares.

Estaré de lo mas agradecida con ustedes

PD: Tal vez se podria hacer que al clonar el "combo de informacion" al ID de cada input se le fuera agregando un numero consecutivo ?? (name="nombre_familiar1 , name="nombre_familiar2 , name="nombre_familiar3) ??? y ver luego como tratarlo en el archivo php que lo recibe.
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Última edición por KATHYU; 16/02/2017 a las 12:01 Razón: Aumentar ID's con JS
  #2 (permalink)  
Antiguo 16/02/2017, 12:40
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Recibir valores de un Array por POST

Todos los campos son array y tendrán el mismo índice.

Código PHP:
Ver original
  1. foreach($_POST['nombre_familiar'] as $index => $nf) {
  2.     echo 'Nombre familiar: ' . $nf;
  3.     echo '<br>Otro campo: ' . $_POST['otro_campo'][$index];
  4.     echo '<br>Campo X: ' . $_POST['campo_x'][$index];
  5. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 16/02/2017, 14:36
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Recibir valores de un Array por POST

Cita:
Iniciado por Triby Ver Mensaje
Todos los campos son array y tendrán el mismo índice.

Código PHP:
Ver original
  1. foreach($_POST['nombre_familiar'] as $index => $nf) {
  2.     echo 'Nombre familiar: ' . $nf;
  3.     echo '<br>Otro campo: ' . $_POST['otro_campo'][$index];
  4.     echo '<br>Campo X: ' . $_POST['campo_x'][$index];
  5. }
Muy amable Triby, ya con eso puedo hacer el insert según creo.

Yo tengo por ahí un código para recibir todo el $_POST sin necesidad de declarar cada variable, básicamente es el mismo principio

Código PHP:
Ver original
  1. foreach($_POST as $nombre_campo => $valor){
  2.    $asignacion = "\$" . $nombre_campo . "='" . $valor . "';";
  3.    eval($asignacion);
  4.    echo $asignacion.'<br>';
  5. }
  6. echo $nombre_campo_1.'<br>';
  7. echo $nombre_campo_2.'<br>';
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #4 (permalink)  
Antiguo 17/02/2017, 12:09
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Recibir valores de un Array por POST

Hola amiga,


También sugiero la respuesta que te proporcionó Triby, puedes recorrer en un foreach sobre cualquier campo de tus arreglos, ya que, en teoría, deberia haber el mismo número de registros para tus arreglos Nombre,Parentesco,FechaNacimiento, etc...

Tu idea también es válida, ( alguna vez la aplique :p )
La forma en que la aplique fue, (para tu caso), mostrando un campo para que se ingresará el Numero de familiares que se querian registrar, y ya mediante ese numero se creaban los "indices" como comentas:
nombre1, nombre2,..., nombren
parentesco1,parentesco2... parentescon
Ya en el php , recibes ese número ingresado y haces la iteracion

Código PHP:
Ver original
  1. $numeroFamiliares = $_POST['numero'];
  2. for($i=1;$i<=$numeroFamiliares;$i++){
  3.    echo "Familiar $i: ".$_POST['nombre'.$i];
  4.    echo "Parentesco $i: ".$_POST['parentesco'.$i];
  5. }

Es la idea...
Pero bueno, como comenté, creo es más viable la opción de Triby
Solo quería comentar tu idea para que no quedara "volando" :p
Saludos!
  #5 (permalink)  
Antiguo 17/02/2017, 15:56
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Respuesta: Recibir valores de un Array por POST

Use la solución de triby, y en efecto hasta la modificación de datos hice ya, esto me va a servir como no tienen idea
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Etiquetas: fecha, formulario, mysql, post, recibir, variable
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 04:26.