JavaScript - mostrar aprobado o no aprobado segun nota asignada al listar estudiantes en una tabla

 
Vista:
sin imagen de perfil

mostrar aprobado o no aprobado segun nota asignada al listar estudiantes en una tabla

Publicado por victor alfonso (1 intervención) el 19/07/2024 00:09:33
Cordial saludo, espero me puedan ayudar.
Tengo la siguiente situación
en un atabla se lista a un grupo de estudiantes los cuales son consultados a una base de datos, estos estudiantes tienen asignada una nota final y a su vez tiene un estado que debería mostrar pendiente sino tiene nota, aprobado si el valor es 3 o superior y en caso contrario mostrar no aprobado.
con el código javascript que utilizo para mostrar el estado funciona pero solo con el primer registro, a los demás registros le pone el mismo valor del primero independientemente que en la nota tenga un valor de 3 o superior que seria el puntaje de aprobación.

El codigo para mostrar el listado de estudiantes en la tabla es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<table id="requestdata" width="100%" border="0" align="center" cellpadding="5" cellspacing="0">
                                    <thead class="GrupoHeadTabla" id="TablaResultados">
                                        <tr>
                                            <td width="90" align="center">Codigo</td>
                                            <td width="300" align="center">Asignatura</td>
                                            <td width="100" align="center">Nivel</td>
                                            <td width="100" align="center">Nota final</td>
                                            <td width="120" align="center">Estado</td>
                                            <td width="100" align="center">Acciónes</td>
                                        </tr>
                                    </thead>
                                    <tbody class="GrupoBodyTabla">
                                        <?php
                                        require('../Conexion/conexion.php');
                                        $consulta = $conn->prepare("SELECT * FROM tbpensumcontenido WHERE Pensum = :nombPensum");
                                        $consulta->execute([':nombPensum'=>$pensum['idPensum']]);
                                        $resultado = $consulta->fetchAll(PDO::FETCH_ASSOC);
                                        ?>
                                        <tr>
                                            <?php
                                            if(empty($resultado)){
                                            ?>
                                                <script>
                                                var tablaResultados = document.getElementById('TablaResultados');
                                                var fondoResultados = document.getElementById('Resultados');
                                                tablaResultados.style.visibility = 'hidden';
                                                fondoResultados.style.backgroundColor = 'transparent';
                                                </script>
                                                <div id="MensajeNohayInformacion"> Actualmente no hay asignaturas para mostrar. El estudiante no se encuentra matriculado en el programa de formación.</div>
                                            <?php
                                            } else {
                                            foreach($resultado as $CPensum){
                                            ?>
                                            <td width="90" align="center" valign="middle">
                                                <?php echo $CPensum['asignatura']?>
                                            </td>
                                            <td width="300" align="left" valign="middle" class="name">
                                                <?php
                                                require('../Conexion/conexion.php');
                                                $consultaAsig = $conn->prepare("SELECT * FROM tbasignatura WHERE codigoAsignatura = :codAsig LIMIT 1;");
                                                $consultaAsig->execute([':codAsig'=>$CPensum['asignatura']]);
                                                $resultadoAsig = $consultaAsig->fetchAll(PDO::FETCH_ASSOC);
                                                foreach($resultadoAsig as $asignatura){
                                                ?><?=$asignatura['nombreAsignatura']?><?php }; ?>
                                            </td>
                                            <td width="100" align="center" valign="middle">
                                                <?php
                                                require('../Conexion/conexion.php');
                                                $consultaNivel = $conn->prepare("SELECT * FROM tbnivelsemestre WHERE idNivelSemestre = :codNivel LIMIT 1;");
                                                $consultaNivel->execute([':codNivel'=>$CPensum['nivel']]);
                                                $resultadoNivel = $consultaNivel->fetchAll(PDO::FETCH_ASSOC);
                                                foreach($resultadoNivel as $nivel){ ?><?=$nivel['nombreNivelSemestre']?><?php }; ?>
                                            </td>
                                            <td width="100" align="center" valign="middle">
                                                <input type="text" name="nota" id="nota" class="inputTextoCentrado" value="<?php echo $CPensum['nota']?>" readonly>
                                            </td>
                                            <td width="120" align="center" valign="middle">
                                                <script>
                                                    var nota = document.querySelectorAll('#nota').value;
 
                                                           if(nota === "") {
                                                                document.write("Pendiente");
                                                            } else if(nota >= 3) {
                                                                document.write("Aprobado");
                                                            } else {
                                                                document.write("No aprobado");
                                                            }
 
 
                                                </script>
                                            </td>
                                            <td width="100" align="center" valign="middle">
                                                <select name="asignarAsig" id="asignarAsig">
                                                    <option>Matricular</option>
                                                    <option>Homologar</option>
                                                    <option>Habilitar</option>
                                                </select>
                                            </td>
                                        </tr>
                                        <?php
                                              };
                                            }
                                        ?>
                                     </tbody>
                                </table>

El código para mostrar el estado de aprobación según la nota del estudiante es la siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
var nota = document.querySelectorAll('#nota').value;
 
if(nota === "") {
document.write("Pendiente");
} else if(nota >= 3) {
document.write("Aprobado");
} else {
document.write("No aprobado");
}
 
 
</script>

Aclaro nuevamente esto funciona pero solo con el primer registro, con los demás registros deja el mismo valor del primer registro es decir no los cambia a aprobado o pendiente según el valor de la nota.

no me deja subir imagenes en este post, por eso no les comparto una para que puedan observar los resultados.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

mostrar aprobado o no aprobado segun nota asignada al listar estudiantes en una tabla

Publicado por Alejandro (540 intervenciones) el 19/07/2024 23:26:35
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Diría un maestro mio "los tuyos no son errores, son ¡horrores!".

Centrándonos en la parte del código de la nota del estudiante
1
var nota = document.querySelectorAll('#nota').value;
"nota" siempre sera undefined porque querySelectorAll() devuelve un NodeList el cual no tiene una propiedad value.
Por tal motivo nunca cumplirá una condición dando siempre el resultado de else.
Por otra parte, si ya lo estas haciendo con PHP, también lo puedes hacer con él y te queda más limpio tu código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar