Acceder a un array bidimensional mediante un desplegable
Publicado por John (2 intervenciones) el 05/04/2021 18:49:04
Tengo un array bidimensional con el que quiero crear un select desplegable en el cual al elegir una de las distintas opciones, me devuelva una tabla con los datos dados por la opción elegida tal que así:

No consigo hacer que me muestre todos los valores cuando elijo la opción "todas", me saltan varios errores (Undefined index:) y me suma los valores numéricos mas veces de la cuenta. Lo que hago en el siguiente código es un if donde si elijo la opción "todas" añada al array $listaAlum la suma de los valores numéricos.
Y otra de las veces solo me muestra los ultimos valores del array:

He probado de todo, a ver si me podeis echar un cable. Gracias.
No consigo hacer que me muestre todos los valores cuando elijo la opción "todas", me saltan varios errores (Undefined index:) y me suma los valores numéricos mas veces de la cuenta. Lo que hago en el siguiente código es un if donde si elijo la opción "todas" añada al array $listaAlum la suma de los valores numéricos.
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
<?php
$arrayResultados = array
('Libre'=> array('No Presentados'=>12,'Suspenso'=>10,'Aprobado'=>6,'Notable'=>3,'Sobresaliente'=>1),
'On-line'=> array('Suspenso'=>26,'Aprobado'=>25,'Notable'=>22,'Sobresaliente'=>27),
'Presencial'=>array ('Suspenso'=>30,'Aprobado'=>25,'Notable'=>37,'Sobresaliente'=>28,'Matrícula de Honor'=>9)
);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form method="POST">
<select name="desplegable">
<option value="todas">Todas</option>
<?php
foreach ($arrayResultados as $indice => $valor)
{
echo "<option value='".$indice."'>".$indice."</option>";
}
?>
</select>
<input type="submit" name="envio" value="Aceptar">
</form>
<?php
if(isset($_POST["envio"]))
{
$listaAlum=[];
foreach ($arrayResultados as $indice => $valor)
{
foreach ($valor as $detalles => $numero)
{
if($_POST["desplegable"])
{
if($_POST["desplegable"]==$indice)
{
$listaAlum[$detalles] = $numero;
}
else
{
if($_POST["desplegable"]=="todas") //cuando elija la opcion todas
{
foreach ($arrayResultados as $indice => $valor)
{
foreach ($valor as $detalles => $numero)
{
$listaAlum[$detalles] += $numero;
}
}
}
}
}
}
}
echo "<h3>Seleccion: ".$_POST["desplegable"]."</h3>";
if(sizeof($listaAlum)>0){
echo "<table border='1'><tr><th>Calificacion</th><th>Alumnos</th></tr>";
foreach ($listaAlum as $calificacion => $alumnos) {
echo "<tr><td>".$calificacion."</td><td>".$alumnos."</td></tr>";
}
echo "</table>";
}
else{ echo "No hay datos"; }
}
?>
</body>
</html>
Y otra de las veces solo me muestra los ultimos valores del array:
He probado de todo, a ver si me podeis echar un cable. Gracias.
Valora esta pregunta


0