Foros del Web » Programando para Internet » PHP »

de nuevo problema con tablas referenciales

Estas en el tema de de nuevo problema con tablas referenciales en el foro de PHP en Foros del Web. Hola otra vez Pense que habia solucionado el problema pero me sigue saliendo enste error: Cita: Cannot add or update a child row: a foreign ...
  #1 (permalink)  
Antiguo 08/02/2009, 17:53
 
Fecha de Ingreso: diciembre-2007
Mensajes: 38
Antigüedad: 16 años, 4 meses
Puntos: 0
Hola otra vez
Pense que habia solucionado el problema pero me sigue saliendo enste error:
Cita:
Cannot add or update a child row: a foreign key constraint fails (`control_estudios`.`inscripciones`, CONSTRAINT `inscripciones_ibfk_7` FOREIGN KEY (`ci_alumno`) REFERENCES `alumnos` (`ci_alumno`))
Mis tres tablas son:
-Inscripciones
-Alumnos y
-Representantes

Este es mi codigo php:
Código PHP:
<?php require_once('Connections/control_estudios.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO inscripciones (ci_alumno, ci_representante, ano_escolar, fecha_inscripcion, turno_alumno, grado_alumno, seccion_alumno, status_alumno, documentos_recaudados_alumno) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['ci_alumno'], "text"),
                       
GetSQLValueString($_POST['ci_representante'], "text"),
                       
GetSQLValueString($_POST['ano_escolar'], "text"),
                       
GetSQLValueString($_POST['fecha_inscripcion'], "date"),
                       
GetSQLValueString($_POST['turno_alumno'], "text"),
                       
GetSQLValueString($_POST['grado_alumno'], "text"),
                       
GetSQLValueString($_POST['seccion_alumno'], "text"),
                       
GetSQLValueString($_POST['status_alumno'], "text"),
                       
GetSQLValueString($_POST['documentos_recaudados_alumno'], "int"));

  
mysql_select_db($database_control_estudios$control_estudios);
  
$Result1 mysql_query($insertSQL$control_estudios) or die(mysql_error());
}

mysql_select_db($database_control_estudios$control_estudios);
$query_representante "SELECT representantes.ci_representante, CONCAT_WS(' ',representantes.apellido_representante, representantes.nombre_representante) AS representante FROM representantes ORDER BY representantes.apellido_representante";
$representante mysql_query($query_representante$control_estudios) or die(mysql_error());
$row_representante mysql_fetch_assoc($representante);
$totalRows_representante mysql_num_rows($representante);

mysql_select_db($database_control_estudios$control_estudios);
$query_alumnos "SELECT alumnos.ci_alumno, CONCAT_WS(' ',alumnos.primer_apellido_alumno, alumnos.primer_nombre_alumno) AS alumno FROM alumnos ORDER BY alumnos.primer_apellido_alumno";
$alumnos mysql_query($query_alumnos$control_estudios) or die(mysql_error());
$row_alumnos mysql_fetch_assoc($alumnos);
$totalRows_alumnos mysql_num_rows($alumnos);
?>
Y este mi codigo sql:
Cita:
CREATE TABLE IF NOT EXISTS `alumnos` (
`ci_alumno` varchar(10) COLLATE latin1_spanish_ci NOT NULL,
`primer_nombre_alumno` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
`segundo_nombre_alumno` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`primer_apellido_alumno` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
`segundo_apellido_alumno` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`lugar_nacimiento_alumno` varchar(100) COLLATE latin1_spanish_ci NOT NULL,
`fecha_nacimiento_alumno` date DEFAULT NULL,
`edad_alumno` int(11) NOT NULL,
`sexo_alumno` enum('m','f') COLLATE latin1_spanish_ci DEFAULT NULL,
`procedencia_alumno` varchar(100) COLLATE latin1_spanish_ci DEFAULT NULL,
`foto_alumno` blob NOT NULL,
`id_alumnos` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ci_alumno`),
KEY `id_alumnos` (`id_alumnos`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci ROW_FORMAT=DYNAMIC COMMENT='Tabla alumnos' AUTO_INCREMENT=4 ;

--
-- Volcar la base de datos para la tabla `alumnos`
Estructura de tabla para la tabla `inscripciones`
--

CREATE TABLE IF NOT EXISTS `inscripciones` (
`id_inscripciones` int(11) NOT NULL AUTO_INCREMENT,
`ci_alumno` varchar(10) COLLATE latin1_spanish_ci NOT NULL,
`ci_representante` varchar(10) COLLATE latin1_spanish_ci NOT NULL,
`ano_escolar` varchar(10) COLLATE latin1_spanish_ci NOT NULL,
`grado_alumno` varchar(11) COLLATE latin1_spanish_ci DEFAULT NULL,
`seccion_alumno` varchar(11) COLLATE latin1_spanish_ci DEFAULT NULL,
`turno_alumno` varchar(11) COLLATE latin1_spanish_ci DEFAULT NULL,
`fecha_inscripcion` date DEFAULT NULL,
`status_alumno` varchar(11) COLLATE latin1_spanish_ci DEFAULT NULL,
`documentos_recaudados_alumno` set('partida_nacimiento','ci_alumno_d','ci_represe ntante_d','fotos_alumno','fotos_representante') COLLATE latin1_spanish_ci DEFAULT NULL,
PRIMARY KEY (`id_inscripciones`),
KEY `ci_alumno` (`ci_alumno`),
KEY `ci_representante` (`ci_representante`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=1 ;

--
-- Volcar la base de datos para la tabla `inscripciones`
--

--
-- Estructura de tabla para la tabla `representantes`
--

CREATE TABLE IF NOT EXISTS `representantes` (
`ci_representante` varchar(10) COLLATE latin1_spanish_ci NOT NULL,
`nombre_padre` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`nombre_madre` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`apellido_madre` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`ci_padre` varchar(10) COLLATE latin1_spanish_ci DEFAULT NULL,
`ci_madre` varchar(10) COLLATE latin1_spanish_ci DEFAULT NULL,
`nombre_representante` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
`apellido_representante` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
`parentesco` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
`profesion_representante` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`direccion_representante` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
`lugar_trabajo_representante` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`telefono_representante` varchar(11) COLLATE latin1_spanish_ci NOT NULL,
`apellido_padre` varchar(50) COLLATE latin1_spanish_ci DEFAULT NULL,
`foto_representantes` blob NOT NULL,
`id_representante` int(10) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ci_representante`),
KEY `id_representante` (`id_representante`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci ROW_FORMAT=DYNAMIC AUTO_INCREMENT=3 ;

--
-- Volcar la base de datos para la tabla `representantes`
--



Por favor, necesito ayuda urgentemente por favor

--
-- Filtros para la tabla `inscripciones`
--
ALTER TABLE `inscripciones`
ADD CONSTRAINT `inscripciones_ibfk_1` FOREIGN KEY (`ci_alumno`) REFERENCES `inscripciones` (`ci_alumno`),
ADD CONSTRAINT `inscripciones_ibfk_2` FOREIGN KEY (`ci_representante`) REFERENCES `inscripciones` (`ci_representante`);

Y esta parte donde hago las referencias. No se que esta mal, ayuda

Última edición por GatorV; 08/02/2009 a las 18:31
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 17:35.