Está en la página 1de 36

INSTITUCION EDUCATIVA

LOGO

CURSO
CICLO

INTEGRANTES
FECHA
INDICE

Introducción...................................................1
Desarrollo.......................................................2
Base de Datos...............................................3
Formulario Inicio Sesion.................................4
Formulario Principal.......................................5
File: Conexión.php.........................................6
DESARROLLO
Enunciado
El centro escolar “profe Lennin”, requiere un sistema de control de notas que le permita
llevar de una forma ordenada las calificaciones de sus alumnos, los requisitos
fundamentales son los siguientes:
• El registro de los alumnos debe de ser por salón y por grado.
• El sistema debe de contar al menos con una sección al momento de ser
entregado.
• El sistema debe de ser Escalable de forma sencilla, en grados y secciones.
• El sistema debe de contar con campos para una sola materia al momento de ser
entregado.
• El sistema debe de ser Escalable para poder agregar más materias por grado.

Parte A: "Base de datos"


Cada base de datos debe de contar con los siguientes registros:
Parte B: "Formularios administración"
Formulario 1
El primer formulario en PHP a ser entregado debe de permitirle al usuario, poder inscribir
alumnos, con notas por defecto con valor "0" en la base de datos.
Formulario para agregar nuevo alumno

Inscribir alumnos

Formulario 2
El segundo formulario en PHP a ser entregado debe de permitirle al usuario, poder
modificar los campos de los alumnos inscritos, crear campos registros de nuevas notas y
borrar campos.
Formulario para modificar campos
Parte C: "Formulario de visualización"
Formulario 3
El tercer Formulario en PHP a ser entregado debe de permitir al usuario, poder visualizar
las notas de toda una sección de forma completa, y además de los datos existentes en la
base de datos debe de agregar los campos de:
1. Promedio Global de Notas_N: Notas_N_G
2. Promedio de Notas_ N Por alumno: Notas_P_A
3. Promedio de Nota promedio de la clase.

Formulario con el l istado de alumnos.


Parte D: "Login"
El sistema cuenta con un sistema de sesiones y Cookies que le permite distinguir entre
alumnos, maestros y administrador, con las siguientes diferencias en los permisos
File: alumnoedit.view.php
<!DOCTYPE html>
<?php
require 'functions.php';
$permisos = ['Administrador','Profesor'];
permisos($permisos);
if(isset($_GET['id'])) {

    $id_alumno = $_GET['id'];

    $alumno = $conn->prepare("select * from alumnos where id = ".


$id_alumno);
    $alumno->execute();
    $alumno = $alumno->fetch();

//consulta las secciones


    $secciones = $conn->prepare("select * from secciones");
    $secciones->execute();
    $secciones = $secciones->fetchAll();

//consulta de grados
    $grados = $conn->prepare("select * from grados");
    $grados->execute();
    $grados = $grados->fetchAll();
}else{
    Die('Ha ocurrido un error');
}
?>
<html>
<head>
<title>Inicio | Registro de Notas</title>
    <meta name="description" content="Registro de Notas del Centro Escolar
Profesor Lennin" />
    <link rel="stylesheet" href="css/style.css" />

</head>
<body>
<div class="header">
        <h1>Registro de Notas - Centro Escolar "Profe Lennin"</h1>
        <h3>Usuario:  <?php echo $_SESSION["username"] ?></h3>
</div>
<nav>
    <ul>
        <li><a href="inicio.view.php">Inicio</a> </li>
        <li class="active"><a href="alumnos.view.php">Registro de
Alumnos</a> </li>
        <li><a href="listadoalumnos.view.php">Listado de Alumnos</a> </li>
        <li><a href="notas.view.php">Registro de Notas</a> </li>
        <li><a href="listadonotas.view.php">Consulta de Notas</a> </li>
        <li class="right"><a href="logout.php">Salir</a> </li>

    </ul>
</nav>

<div class="body">
    <div class="panel">
            <h4>Edición de Alumnos</h4>
            <form method="post" class="form" action="procesaralumno.php">
                <!--colocamos un campo oculto que tiene el id del alumno-->
                <input type="hidden" value="<?php echo $alumno['id']?>"
name="id">
                <label>Nombres</label><br>
                <input type="text" required name="nombres" value="<?php echo
$alumno['nombres']?>" maxlength="45">
                <br>
                <label>Apellidos</label><br>
                <input type="text" required name="apellidos" value="<?php
echo $alumno['apellidos']?>" maxlength="45">
                <br><br>
                <label>No de Lista</label><br>
                <input type="number" min="1" class="number" value="<?php
echo $alumno['num_lista']?>" name="numlista">
                <br><br>
                <label>Sexo</label><br><input required type="radio"
name="genero" <?php if($alumno['genero'] == 'M'){ echo "checked";} ?>
value="M"> Masculino
                <input type="radio" name="genero" required value="F" <?php
if($alumno['genero'] == 'F') { echo "checked";} ?>> Femenino
                <br><br>
                <label>Grado</label><br>
                <select name="grado" required>
                    <?php foreach ($grados as $grado):?>
                        <option value="<?php echo $grado['id'] ?>" <?php
if($alumno['id_grado'] == $grado['id']) { echo "selected";} ?> ><?php echo
$grado['nombre'] ?></option>
                    <?php endforeach;?>
                </select>
                <br><br>
                <label>Seccion</label><br>

                    <?php foreach ($secciones as $seccion):?>


                        <input type="radio" name="seccion" <?php
if($alumno['id_seccion'] == $seccion['id']) { echo "checked";} ?> required
value="<?php echo $seccion['id'] ?>">Seccion <?php echo $seccion['nombre'] ?
>
                    <?php endforeach;?>

                <br><br>
                <button type="submit" name="modificar">Guardar
Cambios</button> <a class="btn-link" href="listadoalumnos.view.php">Ver
Listado</a>
                <br><br>
                <!--mostrando los mensajes que recibe a traves de los
parametros en la url-->
                <?php
                if(isset($_GET['err']))
                    echo '<span class="error">Error al editar el
registro</span>';
                if(isset($_GET['info']))
                    echo '<span class="success">Registro modificado
correctamente!</span>';
                ?>

            </form>
        </div>
</div>

<footer>
    <p>Derechos reservados &copy; 2020</p>
</footer>

</body>

</html>

File: alumnos.view.php
<!DOCTYPE html>
<?php
require 'functions.php';
//Define queienes tienen permiso en este archivo
$permisos = ['Administrador','Profesor'];
permisos($permisos);
//consulta las secciones
$secciones = $conn->prepare("select * from secciones");
$secciones->execute();
$secciones = $secciones->fetchAll();

//consulta de grados
$grados = $conn->prepare("select * from grados");
$grados->execute();
$grados = $grados->fetchAll();
?>
<html>
<head>
<title>Inicio | Registro de Notas</title>
    <meta name="description" content="Registro de Notas del Centro Escolar
Profesor Lennin" />
    <link rel="stylesheet" href="css/style.css" />

</head>
<body>
<div class="header">
        <h1>Registro de Notas - Centro Escolar "Profe Lennin"</h1>
        <h3>Usuario:  <?php echo $_SESSION["username"] ?></h3>
</div>
<nav>
    <ul>
        <li><a href="inicio.view.php">Inicio</a> </li>
        <li class="active"><a href="alumnos.view.php">Registro de
Alumnos</a> </li>
        <li><a href="listadoalumnos.view.php">Listado de Alumnos</a> </li>
        <li><a href="notas.view.php">Registro de Notas</a> </li>
        <li><a href="listadonotas.view.php">Consulta de Notas</a> </li>
        <li class="right"><a href="logout.php">Salir</a> </li>

    </ul>
</nav>

<div class="body">
    <div class="panel">
            <h4>Registro de Alumnos</h4>
            <form method="post" class="form" action="procesaralumno.php">
                <label>Nombres</label><br>
                <input type="text" required name="nombres" maxlength="45">
                <br>
                <label>Apellidos</label><br>
                <input type="text" required name="apellidos" maxlength="45">
                <br><br>
                <label>No de Lista</label><br>
                <input type="number" min="1" class="number" name="numlista">
                <br><br>
                <label>Sexo</label><br><input required type="radio"
name="genero" value="M"> Masculino
                <input type="radio" name="genero" required value="F">
Femenino
                <br><br>
                <label>Grado</label><br>
                <select name="grado" required>
                    <?php foreach ($grados as $grado):?>
                        <option value="<?php echo $grado['id'] ?>"><?php
echo $grado['nombre'] ?></option>
                    <?php endforeach;?>
                </select>
                <br><br>
                <label>Sección</label><br>

                    <?php foreach ($secciones as $seccion):?>


                        <input type="radio" name="seccion" required
value="<?php echo $seccion['id'] ?>">Sección <?php echo $seccion['nombre'] ?
>
                    <?php endforeach;?>

                <br><br>
                <button type="submit" name="insertar">Guardar</button>
<button type="reset">Limpiar</button> <a class="btn-link"
href="listadoalumnos.view.php">Ver Listado</a>
                <br><br>
                <!--mostrando los mensajes que recibe a traves de los
parametros en la url-->
                <?php
                if(isset($_GET['err']))
                    echo '<span class="error">Error al almacenar el
registro</span>';
                if(isset($_GET['info']))
                    echo '<span class="success">Registro almacenado
correctamente!</span>';
                ?>

            </form>
        <?php
        if(isset($_GET['err']))
            echo '<span class="error">Error al guardar</span>';
        ?>
        </div>
</div>

<footer>
    <p>Derechos reservados &copy; 2020</p>
</footer>

</body>

</html>

File: functions.php
<?php
//iniciamos la sesion
session_start();
//esta pregunta la debe hacer en todos los archivos para validar que antes
el usuario haya iniciado sesion
if ( isset($_COOKIE["activo"]) && isset($_SESSION['username'])) {
    setcookie("activo", 1, time() + 3600);
} else {
    http_response_code(403);
    header('location:index.php?err=2');
}
//importamos el archivo que contiene la variable de conexion a la base de
datos
require 'conn/connection.php';

//para verificar que tiene acceso a un archivo


function permisos($permisos){
    if (!in_array($_SESSION['rol'], $permisos)) {
        http_response_code(403);
        header('location:inicio.view.php?err=1');
    }
}

function existeNota($id_alumno, $id_materia, $conn){


    $nota = $conn->prepare("select * from notas where id_materia =
'$id_materia' and id_alumno = '$id_alumno'");
    $nota->execute();
    //si devuelve una fila significa que la nota ya es
    $nota = $nota->rowCount();
    return $nota;
}

?>

File: index.php
<?php
//arreglo con mensajes que puede recibir
$messages = [
    "1" => "Credenciales incorrectas",
    "2" => "No ha iniciado sesión"
];
?>
<!DOCTYPE html>
<html>
<head>
<title>Login | Registro de Notas</title>
    <meta name="description" content="Registro de Notas del Centro Escolar
Profesor Lennin" />
    <link rel="stylesheet" href="css/style.css" />

</head>
<body>
<div class="header">

        <h1>Registro de Notas - Centro Escolar "Profe Lennin"</h1>


</div>

<div class="body">
    <div class="panel-login">
            <h4>Inicio de Sesion</h4>
            <form method="post" class="form" action="login_post.php">
                <label>Usuario</label><br>
                <input type="text" name="username">
                <br>
                <label>Contraseña</label><br>
                <input type="password" name="password">
                <br><br>
                <button type="submit">Entrar</button>
            </form>
        <?php
        if(isset($_GET['err']) && is_numeric($_GET['err']) && $_GET['err'] >
0 && $_GET['err'] < 3 )
            echo '<span class="error">'.$messages[$_GET['err']].'</span>';
        ?>
        </div>
</div>

<footer>
    <p>Derechos reservados &copy; 2020</p>
</footer>

</body>

</html>

File: inicio.view.php

<!DOCTYPE html>
<?php
require 'functions.php';
$permisos = ['Administrador','Profesor','Padre'];
permisos($permisos);

?>
<html>
<head>
<title>Inicio | Registro de Notas</title>
    <meta name="description" content="Registro de Notas del Centro Escolar
Profesor Lennin" />
    <link rel="stylesheet" href="css/style.css" />

</head>
<body>
<div class="header">
        <h1>Registro de Notas - Centro Escolar "Profe Lennin"</h1>
        <h3>Usuario:  <?php echo $_SESSION["username"] ?></h3>
</div>
<nav>
    <ul>
        <li class="active"><a href="inicio.view.php">Inicio</a> </li>
        <li><a href="alumnos.view.php">Registro de Alumnos</a> </li>
        <li><a href="listadoalumnos.view.php">Listado de Alumnos</a> </li>
        <li><a href="notas.view.php">Registro de Notas</a> </li>
        <li><a href="listadonotas.view.php">Consulta de Notas</a> </li>
        <li class="right"><a href="logout.php">Salir</a> </li>

    </ul>
</nav>

<div class="body">
    <div class="panel">
           <h1 class="text-center">Centro Escolar "Profe Lennin"</h1>
        <?php
        if(isset($_GET['err'])){
            echo '<h3 class="error text-center">ERROR: Usuario no
autorizado</h3>';
        }
        ?>
        <br>
        <hr>
        <p class="text-center"><strong>Integrantes GRUPO
5</strong><br><br>José Saúl Rodríguez Guardado<br>Eduardo Antonio  Ramirez
Carias<br>Vladimir Alcides  Salguero Erazo</p>
        <br>
        </div>
</div>

<footer>

    <p>Derechos reservados &copy; 2020</p>


</footer>
</body>

</html>

File: listadoalumnos.view.php
<?php
require 'functions.php';

$permisos = ['Administrador','Profesor'];
permisos($permisos);
//consulta los alumnos para el listaddo de alumnos
$alumnos = $conn->prepare("select a.id, a.num_lista, a.nombres, a.apellidos,
a.genero, b.nombre as grado, c.nombre as seccion from alumnos as a inner
join grados as b on a.id_grado = b.id inner join secciones as c on
a.id_seccion = c.id order by a.apellidos");
$alumnos->execute();
$alumnos = $alumnos->fetchAll();
?>
<!DOCTYPE html>
<html>
<head>
<title>Listado de Alumnos | Registro de Notas</title>
    <meta name="description" content="Registro de Notas del Centro Escolar
Profesor Lennin" />
    <link rel="stylesheet" href="css/style.css" />

</head>
<body>
<div class="header">
        <h1>Registro de Notas - Centro Escolar "Profe Lennin"</h1>
        <h3>Usuario:  <?php echo $_SESSION["username"] ?></h3>
</div>
<nav>
    <ul>
        <li><a href="inicio.view.php">Inicio</a> </li>
        <li><a href="alumnos.view.php">Registro de Alumnos</a> </li>
        <li class="active"><a href="listadoalumnos.view.php">Listado de
Alumnos</a> </li>
        <li><a href="notas.view.php">Registro de Notas</a> </li>
        <li><a href="listadonotas.view.php">Consulta de Notas</a> </li>
        <li class="right"><a href="logout.php">Salir</a> </li>

    </ul>
</nav>
<div class="body">
    <div class="panel">
            <h4>Listado de Alumnos</h4>
            <table class="table" cellspacing="0" cellpadding="0">
                <tr>
                    <th>No
de<br>lista</th><th>Apellidos</th><th>Nombres</th><th>Genero</th><th>Grado</
th><th>Seccion</th>
                    <th>Editar</th><th>Eliminar</th>
                </tr>
                <?php foreach ($alumnos as $alumno) :?>
                <tr>
                    <td align="center"><?php echo $alumno['num_lista'] ?
></td><td><?php echo $alumno['apellidos'] ?></td>
                    <td><?php echo $alumno['nombres'] ?></td><td
align="center"><?php echo $alumno['genero'] ?></td>
                    <td align="center"><?php echo $alumno['grado'] ?
></td><td align="center"><?php echo $alumno['seccion'] ?></td>
                    <td><a href="alumnoedit.view.php?id=<?php echo
$alumno['id'] ?>">Editar</a> </td>
                    <td><a href="alumnodelete.php?id=<?php echo
$alumno['id'] ?>">Eliminar</a> </td>
                </tr>
                <?php endforeach;?>
            </table>
                <br><br>

                <a class="btn-link" href="alumnos.view.php">Agregar


Alumno</a>
                <br><br>
                <!--mostrando los mensajes que recibe a traves de los
parametros en la url-->
                <?php
                if(isset($_GET['err']))
                    echo '<span class="error">Error al almacenar el
registro</span>';
                if(isset($_GET['info']))
                    echo '<span class="success">Registro almacenado
correctamente!</span>';
                ?>

        </div>
</div>
<footer>
    <p>Derechos reservados &copy; 2020</p>
</footer>

</body>

</html>

File: listadonotas.view.php
<!DOCTYPE html>
<?php
require 'functions.php';

$permisos = ['Administrador','Profesor','Padre'];
permisos($permisos);
//consulta las materias
$materias = $conn->prepare("select * from materias");
$materias->execute();
$materias = $materias->fetchAll();

//consulta de grados
$grados = $conn->prepare("select * from grados");
$grados->execute();
$grados = $grados->fetchAll();

//consulta las secciones


$secciones = $conn->prepare("select * from secciones");
$secciones->execute();
$secciones = $secciones->fetchAll();
?>
<html>
<head>
    <title>Notas | Registro de Notas</title>
    <meta name="description" content="Registro de Notas del Centro Escolar
Profesor Lennin" />
    <link rel="stylesheet" href="css/style.css" />

</head>
<body>
<div class="header">
    <h1>Registro de Notas - Centro Escolar "Profe Lennin"</h1>
    <h3>Usuario:  <?php echo $_SESSION["username"] ?></h3>
</div>
<nav>
    <ul>
        <li><a href="inicio.view.php">Inicio</a> </li>
        <li><a href="alumnos.view.php">Registro de Alumnos</a> </li>
        <li><a href="listadoalumnos.view.php">Listado de Alumnos</a> </li>
        <li><a href="notas.view.php">Registro de Notas</a> </li>
        <li class="active"><a href="listadonotas.view.php">Consulta de
Notas</a> </li>
        <li class="right"><a href="logout.php">Salir</a> </li>

    </ul>
</nav>

<div class="body">
    <div class="panel">
        <h3>Consulta de Notas</h3>
        <?php
        if(!isset($_GET['consultar'])){
            ?>
            <p>Seleccione el grado, la materia y la sección</p>
            <form method="get" class="form" action="listadonotas.view.php">
                <label>Seleccione el Grado</label><br>
                <select name="grado" required>
                    <?php foreach ($grados as $grado):?>
                        <option value="<?php echo $grado['id'] ?>"><?php
echo $grado['nombre'] ?></option>
                    <?php endforeach;?>
                </select>
                <br><br>
                <label>Seleccione la Materia</label><br>
                <select name="materia" required>
                    <?php foreach ($materias as $materia):?>
                        <option value="<?php echo $materia['id'] ?>"><?php
echo $materia['nombre'] ?></option>
                    <?php endforeach;?>
                </select>

                <br><br>
                <label>Seleccione la Sección</label><br><br>

                <?php foreach ($secciones as $seccion):?>


                    <input type="radio" name="seccion" required value="<?php
echo $seccion['id'] ?>">Sección <?php echo $seccion['nombre'] ?>
                <?php endforeach;?>
                <br><br>
                <button type="submit" name="consultar" value="1">Consultar
Notas</button></a>
                <br><br>
            </form>
            <?php
        }
        ?>
        <hr>

        <?php
        if(isset($_GET['consultar'])){
            $id_materia = $_GET['materia'];
            $id_grado = $_GET['grado'];
            $id_seccion = $_GET['seccion'];

            //extrayendo el numero de evaluaciones para esa materia


seleccionada
            $num_eval = $conn->prepare("select num_evaluaciones from
materias where id = ".$id_materia);
            $num_eval->execute();
            $num_eval = $num_eval->fetch();
            $num_eval = $num_eval['num_evaluaciones'];

            //mostrando el cuadro de notas de todos los alumnos del grado


seleccionado
            $sqlalumnos = $conn->prepare("select a.id, a.num_lista,
a.apellidos, a.nombres, b.nota,b.observaciones, avg(b.nota) as promedio from
alumnos as a left join notas as b on a.id = b.id_alumno
 where id_grado = ".$id_grado." and id_seccion = ".$id_seccion." group by
a.id");
            $sqlalumnos->execute();
            $alumnos = $sqlalumnos->fetchAll();
            $num_alumnos = $sqlalumnos->rowCount();
            $promediototal = 0.0;

            ?>
            <br>
            <a href="listadonotas.view.php"><strong><< Volver</strong></a>
            <br>
            <br>

                <table class="table" cellpadding="0" cellspacing="0">


                    <tr>
                        <th>No de
lista</th><th>Apellidos</th><th>Nombres</th>
                        <?php
                        for($i = 1; $i <= $num_eval; $i++){
                            echo '<th>Nota '.$i .'</th>';
                        }
                        ?>
                        <th>Promedio</th>
                        <th>Observaciones</th>
                    </tr>
                    <?php foreach ($alumnos as $index => $alumno) :?>
                        <!-- campos ocultos necesarios para realizar el
insert-->
                        <tr>
                            <td align="center"><?php echo
$alumno['num_lista'] ?></td><td><?php echo $alumno['apellidos'] ?></td>
                            <td><?php echo $alumno['nombres'] ?></td>
                            <?php

                                //escribiendo las notas en columnas


                                $notas = $conn->prepare("select id, nota
from notas where id_alumno = ".$alumno['id']." and id_materia = ".
$id_materia);
                                $notas->execute();
                                $notas = $notas->fetchAll();

                                foreach ($notas as $eval => $nota) {

                                    echo '<td align="center"><input


type="hidden"
                                            name="nota'.$eval.'" value="'.
$nota['nota'] . '" >'. $nota['nota'] . '</td>';

                                }

                            echo '<td
align="center">'.number_format($alumno['promedio'], 2).'</td>';
                            //echo '<td><a href="notas.view.php?grado='.
$id_grado.'&materia='.$id_materia.'&seccion='.$id_seccion.'">Editar</a>
</td>';
                            $promediototal +=
number_format($alumno['promedio'], 2);
                            echo '<td>'. $alumno['observaciones']. '</td>';
                            ?>
                        </tr>
                    <?php endforeach;?>
                    <tr><td colspan="3"><?php
                        for($i = 0; $i < $num_eval; $i++){
                            echo '<td><div class="text-center"
id="promedio'.$i .'"><div></td>';
                        }
                        ?><td align="center"><?php echo
number_format($promediototal / $num_alumnos,2) ?></td></tr>
                </table>

                <br>

        <?php
        }
        ?>
    </div>
</div>

<footer>
    <p>Derechos reservados &copy; 2020</p>
</footer>

</body>
<script>
    <?php
    for($i = 0; $i < $num_eval; $i++){
        echo 'var values'.$i.' = [];
        var promedio'.$i.';
    var valor'.$i.' = 0;
    var nota'.$i.' = document.getElementsByName("nota'.$i.'");
    for(var i = 0; i < nota'.$i.'.length; i++) {
        valor'.$i.' += parseFloat(nota'.$i.'[i].value);
    }
    promedio'.$i.' = (valor'.$i.' / parseFloat(nota'.$i.'.length));
    document.getElementById("promedio'.$i.'").innerHTML = (promedio'.
$i.').toFixed(2);';

    }
    ?>
</script>

</html>
File: login_post.php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    require 'conn/connection.php';

    $username = htmlspecialchars($_POST['username']);
    $password = htmlspecialchars($_POST['password']);

    $users = $conn->prepare("select username, password, rol from users where


username = '".$username."' and password = '".$password."'");
    $users->execute();
    if($users->rowCount() > 0){
        $user = $users->fetch();
        if($user['username'] == $username && $user['password'] == $password)
{
            //existe el usuario y esa contrase;a
            session_start();
            $_SESSION["username"] = $username;
            $_SESSION["rol"] = $user['rol'];
            setcookie("activo", 1, time() + 3600);
            header("Location: inicio.view.php", true, 301);
        } else {
            http_response_code(401);
            //echo "Credenciales incorrectas";
            header('location:index.php?err=1');
        }
    }else {
        http_response_code(401);
        header('location:index.php?err=1');
    }
} else {
    http_response_code(405);
    echo "SOLO SE PUEDE POST";

    // POST_GET
}

File: logout.php
<?php
session_start();
session_destroy();

header('location:index.php');
?>

File: notadelete.php
<?php
require 'functions.php';
if($_SESSION['rol'] =='Administrador') {
    if (isset($_GET['idalumno']) && isset($_GET['idmateria']) &&
is_numeric($_GET['idalumno'])) {
        try {
            $id_alumno = $_GET['idalumno'];
            $id_materia = $_GET['idmateria'];
            $alumno = $conn->prepare("delete from notas where id_alumno =
" . $id_alumno . " and id_materia = " . $id_materia);
            $alumno->execute();
            header('Location: ' . $_SERVER['HTTP_REFERER']);
        } catch (PDOException $e) {
            echo $e->getMessage();
        }
    } else {
        die('Ha ocurrido un error');
    }
}else{
    header('location:inicio.view.php?err=1');
}
?>

File: notas.view.php
<!DOCTYPE html>
<?php
require 'functions.php';
//arreglo de permisos
$permisos = ['Administrador','Profesor'];
permisos($permisos);

//consulta las materias


$materias = $conn->prepare("select * from materias");
$materias->execute();
$materias = $materias->fetchAll();
//consulta de grados
$grados = $conn->prepare("select * from grados");
$grados->execute();
$grados = $grados->fetchAll();

//consulta las secciones


$secciones = $conn->prepare("select * from secciones");
$secciones->execute();
$secciones = $secciones->fetchAll();
?>
<html>
<head>
<title>Notas | Registro de Notas</title>
    <meta name="description" content="Registro de Notas del Centro Escolar
Profesor Lennin" />
    <link rel="stylesheet" href="css/style.css" />

</head>
<body>
<div class="header">
        <h1>Registro de Notas - Centro Escolar "Profe Lennin"</h1>
        <h3>Usuario:  <?php echo $_SESSION["username"] ?></h3>
</div>
<nav>
    <ul>
        <li><a href="inicio.view.php">Inicio</a> </li>
        <li><a href="alumnos.view.php">Registro de Alumnos</a> </li>
        <li><a href="listadoalumnos.view.php">Listado de Alumnos</a> </li>
        <li class="active"><a href="notas.view.php">Registro de Notas</a>
</li>
        <li><a href="listadonotas.view.php">Consulta de Notas</a> </li>
        <li class="right"><a href="logout.php">Salir</a> </li>

    </ul>
</nav>

<div class="body">
    <div class="panel">
            <h3>Registro y Modificación Notas</h3>
           <?php
           if(!isset($_GET['revisar'])){
               ?>

            <form method="get" class="form" action="notas.view.php">


                <label>Seleccione el Grado</label><br>
                <select name="grado" required>
                    <?php foreach ($grados as $grado):?>
                        <option value="<?php echo $grado['id'] ?>"><?php
echo $grado['nombre'] ?></option>
                    <?php endforeach;?>
                </select>
                <br><br>
                <label>Seleccione la Materia</label><br>
                <select name="materia" required>
                    <?php foreach ($materias as $materia):?>
                        <option value="<?php echo $materia['id'] ?>"><?php
echo $materia['nombre'] ?></option>
                    <?php endforeach;?>
                </select>

                <br><br>
                <label>Seleccione la Sección</label><br>

                <?php foreach ($secciones as $seccion):?>


                    <input type="radio" name="seccion" required value="<?php
echo $seccion['id'] ?>">Sección <?php echo $seccion['nombre'] ?>
                <?php endforeach;?>

                <br><br>
                <button type="submit" name="revisar" value="1">Ingresar
Notas</button> <a class="btn-link" href="listadonotas.view.php">Consultar
Notas</a>
                <br><br>
            </form>
        <?php
           }
        ?>
        <hr>

        <?php
        if(isset($_GET['revisar'])){
            $id_materia = $_GET['materia'];
            $id_grado = $_GET['grado'];
            $id_seccion = $_GET['seccion'];

            //extrayendo el numero de evaluaciones para esa materia


seleccionada
            $num_eval = $conn->prepare("select num_evaluaciones from
materias where id = ".$id_materia);
            $num_eval->execute();
            $num_eval = $num_eval->fetch();
            $num_eval = $num_eval['num_evaluaciones'];

            //mostrando el cuadro de notas de todos los alumnos del grado


seleccionado
            $sqlalumnos = $conn->prepare("select a.id, a.num_lista,
a.apellidos, a.nombres, b.nota, avg(b.nota) as promedio, b.observaciones
from alumnos as a left join notas as b on a.id = b.id_alumno
 where id_grado = ".$id_grado." and id_seccion = ".$id_seccion." group by
a.id");
            $sqlalumnos->execute();
            $alumnos = $sqlalumnos->fetchAll();
            $num_alumnos = $sqlalumnos->rowCount();

            ?>
            <br>
            <a href="notas.view.php"><strong><< Volver</strong></a>
            <br>
            <br>
                <form action="procesarnota.php" method="post">

            <table class="table" cellpadding="0" cellspacing="0">


                <tr>
                    <th>No de lista</th><th>Apellidos</th><th>Nombres</th>
                    <?php
                        for($i = 1; $i <= $num_eval; $i++){
                           echo '<th>Nota '.$i .'</th>';
                        }
                    ?>
                    <th>Promedio</th>
                    <th>Observaciones</th>
                    <th>Eliminar</th>
                </tr>
                <?php foreach ($alumnos as $index => $alumno) :?>
                    <!-- campos ocultos necesarios para realizar el insert--
>
                    <input type="hidden" value="<?php echo $num_alumnos ?>"
name="num_alumnos">
                    <input type="hidden" value="<?php echo $alumno['id'] ?>"
name="<?php echo 'id_alumno'.$index ?>">
                    <input type="hidden" value="<?php echo $num_eval ?>"
name="num_eval">
                     <!-- campos para devolver los parametros en el get y
mantener los mismos datos al hacer el header location-->
                    <input type="hidden" value="<?php echo $id_materia ?>"
name="id_materia">
                    <input type="hidden" value="<?php echo $id_grado ?>"
name="id_grado">
                    <input type="hidden" value="<?php echo $id_seccion ?>"
name="id_seccion">
                    <tr>
                        <td align="center"><?php echo $alumno['num_lista'] ?
></td><td><?php echo $alumno['apellidos'] ?></td>
                        <td><?php echo $alumno['nombres'] ?></td>
                        <?php
                           if(existeNota($alumno['id'],$id_materia,$conn) >
0){
                                //ya tiene notas registradas
                                $notas = $conn->prepare("select id, nota
from notas where id_alumno = ".$alumno['id']." and id_materia = ".
$id_materia);
                                $notas->execute();
                                $registrosnotas = $notas->fetchAll();
                                $num_notas = $notas->rowCount();
                                foreach ($registrosnotas as $eval => $nota){
                                    echo '<input type="hidden" value="'.
$nota['id'].'" name="idnota' . $eval .'alumno' . $index . '">';
                                    echo '<td><input type="text"
maxlength="5" value="'.$nota['nota'].'" name="evaluacion' . $eval . 'alumno'
. $index . '" class="txtnota"></td>';
                                }
                                if($num_eval > $num_notas){
                                    $dif = $num_eval - $num_notas;

                                    for($i = $num_notas; $i < $dif +


$num_notas; $i++) {
                                        echo '<input type="hidden" value="'.
$nota['id'].'" name="idnota' . $i .'alumno' . $index . '">';
                                        echo '<td><input type="text"
maxlength="5" value="'.$nota['nota'].'" name="evaluacion' . $i . 'alumno' .
$index . '" class="txtnota"></td>';
                                    }
                                }

                            }else {
                                //extrayendo el numero de evaluaciones para
esa materia seleccionada
                                for($i = 0; $i < $num_eval; $i++) {
                                    echo '<td><input type="text"
maxlength="5" name="evaluacion' . $i . 'alumno' . $index . '"
class="txtnota"></td>';
                                }
                            }

                            echo '<td
align="center">'.number_format($alumno['promedio'], 2).'</td>';

                            if(existeNota($alumno['id'],$id_materia,$conn) >
0){
                                echo '<td><input type="text" maxlength="100"
value="'.$alumno['observaciones'].'" name="observaciones' . $index . '"
class="txtnota"></td>';
                            }else {
                                echo '<td><input type="text"
name="observaciones' . $index . '" class="txtnota"></td>';
                            }

                        if(existeNota($alumno['id'],$id_materia,$conn) > 0){


                            echo '<td><a href="notadelete.php?idalumno='.
$alumno['id'].'&idmateria='.$id_materia.'">Eliminar</a> </td>';
                        }else{
                            echo '<td>Sin notas</td>';
                        }
                        ?>
                    </tr>
                <?php endforeach;?>
                <tr></tr>
            </table>
                <br>
                <button type="submit" name="insertar">Guardar</button>
<button type="reset">Limpiar</button> <a class="btn-link"
href="listadonotas.view.php">Consultar Notas</a>
                <br>
            </form>

        <?php }

        ?>
                <!--mostrando los mensajes que recibe a traves de los
parametros en la url-->
                <?php
                if(isset($_GET['err']))
                    echo '<span class="error">Error al almacenar el
registro</span>';
                if(isset($_GET['info']))
                    echo '<span class="success">Registro almacenado
correctamente!</span>';
                ?>

            </form>
        <?php
        if(isset($_GET['err']))
            echo '<span class="error">Error al guardar</span>';
        ?>
        </div>
</div>

<footer>
    <p>Derechos reservados &copy; 2020</p>
</footer>

</body>

</html>

File: procesaralumno.php
<?php
if(!$_POST){
    header('location: alumnos.view.php');
}
else {
    //incluimos el archivo funciones que tiene la conexion
    require 'functions.php';
    //Recuperamos los valores que vamos a llenar en la BD
    $nombres = htmlentities($_POST ['nombres']);
    $apellidos = htmlentities($_POST ['apellidos']);
    $genero = htmlentities($_POST['genero']);
    $numlista = htmlentities($_POST['numlista']);
    $idgrado = htmlentities($_POST['grado']);
    $idseccion = htmlentities($_POST['seccion']);

    //insertar es el nombre del boton guardar que esta en el archivo


alumnos.view.php
    if (isset($_POST['insertar'])){
        $result = $conn->query("insert into alumnos (num_lista, nombres,
apellidos, genero, id_grado, id_seccion) values ('$numlista', '$nombres',
'$apellidos', '$genero', '$idgrado','$idseccion' )");
        if (isset($result)) {
            header('location:alumnos.view.php?info=1');
        } else {
            header('location:alumnos.view.php?err=1');
        }// validación de registro

    //sino boton modificar que esta en el archivo alumnoedit.view.php


    }else if (isset($_POST['modificar'])) {
        //capturamos el id alumnos a modificar
            $id_alumno = htmlentities($_POST['id']);
            $result = $conn->query("update alumnos set num_lista =
'$numlista', nombres = '$nombres', apellidos = '$apellidos', genero =
'$genero',id_grado = '$idgrado', id_seccion = '$idseccion' where id = " .
$id_alumno);
            if (isset($result)) {
                header('location:alumnoedit.view.php?id=' . $id_alumno .
'&info=1');
            } else {
                header('location:alumnoedit.view.php?id=' . $id_alumno .
'&err=1');
            }// validación de registro
    }

File: procesarnota.php
<?php
if(!$_POST){
    header('location: alumnos.view.php');
}
else {
    //incluimos el archivo para hacer la conexion
    require 'functions.php';
    //Recuperamos los valores que vamos a llenar en la BD
    $id_materia = htmlentities($_POST ['id_materia']);
    $id_grado = htmlentities($_POST ['id_grado']);
    $id_seccion = htmlentities($_POST ['id_seccion']);
    $num_eval = htmlentities($_POST ['num_eval']);
    $num_alumnos = htmlentities($_POST['num_alumnos']);

    //insertar es el nombre del boton guardar que esta en el archivo


notas.view.php
    if (isset($_POST['insertar'])){

        /*Recorro el numero de estudiantes*/


        for($i = 0; $i < $num_alumnos; $i++){
            $id_alumno = htmlentities($_POST['id_alumno' . $i]);
            //por cada estudiante se recorre el numero de evaluaciones para
extraer la nota de cada una
                //funcion existeNota en functions.php valida que la nota no
exista segun el alumno y la materia
                if(existeNota($id_alumno,$id_materia,$conn) == 0){
                    for($j = 0; $j < $num_eval; $j++) {
                        $nota = htmlentities($_POST['evaluacion' . $j .
'alumno' . $i]);
                        $observaciones = htmlentities($_POST['observaciones'
. $i]);
                        $sql_insert = "insert into notas (id_alumno,
id_materia, nota, observaciones) values ('$id_alumno', '$id_materia',
'$nota','$observaciones' )";
                        $result = $conn->query($sql_insert);
                    }
                }elseif(existeNota($id_alumno,$id_materia,$conn) > 0){
                    //hace una actualizacion o update
                    for($j = 0; $j < $num_eval; $j++) {
                        $id_nota = htmlentities($_POST['idnota' . $j .
'alumno' . $i]);
                        $nota = htmlentities($_POST['evaluacion' . $j .
'alumno' . $i]);
                        $observaciones = htmlentities($_POST['observaciones'
. $i]);
                        $sql_query = "update notas set nota = '$nota',
observaciones = '$observaciones' where id = ".$id_nota;
                        $result = $conn->query($sql_query);
                    }
                }

        }
        if (isset($result)) {
            header('location:notas.view.php?grado='.$id_grado.'&materia='.
$id_materia.'&seccion='.$id_seccion.'&revisar=1&info=1');
        } else {
            header('location:notas.view.php?grado='.$id_grado.'&materia='.
$id_materia.'&seccion='.$id_seccion.'&revisar=1&err=1');
        }// validación de registro*/

    //sino boton modificar que esta en el archivo alumnoedit.view.php


    }else if (isset($_POST['modificar'])) {
        //capturamos el id alumnos a modificar
            $id_alumno = htmlentities($_POST['id']);
            $result = $conn->query("update alumnos set num_lista =
'$numlista', nombres = '$nombres', apellidos = '$apellidos', genero =
'$genero',id_grado = '$idgrado', id_seccion = '$idseccion' where id = " .
$id_alumno);
            if (isset($result)) {
                header('location:alumnoedit.view.php?id=' . $id_alumno .
'&info=1');
            } else {
                header('location:alumnoedit.view.php?id=' . $id_alumno .
'&err=1');
            }// validación de registro

    }

También podría gustarte