Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/03/2012, 12:26
chubse
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Insertar registros array a una base de MySQL

Mi amigo TRUMAN muchas gracias por tu tiempo y ayuda, ya modifiqué mi código como tu me lo has indicado sin embargo me marca un error que dice:

POSTFallo en la insercion de registro en la Base de Datos: Cannot add or update a child row: a foreign key constraint fails (`seresesp_milista/ml_dat_ASISTENCIA`, CONSTRAINT `ID_ALUMNO_R2` FOREIGN KEY (`ID_ALUMNO`) REFERENCES `ml_dat_ALUMNO` (`ID_ALUMNO`) ON DELETE CASCADE ON UPDATE CASCADE)

No se si sea ya cosa de mi base de datos o sea otra cosa:

- La lista de alumnos los tomo del ID_ALUMNOS de una tabla que se llama ml_dat_ALUMNOS.
- Quiero insertar el textbox ID_GRUPO (que toma el ID de una sesión de GRUPO), ALUMNOS (ID tomado de ml_dat_ALUMNOS), ASISTENCIA y FECHA_ASISTENCIA (escrita por el usuario) a otra tabla llamada ml_dat_ASISTENCIA.
- Tengo 2 relaciones:
* ID_GRUPO con la tabla ml_dat_GRUPO.
* ID_ALUMNO con la tabla ml_dat_ALUMNO

Te dejo mi código:

Código formulario
Código PHP:
 <?php

$usuario_gpo
=mysql_query("SELECT ID_GRUPO,GRUPO_NUMERO FROM ml_dat_GRUPO WHERE GRUPO_NUMERO = '$gpo'");
                            
$row_gpo mysql_fetch_row($usuario_gpo);
                            
$nombre_gpo=$row_gpo[0];
   
   
$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_row($usu_alum)){

echo 
"<tr> \n";

echo 
"<input type='hidden' name='ID_GRUP[]' id='ID_GRUP' value='$nombre_gpo' />";

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 que recibe del submit
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<count(POST); $i++)
{

$insertar=mysql_query("INSERT INTO ml_dat_ASISTENCIA(ID_GRUPO,ID_ALUMNO,ASISTENCIA,FECHA_ASIST) VALUES('$GRUPO[$i]','$ALUMNOS[$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>'
;
}
?>

NOTA:
- El sizeoff(POST) me marca error así que utilicé count(POST).
- El:
Código PHP:
echo '<pre>'
print_r(POST); 
Tiene la misma función pero lo cambié por:
Código PHP:
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>'
;


Muchas gracias