A ver si esto te sirve:
El problema que estás experimentando parece estar relacionado con la forma en que se está enviando el formulario y el procesamiento de los datos. Aquí hay algunos puntos que podrías revisar y ajustar para solucionar el problema:
-
Revisar la URL de acción del formulario: Asegúrate de que la URL especificada en el atributo
action
del formulario es correcta y accesible. En este caso, asegúrate de queAsignarAsignatura.php
está en la ubicación correcta relativa al archivo que contiene el formulario. -
Errores en la conexión a la base de datos: Asegúrate de que el archivo
conexion.php
se incluye correctamente y no tiene errores que puedan interrumpir el procesamiento. -
Permisos y rutas de archivos: Asegúrate de que todos los archivos tienen los permisos adecuados y que las rutas especificadas son correctas.
-
Redirección después de la inserción: Verifica si la redirección está funcionando correctamente después de la inserción de datos. Asegúrate de que la página
Programa.php
existe y está en la ubicación correcta. -
Errores de PHP: Habilita la visualización de errores en PHP para detectar posibles problemas que puedan estar ocurriendo durante el procesamiento del formulario. Puedes agregar lo siguiente al principio de tus archivos PHP para mostrar errores:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
Aquí hay un ejemplo de cómo podrías ajustar y probar el archivo AsignarAsignatura.php
:
<?php
// Mostrar errores de PHP
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// Incluimos la conexión existente con la DB.
require('../Conexion/conexion.php');
if (!empty($_POST)) {
// Se captan en las variables los datos provenientes de los campos del formulario.
$codPensum = $_POST['txtIdPensum'];
$nombreAsig = $_POST['txtAsig'];
$nivel = $_POST['txtNivel'];
$creditos = $_POST['txtCreditos'];
$horas = $_POST['txtHoras'];
$idPrograma = $_POST['txtIdPrograma'];
// Se crea la consulta a la tabla para hacer la validación y comparación de los datos.
$consultaRg2 = $conn->prepare("SELECT * FROM tbpensumcontenido WHERE Pensum = :codPensum AND asignatura = :nombreAsig LIMIT 1;");
$consultaRg2->execute([':codPensum' => $codPensum, ':nombreAsig' => $nombreAsig]);
$numeroDeFilas2 = $consultaRg2->fetch(PDO::FETCH_ASSOC);
if (!empty($numeroDeFilas2)) {
// Si el resultado es la existencia de algún registro con los mismos datos comparados entonces se ejecute el siguiente script.
echo '<script>alert("Ya existe una asignatura asociada con ese nombre al pensum actual en la base de datos del sistema.\nSi desea asociar una nueva asignatura al pensum, por favor haga clic en el botón aceptar.");</script>';
} else {
// Se Procede con la inserción del registro en la DB.
$sSQLInsert2 = $conn->prepare("INSERT INTO tbpensumcontenido(Pensum, asignatura, nivel, creditos, totalHoras) VALUES(:Pensum, :Asignatura, :Nivel, :Creditos, :THoras)");
// Se asignan valores a los parámetros.
$sSQLInsert2->bindParam(':Pensum', $codPensum);
$sSQLInsert2->bindParam(':Asignatura', $nombreAsig);
$sSQLInsert2->bindParam(':Nivel', $nivel);
$sSQLInsert2->bindParam(':Creditos', $creditos);
$sSQLInsert2->bindParam(':THoras', $horas);
if ($sSQLInsert2->execute()) {
header('Location: ../Pages/Programa.php?id=' . $idPrograma);
exit();
} else {
echo '<script>alert("Error al insertar los datos en la base de datos.");</script>';
}
}
}
?>
También, revisa el HTML del formulario para asegurarte de que la URL de acción y los nombres de los campos coinciden con los que se están procesando en PHP:
<form id="frmAsignarAsignatura" name="frmAsignarAsignatura" method="post" action="AsignarAsignatura.php" autocomplete="off">
<input type="text" id="txtIdPensum" name="txtIdPensum" value="<?=$Pensum['idPensum']?>" style="display: none;" readonly>
<!-- Resto de los campos del formulario -->
</form>
Siguiendo estos pasos, deberías poder identificar y corregir el problema de "not found" al enviar el formulario.