PHP - Inseratr multiples registros

   
Vista:

Inseratr multiples registros

Publicado por Carlos Andres (11 intervenciones) el 21/12/2009 05:38:23
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:

[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>";
}}}
[/PHP]

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:

[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);
[/PHP]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Inseratr multiples registros

Publicado por Diego Romero (1450 intervenciones) el 21/12/2009 07:15:22
Estás generando varios inputs con el mismo nombre, y en $_POST solo aparece uno, el primero, el resto los ignora.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inseratr multiples registros

Publicado por Carlos Andres (11 intervenciones) el 21/12/2009 16:52:49
Si eso lo sé... pero tienes alguna idea para solucionarlo?????

gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inseratr multiples registros

Publicado por Diego Romero (1450 intervenciones) el 21/12/2009 17:07:05
Agrega corchetes al final de los nombres de los inputs para crear arrays de ellos en $_POST
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inseratr multiples registros

Publicado por Carlos Andres (11 intervenciones) el 21/12/2009 17:11:18
OK... ya habia intentado eso.. pero el problema es que tambien necesito enviar unas variables de condicion...

si no abuso mucho de tu tiempo... me podrias ubicar en la consulta del INSER INTO??? y como hacer que una variable $asig que no sea un input text tambien sea un array???

gracias por tu tiempo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inseratr multiples registros

Publicado por Carlos Andres  (11 intervenciones) el 21/12/2009 17:31:08
Bueno se me ocurre la idea de enviar los campos ocultos y colocar los corchetes como tu dijiste...

pero no se como recibirlos en la otra pagina...

gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inseratr multiples registros

Publicado por Diego Romero (1450 intervenciones) el 21/12/2009 21:19:40
A modo de prueba y para ayudarte a resolver el problema, en la "otra página" pon solo este código:

<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>

Eso te mostrará qué es lo que estás enviando exactamente por POST. A partir de allí puedes implementar la solución que creas conveniente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inseratr multiples registros

Publicado por Carlos Andres  (11 intervenciones) el 21/12/2009 22:21:10
Muchas gracias por ese codigo.. no lo conocia..

efectivamente estoy enviando todo como quiero

lo unico grave es que como son varios arrays no se como cogerlos con el foreach, solo estoy cogiendo el primero

asi:

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], $_POST[xp1], $_POST[xp2], $_POST[xacum], $_POST[xn1], $_POST[xn2], $_POST[xn3], $_POST[xn4], $_POST[xnact], $_POST[asig], $_POST[periodo], $_POST[xaus])";

y la impresion con el codigo que me diste me sale asi:

Array ( [0] => 739 [1] => 740 ) [xaus] => Array ( [0] => 1 [1] => 3 ) [xp1] => Array ( [0] => 1 [1] => 3 ) [xp2] => Array ( [0] => 1 [1] => 3 ) [xacum] => Array ( [0] => 1 [1] => 3 ) [xn1] => Array ( [0] => 1 [1] => 3 ) [xn2] => Array ( [0] => 1 [1] => 3 ) [xn3] => Array ( [0] => 1 [1] => 3 ) [xn4] => Array ( [0] => 1 [1] => 3 ) [xnact] => Array ( [0] => 1 [1] => 3 ) [Submit] => Insertar [operacion] => 1 )

[auto] => 2870
[periodo] => 1
[grado] => 29
[asig] => 18

y obtengo como resultado de la consulta:

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

entonces como conclusion solo se me esta definiendo un array que es el primero
--- como cojo los demas arrays con el foreach?????

gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inseratr multiples registros

Publicado por Diego Romero (1450 intervenciones) el 22/12/2009 05:12:23
Es una estructura bastante complicada de seguir, tendrás que darte maña con los foreach.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inseratr multiples registros

Publicado por carlos andres (11 intervenciones) el 22/12/2009 14:14:41
Ok diego... gracias!!

seguire trabajando en eso haber como lo soluciono.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar