Foros del Web » Programando para Internet » PHP »

Insertar un array en una tabla de MySQL

Estas en el tema de Insertar un array en una tabla de MySQL en el foro de PHP en Foros del Web. Que tal amigos, un cordial saludo para todos ustedes agradeciendo anticipadamente su ayuda. Tengo un problema: - He creado un formulario para poner la asistencia ...
  #1 (permalink)  
Antiguo 02/04/2012, 18:52
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 1 mes
Puntos: 3
Exclamación Insertar un array en una tabla de MySQL

Que tal amigos, un cordial saludo para todos ustedes agradeciendo anticipadamente su ayuda. Tengo un problema:
- He creado un formulario para poner la asistencia de unos alumnos.
- En un input de tipo text pinto en un array los alumnos que ha ingresado el profesor y los que va a ir agregando poco a poco (tomado de una tabla de MySQL llamada ml_dat_ALUMNOS).
- En otro input de tipo text el profesor ingresa la asistencia del alumno.
- En el último input de tipo text se ingresa la fecha.
- Con un submit envío el formulario de todos los array en la tabla llamada ml_dat_ASISTENCIA.

MI PROBLEMA:
No me almacena todos los registros, sino solamente el primero. ¿Cuál sería la sentencia correcta para ingresar el Array en la tabla ml_dat_ASISTENCIA de MySQL?

Código formulario
Código PHP:
<?php
   
   $usu_alum
=mysql_query("SELECT ID_ALUMNO FROM ml_dat_ALUMNO WHERE ID_GRUPO = '$nombre_gpo'");
                           
   
   
   echo 
"<table width='765' border='2' align='left'>";
   
   echo 
'<form action="CONEXION_ASISTENCIA.php" id="asist" method="POST">';

echo 
"<tr>";

echo 
"<td width='236' bgcolor='#C4CDFD' align='center'><font size='-1'><font face='Arial'><b>Alumno</b></td>";

echo 
"<td width='236' bgcolor='#C4CDFD' align='center'><font size='-1'><font face='Arial'><b>Asistencia</b></td>";

echo 
"<td width='236' bgcolor='#C4CDFD' align='center'><font size='-1'><font face='Arial'><b>Fecha de asistencia</b></td>";

echo 
"</tr>";

while (
$row_asist mysql_fetch_array($usu_alum)){

echo 
"<tr> \n";

echo 
"<input type='text' name='ID_GRUP[]' id='ID_GRUP' value='$row_gpo[0]' />";

echo 
"<td width='236' bgcolor='#C4CDFD' align='center'><input type='text' name='ALUMNOS[]' size='20' maxlength='20' value='$row_asist[0]'><font size='-1'><font face='Arial'></td></input> \n";

echo 
"<td width='236' bgcolor='#C4CDFD' align='center'><input type='text' name='ASIST[]' size='20' maxlength='20' value=''><font size='-1'><font face='Arial'></td></input> \n";

echo 
"<td width='236' bgcolor='#C4CDFD' align='center'><input type='text' name='FECHA_ASISTENCIA[]' size='20' maxlength='20' value=''><font size='-1'><font face='Arial'></td></input> \n";

echo 
"</tr> \n";

}

echo 
"<td width='236' bgcolor='#C4CDFD' align='center'><input type='submit' name='ENVIAR' id='ENVIAR' value='Guardar'><input type='reset' name='RESTABLECER' id='RESTABLECER' value='Borrar datos'><font size='-1'><font face='Arial'></td> \n";

echo 
"</font>";

echo 
"</table> \n";
 
echo 
'</form>';
 
 
?>

Código del envío a MySQL
Código PHP:
<?php
$conexion
=mysql_connect("localhost","---------------","-----------------");
if (!
$conexion) {
die(
"Fallo la conexión a la Base de Datos: " mysql_error());
}
$db=mysql_select_db("---------------------",$conexion);
if (!
$db) {
die(
"Fallo la selección de la Base de Datos: " mysql_error());
}

$GRUPO=$_POST['ID_GRUP'];
$ALUMNO=$_POST['ALUMNOS'];
$ASISTENCIA=$_POST['ASIST'];
$FECHA_ASISTENCIA=$_POST['FECHA_ASISTENCIA'];
    


for(
$i=0$i<sizeof($GRUPO); $i++) 
{


$insertar=mysql_query("INSERT INTO ml_dat_ASISTENCIA(ID_GRUPO,ID_ALUMNO,ASISTENCIA,FECHA_ASIST) VALUES('$GRUPO[$i]','$ALUMNO[$i]','$ASISTENCIA[$i]','$FECHA_ASISTENCIA[$i]')",$conexion); 

if (!
$insertar) {
die(
"Fallo en la insercion de registro en la Base de Datos: " mysql_error());
}

mysql_close($conexion);

echo 
'<script>alert("Los datos han sido almacenados en la base de datos");</script>';
        echo 
'<SCRIPT LANGUAGE="javascript">
        location.href="MILISTA_BD_ASIST.php";
        </SCRIPT>'
;
}

?>
Gracias y saludos.
  #2 (permalink)  
Antiguo 02/04/2012, 19:07
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Insertar un array en una tabla de MySQL

te doy pistas a ver si lo haces, en el formulario como lo creas con while a cada input en el name le agregas aparte de como tienes que se llama una variable por ejemplo $i, que la misma comience de 0 y vaya sumando 1 por cada registro.

luego al momento de recibirlo vuelves a contar cuantos alumnos son y haces el mismo procedimiento para insertar los datos

nose si me explique bien, pero yo me entiendo jejeje
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #3 (permalink)  
Antiguo 03/04/2012, 01:27
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 1 mes
Puntos: 3
Exclamación Respuesta: Insertar un array en una tabla de MySQL

Muchas gracias por tu tiempo y ayuda amigo johhan, intenté algunas modificaciones con tus pistas como poner en el nombre de los input [$i], sin embargo no funcionó, ¿no sé si te referías a eso o si también tengo que modificar algo en el código que quién recibe lo datos? Te agradecería mucho si pudieras explicarme de manera más clara ya que soy nuevo en php. Agradezco tus comentarios.
  #4 (permalink)  
Antiguo 03/04/2012, 07:44
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Insertar un array en una tabla de MySQL

bueno fijate este puede ser el ejemplo del formulario

Código PHP:
Ver original
  1. <form name="form1" method="post" action="">
  2.  
  3. <?php
  4. ##### hacemos una consulta a la BD y preguntamos cuantos alumnos hay imaginemos que el resultado fue 8
  5. $n_alumnos = 8;
  6. $i = 1;
  7. while($n_alumnos >= $i) {
  8. ?>
  9. <input type="text" name="alumno<?php echo $i; ?>" id="alumno">
  10. <?php $i++; } ?>
  11.  
  12. </form>

ya con eso en este ej. hay 8 alumnos, al momento de enviarlos irian como alumno1, alumno2, etc.....

entonces para recibirlos haces lo mismo de aqui

Código PHP:
Ver original
  1. <?php
  2. ##### hacemos una consulta a la BD y preguntamos cuantos alumnos hay imaginemos que el resultado fue 8
  3. $n_alumnos = 8;
  4. $i = 1;
  5. while($n_alumnos >= $i) {
  6.  
  7. $alumnos =  $_POST['alumno'.$i];
  8.  
  9. // y de aqui en adelante haces lo que vayas a hacer
  10.  
  11. }
  12. ?>
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #5 (permalink)  
Antiguo 09/04/2012, 18:12
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Insertar un array en una tabla de MySQL

Perdón por la tardanza amigo johhan16, he modificado mi código con tu sugerencia pero no lo consigo. El while lo utilizo para pintar los alumnos obtenidos de MySQL y de la manera que me dijiste sólo me pinta el primer registro de alumno a pesar de que reconoce el número de alumnos.
  #6 (permalink)  
Antiguo 09/04/2012, 18:25
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Insertar un array en una tabla de MySQL

me dices que lo hicistes tal cual como yo lo coloque y no te funciona?


bueno entonces seria bueno que coloque todo el codigo completo de como lo llevas a ver
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #7 (permalink)  
Antiguo 09/04/2012, 18:48
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Insertar un array en una tabla de MySQL

Gracias johhan16:

Código formulario
Código PHP:
<?php
   
   $usu_alum
=mysql_query("SELECT ID_ALUMNO FROM ml_dat_ALUMNO WHERE ID_GRUPO = '$nombre_gpo'");
   
$row_asist mysql_fetch_array($usu_alum);
   
$n_alumnos count($row_asist);
    
$i 1;                                                  
   
   
echo 
'<form action="CONEXION_ASISTENCIA.php" id="asist" method="POST">';

echo 
"<tr>";

echo 
"<b>Alumno</b>";

echo 
"<b>Asistencia</b>";

echo 
"<b>Fecha de asistencia</b>";

echo 
"</tr>";

while (
$n_alumnos >= $i){

echo 
"<tr> \n";

echo 
"<input type='text' name='ID_GRUP[$i]' id='ID_GRUP' value='$row_gpo[0]' />";

echo 
"<input type='text' name='ALUMNOS[$i]' value='$row_asist[0]'></input> \n";

echo 
"<input type='text' name='ASIST[$i]' value=''><font size='-1'></input> \n";

echo 
"<input type='text' name='FECHA_ASISTENCIA[$i]' value=''></input> \n";


$i++;}

echo 
"<input type='submit' name='ENVIAR' id='ENVIAR' value='Guardar'><input type='reset' name='RESTABLECER' id='RESTABLECER' value='Borrar datos'>;
 
echo '</form>';
 
 ?>
Sólo me pinta en el formulario 2 alumnos (cuando tengo 4) y sólo el primero (me pinta 2 veces el 1er alumno).

Gracias y saludos

Etiquetas: insert, mysql
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 01:32.