PHP - porque no me anda el foreach

 
Vista:
sin imagen de perfil
Val: 62
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

porque no me anda el foreach

Publicado por giuli (74 intervenciones) el 08/11/2016 15:54:07
Hola, tengo el siguiente codigo en php

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
<!DOCTYPE HTML>
<html>
<head>
	<meta http-equiv="content-type" content="text/html" />
    	<title>Sistema de Gestion de Alumnos</title>
    <link rel="stylesheet" href="../../Css/Formularios.css"/>
</head>
<body>
<?php
 
include_once '../../PHP/Conexion.php';
$conectar = conexionBD();
function obteneralumnos(){
    if (isset($_POST['cursos']) && isset($_POST['divisiones'])){
        global $conectar;
                            $idcurso =htmlentities($_POST['cursos']);
                            $iddivision =htmlentities($_POST['divisiones']);
                            $sqlalumnos="SELECT alumno.idalumno,alumno.idpersona,persona.nombre,persona.apellido FROM alumno";
                            $sqlalumnos.=" LEFT JOIN persona ON alumno.idpersona=persona.idpersona WHERE idcurso=".$idcurso." AND iddivision=".$iddivision.";";
                            $rsalumnos= select($conectar,$sqlalumnos);
 
                            }
                            return $rsalumnos;
                            };
function listadocalificaciones($idalu){
                    global $conectar;
 
                          $numtrimestre=htmlentities($_POST['trimestres']);
 
                          $sqlnotas="SELECT trimestres.nota,materia.descripcion FROM trimestres";
                          $sqlnotas.=" LEFT JOIN materia ON materia.idmateria=trimestres.idmateria";
                          $sqlnotas.=" WHERE nuntrimestre=".$numtrimestre." AND idalumno=".$idalu.";";
                          $rsnotas=select($conectar,$sqlnotas);
 
                          return $rsnotas;
 
};
 
?>
    <form method="post" id="listado" name="listado">
  <section id="seccion">
 
      <?php
 
      $rsalumnos =obteneralumnos();
      $totalalumnos=count($rsalumnos);
 
      if ($totalalumnos>0){
      foreach ($rsalumnos as $alumno){
        $idalu=$alumno['idalumno'];
 
        $rsnotas= listadocalificaciones($idalu);
        foreach ($rsnotas as $nota){
            echo $nota['nota'];
            echo $nota['descripcion'];
 
        }
        /*
        echo $rsnotas[0]['nota'];
        echo $rsnotas[1]['nota'];*/
 
                    ?>
               <input type="label" value="<?php echo $alumno['nombre'];?>" />
           <?php }} ?>
        </section>
 
 </form>
</body>
</html>

en la parte
1
foreach ($rsnotas as $nota){

me dice Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\Sistema\Paginas\Preceptoria\notas.php on line 53 pero si me muestra los campos nota y descripcion..

Porque se suele dar siempre este error en los foreach? Si saco el foreach y muestro los campos me muestra todo bien..solo que necesito iterar sobre todos los alumnos..

Gracias por su ayuda
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
sin imagen de perfil
Val: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

porque no me anda el foreach

Publicado por Yamil Bracho (888 intervenciones) el 08/11/2016 16:17:22
Despues de esta linea

1
$rsalumnos =obteneralumnos();
Agrega
1
var_dump($rsalumnos); die();

Para ver que tipo de variable y valor contiene $rsalumnos...
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
sin imagen de perfil
Val: 62
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

porque no me anda el foreach

Publicado por giuli (74 intervenciones) el 08/11/2016 16:35:22
efectivamente contiene un array de dos dimensiones:

array(2) { [0]=> array(4) { ["idalumno"]=> string(1) "3" ["idpersona"]=> string(2) "14" ["nombre"]=> string(18) "aaaaaaa aaaaaaaaaa" ["apellido"]=> string(20) "aaaaaaaaa aaaaaaaaaa" } [1]=> array(4) { ["idalumno"]=> string(1) "5" ["idpersona"]=> string(2) "59" ["nombre"]=> string(6) "Marcos" ["apellido"]=> string(9) "fernandez" } }

tiene el idalumno, idpersona, nombre y apellido de los alumnos
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
sin imagen de perfil

porque no me anda el foreach

Publicado por Debugsito (18 intervenciones) el 08/11/2016 18:44:00
Hola,
puedes escribir esto despues de la linea 52
1
var_dump($rsnotas); exit;
Al parecer en algunos casos el query no esta trayendo data por lo tanto al querer hacer foreach a algo que no es un array te genera ese error. Espero haberte ayudado, saludos.
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