Foros del Web » Programando para Internet » PHP »

insertar multiples registros dinamicos

Estas en el tema de insertar multiples registros dinamicos en el foro de PHP en Foros del Web. Bueno.. primero que toda buenas noches... y desde ya gracias por la ayuda que me puedan brindar.. El problema que me tiene los pelos de ...
  #1 (permalink)  
Antiguo 21/12/2009, 11:07
 
Fecha de Ingreso: agosto-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
insertar multiples registros dinamicos

Bueno.. primero que toda buenas noches... y desde ya gracias por la ayuda que me puedan brindar..

El problema que me tiene los pelos de punta es el siguiente;

Tengo un formulario que me genera multiples filas con multiples campos de texto.. esto lo hago mediante un while en PHP de la siguiente manera:

Código PHP:
while($inser_notas mysql_fetch_array($resulte)){ 
echo 
"<tr> 
<td class='celda-abajo'><div align='center' style='width:40'>"
.$inser_notas['codigo_lista']."</div></td> 
<td class='celda-derecha-abajo'><div align='left' style='width:359'><span class='letra-nombres'>  "
.$inser_notas['nombre']."</span> 
<input type='hidden' name='xid' value="
.$inser_notas['id'].
</div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:80'><input type='text' name='xaus' size='4'></div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:65'><input type='text' name='xp1' size='4'></div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:65'><input type='text' name='xp2' size='4'></div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:65'><input type='text' name='xacum' size='4'></div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:55'>-</div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:55'><input type='text' name='xn1' size='4'></div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:55'><input type='text' name='xn2' size='4'></div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:55'><input type='text' name='xn3' size='4'></div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:55'><input type='text' name='xn4' size='4'></div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:55'>-</div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:93'><input type='text' name='xnact' size='4'></div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:60' class='letra-pequena'>-</div></td> 
<td class='celda-derecha-abajo'><div align='center' style='width:50'>-</div></td> 
</tr>"

}}} 
Ahora bien.. lo que trato de hacer es insertar todos los campos en mi tabla correspondiente y todo va bien. el unico problema es que se me inserta un solo registro correspondiente a la primera fila de la lista:

se puede insertar todos los registros a la vez???

la consulta la tengo de la siguiente manera:

Código PHP:
$sqlcrear "INSERT INTO estudiante_nota(id,id_estudiante,id_grado,parcial1,parcial2,acum,nota1,nota2,nota3,nota4,nact,id_asignatura,periodo,aus)"
$sqlcrear $sqlcrear." VALUES('NULL', $_POST[xid], $grado, $_POST[xp1], $_POST[xp2], $_POST[xacum], $_POST[xn1], $_POST[xn2], $_POST[xn3], $_POST[xn4], $_POST[xnact], $asig, $periodo, $_POST[xaus])"
$result ejecutar_sql($sqlcrear); 
  #2 (permalink)  
Antiguo 21/12/2009, 11:17
 
Fecha de Ingreso: febrero-2006
Mensajes: 858
Antigüedad: 18 años, 2 meses
Puntos: 4
Respuesta: insertar multiples registros dinamicos

por que no utilizas un foreach para recorrer todos los datos?
__________________
*La amistad se multiplica cuando se divide*
  #3 (permalink)  
Antiguo 21/12/2009, 11:25
 
Fecha de Ingreso: agosto-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: insertar multiples registros dinamicos

si.. pero entonces me tocaria enviar los datos como arrays???..

tu me podrias indicar como se hace?????

perdon la molestia y gracias por tu tiempo.
  #4 (permalink)  
Antiguo 21/12/2009, 12:09
 
Fecha de Ingreso: febrero-2006
Mensajes: 858
Antigüedad: 18 años, 2 meses
Puntos: 4
Respuesta: insertar multiples registros dinamicos

1. estas definiendo el formulario como metodo POST ?
2. Donde defines $grado y $asig ?

saludos
__________________
*La amistad se multiplica cuando se divide*
  #5 (permalink)  
Antiguo 21/12/2009, 12:26
 
Fecha de Ingreso: agosto-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: insertar multiples registros dinamicos

Si, todo el envio se hace por POST..

son 3 variables que traigo desde otro formulario.. asig, grado y periodo.

en la base de datos inserto estas 3 variables mas todos los inputs generados

esas tres variables las envio en campos ocultos... al inicio del formulario asi:

Código HTML:
<input type="hidden" name="periodo" id = "periodo" value= [PHP]<?php echo $_POST['xperiodo']?>[/PHP]>
<input type="hidden" name="grado" id = "grado" value= [PHP]<?php echo  $_POST['xgrado']?>[/PHP]>
<input type='hidden' name="asig" id = "asig" value=[PHP]<?php echo $_POST['xasignatura']?>[/PHP]>
intente poner el nombre de los inputs con [] al final y cuando imprimo la consulta del inser into me sale lo siguiente;

INSERT INTO estudiante_nota(id,id_estudiante,id_grado,parcial1 ,parcial2,acum,nota1,nota2,nota3,nota4,nact,id_asi gnatura,periodo,aus) VALUES('NULL', Array, 29, Array, Array, Array, Array, Array, Array, Array, Array, 18, 1, Array)

de nuevo gracias!!
  #6 (permalink)  
Antiguo 21/12/2009, 12:31
 
Fecha de Ingreso: febrero-2006
Mensajes: 858
Antigüedad: 18 años, 2 meses
Puntos: 4
Respuesta: insertar multiples registros dinamicos

Si, mira, antes que nada una observacion

Compon esta linea:
<input type='hidden' name='xid' value=".$inser_notas['id'].

corrigela:
<input type='hidden' name='xid' value=".$inser_notas['id']">"
__________________
*La amistad se multiplica cuando se divide*
  #7 (permalink)  
Antiguo 21/12/2009, 12:35
 
Fecha de Ingreso: febrero-2006
Mensajes: 858
Antigüedad: 18 años, 2 meses
Puntos: 4
Respuesta: insertar multiples registros dinamicos

y la funcion ejecutar_sql() donde la defines?
__________________
*La amistad se multiplica cuando se divide*
  #8 (permalink)  
Antiguo 21/12/2009, 12:42
 
Fecha de Ingreso: agosto-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: insertar multiples registros dinamicos

ok gracias.. por la observacion..

la funcion la defino en un archivo o libreria que tengo para hacer la conexion a la base de datos

Código PHP:
function ejecutar_sql($sql)
{
//echo $sql; //Imprime el sql que se;

// Parametros de configuración de  la conexion**********************

$servidor="localhost";
$usuario="usuario";
$clave="";
$nombreDB="nombre";

//*******************************************************************
    
$con conectar($servidor,$usuario,$clave,$nombreDB);
         return 
mysql_query($sql,$con);

ese archivo lo llamo con un require...
  #9 (permalink)  
Antiguo 21/12/2009, 13:02
 
Fecha de Ingreso: febrero-2006
Mensajes: 858
Antigüedad: 18 años, 2 meses
Puntos: 4
Respuesta: insertar multiples registros dinamicos

mmm no veo porque no te lo inserte.
nada te devuelve algun error?
__________________
*La amistad se multiplica cuando se divide*
  #10 (permalink)  
Antiguo 21/12/2009, 13:15
 
Fecha de Ingreso: agosto-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: insertar multiples registros dinamicos

solo me inserta un solo registro... el primero y los demas los ignora y es porque los inputs son dinámicos..

mira amigo llevo toda la mañana en esto jeje y pues ya creo que la cosa va por aca.. pero no se COMO COGER CON EL FOREACH CADA ARRAY PORQUE ACA SOLO ESTOY COGUIENDO EL PRIMER INPUT. MIRA:

EL FORMULARIO ES ESTE:

Código PHP:
while($inser_notas mysql_fetch_array($resulte)){
echo 
"<tr>
<td class='celda-abajo'><div align='center' style='width:40'>"
.$inser_notas['codigo_lista']."</div></td>
<td class='celda-derecha-abajo'><div align='left' style='width:359'><span class='letra-nombres'>&nbsp;&nbsp;"
.$inser_notas['nombre']."</span>
<input type='hidden' name='xid[]' value="
.$inser_notas['id'].">
</div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:80'><input type='text' name='xaus[]' size='4'></div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:65'><input type='text' name='xp1[]' size='4'></div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:65'><input type='text' name='xp2[]' size='4'></div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:65'><input type='text' name='xacum[]' size='4'></div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:55'>-</div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:55'><input type='text' name='xn1[]' size='4'></div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:55'><input type='text' name='xn2[]' size='4'></div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:55'><input type='text' name='xn3[]' size='4'></div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:55'><input type='text' name='xn4[]' size='4'></div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:55'>-</div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:93'><input type='text' name='xnact[]' size='4'></div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:60' class='letra-pequena'>-</div></td>
<td class='celda-derecha-abajo'><div align='center' style='width:50'>-</div></td>
</tr>"

Y EL INSER INTO ES ESTE:

Código PHP:
foreach ($_POST['xid'] as $xid){ 
$sqlcrear "INSERT INTO estudiante_nota(id,id_estudiante,id_grado,parcial1,parcial2,acum,nota1,nota2,nota3,nota4,nact,id_asignatura,periodo,aus)";
$sqlcrear  $sqlcrear." VALUES('NULL', $xid, $_POST[grado], $xp1, $_POST[xp2], $_POST[xacum], $_POST[xn1], $_POST[xn2], $_POST[xn3], $_POST[xn4], $_POST[xnact], $_POST[asig], $_POST[periodo], $_POST[xaus])";
    echo 
$sqlcrear;
    
$result ejecutar_sql($sqlcrear); 
Y SI IMPRIMO LA VARIABLE $SQLCREAR entonces me devuelve esto

INSERT INTO estudiante_nota(id,id_estudiante,id_grado,parcial1 ,parcial2,acum,nota1,nota2,nota3,nota4,nact,id_asi gnatura,periodo,aus) VALUES('NULL', 739, 29, , Array, Array, Array, Array, Array, Array, Array, 18, 1, Array)
Notice: Undefined variable: xp1 in C:\Archivos de programa\EasyPHP\www\academico\enviar-notas.php on line 34
INSERT INTO estudiante_nota(id,id_estudiante,id_grado,parcial1 ,parcial2,acum,nota1,nota2,nota3,nota4,nact,id_asi gnatura,periodo,aus) VALUES('NULL', 740, 29, , Array, Array, Array, Array, Array, Array, Array, 18, 1, Array)

como le hago para coger con el foreach todos los array
  #11 (permalink)  
Antiguo 21/12/2009, 13:23
 
Fecha de Ingreso: febrero-2006
Mensajes: 858
Antigüedad: 18 años, 2 meses
Puntos: 4
Respuesta: insertar multiples registros dinamicos

pero por que pones [] prueba quitandoselos a todos y solo dejando el nombre
__________________
*La amistad se multiplica cuando se divide*
  #12 (permalink)  
Antiguo 21/12/2009, 13:30
 
Fecha de Ingreso: agosto-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: insertar multiples registros dinamicos

no porque estonces no cgeria los multiples valores si no solo me cogeria el nombre del primer campo y los demas los ignoraria
  #13 (permalink)  
Antiguo 22/12/2009, 08:36
 
Fecha de Ingreso: agosto-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: insertar multiples registros dinamicos

bueno hice mejor un for, tiene como mas lógica pero...

no entiendo porque me sale la palabra esa array en la impresion..

Ojala alguien me pueda echar una manito a esto

Código PHP:
for($i=0;$i<$_POST['contador'];$i++){
$sqlcrear "INSERT INTO estudiante_nota(id,id_estudiante,id_grado,parcial1,parcial2,acum,nota1,nota2,nota3,nota4,nact,id_asignatura,periodo,aus)";
$sqlcrear  $sqlcrear." VALUES('NULL', $_POST[xid][$i], $_POST[grado], $_POST[xp1][$i], $_POST[xp2][$i], $_POST[xacum][$i], $_POST[xn1][$i], $_POST[xn2][$i], $_POST[xn3][$i], $_POST[xn4][$i], $_POST[xnact][$i], $_POST[asig], $_POST[periodo], $_POST[xaus][$i])"
y la impresion sale asi:

INSERT INTO estudiante_nota(id,id_estudiante,id_grado,parcial1 ,parcial2,acum,nota1,nota2,nota3,nota4,nact,id_asi gnatura,periodo,aus) VALUES('NULL', 'Array[0]', 29, Array[0], Array[0], Array[0], Array[0], Array[0], Array[0], Array[0], Array[0], 18, 1, Array[0])INSERT INTO estudiante_nota(id,id_estudiante,id_grado,parcial1 ,parcial2,acum,nota1,nota2,nota3,nota4,nact,id_asi gnatura,periodo,aus) VALUES('NULL', 'Array[1]', 29, Array[1], Array[1], Array[1], Array[1], Array[1], Array[1], Array[1], Array[1], 18, 1, Array[1])
  #14 (permalink)  
Antiguo 22/12/2009, 12:51
 
Fecha de Ingreso: agosto-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: insertar multiples registros dinamicos

POR FIN!!!

bueno amigo... lo logre despues de tanto pensar...y publico la solucion por si alguno algun dia pasa por lo que pase jejejeje...

al final deje el mismo for pero con este cambio.

Código PHP:
for($i=0;$i<$_POST['contador'];$i++){
$xid=$_POST['xid'][$i];
$xp1=$_POST['xp1'][$i];
$xp2=$_POST['xp2'][$i];
$xacum=$_POST['xacum'][$i];
$xn1=$_POST['xn1'][$i];
$xn2=$_POST['xn2'][$i];
$xn3=$_POST['xn3'][$i];
$xn4=$_POST['xn4'][$i];
$xnact=$_POST['xnact'][$i];
$xaus=$_POST['xaus'][$i];
$sqlcrear "INSERT INTO estudiante_nota(id,id_estudiante,id_grado,parcial1,parcial2,acum,nota1,nota2,nota3,nota4,nact,id_asignatura,periodo,aus)";
$sqlcrear  $sqlcrear." VALUES('NULL', $xid, $_POST[grado], $xp1, $xp2, $xacum, $xn1, $xn2, $xn3, $xn4, $xnact, $_POST[asig], $_POST[periodo], $xaus)"
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 12:24.