Foros del Web » Programando para Internet » PHP »

insertar multiples registros

Estas en el tema de insertar multiples registros en el foro de PHP en Foros del Web. hola, tengo una duda bastante básica pero que no logro resolver. Necesito ingregar multiples registros a la vez en una tabla y no se como ...
  #1 (permalink)  
Antiguo 07/12/2009, 06:18
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 18 años, 5 meses
Puntos: 7
insertar multiples registros

hola, tengo una duda bastante básica pero que no logro resolver.

Necesito ingregar multiples registros a la vez en una tabla y no se como poder realizar esa tarea básica.

Se que tengo que enviar los datos desde el form como array y en la pagina que procesa leerlo recorrerlo con un foreach, asi lo hago cuando necesito borrar multiples registros...

Código php:
Ver original
  1. foreach($_POST['id'] as $id){
  2.     // ELIMINAR DE LA BASE DE DATOS
  3.     }

pero eso es cuando tengo por ejemplo los id de cada registros pero lo que ahora deseo hacer es lo siguiente:

este es mi formulario:

nombre - apellido - edad - otro dato
nombre - apellido - edad - otro dato
nombre - apellido - edad - otro dato
nombre - apellido - edad - otro dato
nombre - apellido - edad - otro dato
nombre - apellido - edad - otro dato

no se como tengo que armar el foreach para recorrer todos esos datos y poder insertarlo en la base de datos, (cada linea corresponde a un registro).

Espero alguna ayuda, se que es simple pero aveces la mente se nubla jejeje.

Saludos
  #2 (permalink)  
Antiguo 07/12/2009, 09:08
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años, 6 meses
Puntos: 50
Respuesta: insertar multiples registros

Si armaste bien el formulario (que cada campo tenga un nombre terminado en un par de corchetes de modo que PHP pueda armar el array), lo que debes hacer es recorrer el array de POST (o en todo caso de REQUEST) y obtener el índice, para poder recorrer todos los campos:
Código PHP:
foreach($_POST['nombre'] as $idx=>$nombre)
{
    if(!empty(
$_POST['nombre'][$idx]) && !empty($_POST['apellido'][$idx]) && !empty($_POST['edad'][$idx]) && !empty($_POST['otro_dato'][$idx]))
    {
        
$sql="INSERT INTO tuTabla (nombre, apellido, edad, otro_dato) VALUES ('".$_POST['nombre'][$idx]."', '".$_POST['apellido'][$idx]."', ".$_POST['edad'][$idx].", '".$_POST['otro_dato'][$idx]."');";
        if(
mysql_query($sql))
        {
            echo 
"ok $idx";
        }
        else
        {
            echo 
"error $idx";
        }
    }
    else
    {
        echo 
"error: para el elemento $idx";
    }

En teoría eso debería funcionar (supongo que PHP genera siempre índices numéricos comenzados en cero para los campos con nombre terminado en corchetes, y que todos irán siendo "correlativos" de modo que coincidan siempre), aunque para más seguridad, quizás antes de hacer eso haría un var_dump de prueba del array POST. El tipo de campos al que me refiero es algo así:
Código HTML:
<input type="text" name="apellido[]" /> 
Podrías ir añadiendo más "familias" de campos a tu formulario con javascript de modo que el usuario dé de alta tantos registros como tenga ganas. ¡Suerte!
  #3 (permalink)  
Antiguo 05/02/2010, 12:59
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: insertar multiples registros

Esta consulta la hice hace ya casi 2 meses y no habia tenido tiempo de agradecer pero mas vale tarde que nunca.
El código me funcionó a la perfección.

Gracias.
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 22:42.