Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/04/2013, 14:02
Avatar de Briss
Briss
 
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Acumulador erroneo

Tengo el siguiente código con el cual obtengo el grado actual del alumno , genero tablas con calificaciones de acuerdo al semestre
Ejemplo si el alumno esta en 2do. realizará 2 tablas, funciona bien pero ahora estoy agregando esto a un ciclo do- while para saber las calificaciones de los alumnos
que cumplen determinada condicion (consulta)
el primer registro obtenido sale correctamente pero el segundo ya no :( ya que en promedio general lo saca, pero acumula las calificaciones del primer registro obtenido (alumno 1 obtenido)
y no solo las del segundo por ejemplo si en el primer alumno su promedio general fue de 10

y el segundo alumno va en segundo y en el primer grado tiene
como promedio 9
en el segundo grado 9

en lugar de que su promedio general sea 18/2=9

lo hace asi 28/2=14 (toma el promedio general del alumno 1)

el codigo lo tengo entre <td></td>

Código PHP:
  <?php 
$clave
=$row_1['clave']; 
$grado=$row_1['grado']; 
$acumulador+=$sql['promedio']; 
$contador=0



$sql=sprintf("SELECT * FROM ... grado <= $grado and ... Estatus= '$estatus' and ... clave='$clave'");
$res mysql_query($sql$connection) or die(mysql_error()); 


for(
$lastgrado=0;  
    
$sqlmysql_fetch_assoc($res); 
    
$lastgrado=$sql['grado']){ 
  if(
$sql['grado']!=$lastgrado){
      

    if(
$lastgrado!=0){ echo "</table>"// se cierra la tabla si cambia 
    
      
echo "<font color='black'; font size='2';><b>Promedio: ".($acumulador/$contador)."</b>"// y se muestra el promedio
       
echo "</font></h3>";
        echo 
"<br>";
      
$prom=($acumulador/$contador);
      
$final+=$prom;
      echo 
"<br>";
    
      }
    echo 
"<table class='normal7' >"// y abre la tabla siguiente 
  
echo "<font color='black'; font size='3';>Periodo"." "$sql['periodo']; 
  echo 
"</font></h3>"
  echo 
"<font color='black'; font size='3';> Semestre"." "$sql['grado']; 
  echo 
"</font></h3>";
  echo  
"<thead>"
  echo 
"<td> CLAVE</td>"
  echo 
"<td width='150'> MATERIA </td>";   
echo 
"<td> CAL.</td>";    


echo 
"<td> OBSERVACIONES</td></tr>"

  echo 
"<br>";  
  echo  
"</thead>"
   
    
$acumulador=0;
    
$contador=0
    
    
  
  
 } 
     
echo 
"<td bgcolor='#CCCCCC'> ".$sql['claveasignatura']."</td>";   
  echo 
"<td bgcolor='#CCCCCC'>".$sql['nombre']."</td>";   
echo 
"<td bgcolor='#CCCCCC'> ".$sql['promedio']."</td>";   
 
echo 
"<td bgcolor='#CCCCCC'> ".$sql['Nombre']."</td>";   
echo 
"<td bgcolor='#CCCCCC'> ".$sql['']."</td></tr>";  


  
$acumulador+=$sql['promedio']; 
  
$contador++; // aumentamos el contador

 

 
echo 
"</table>"// se cierra la tabla si cambia 
    
        
if(empty($contador)) 
    
$contador 0
else 
      
$tp2=($acumulador/$contador);

echo 
"<font color='black'; font size='2';><b>Promedio: ".round($tp2,2); "</b>";
      echo 
"</font>"
      echo 
"<br>";
  echo 
"<br>";
  if(empty(
$contador) )
    
$contador 0
else 
     
$prom=($acumulador/$contador);
      
$final+=$prom;
     
      echo 
"<DIV ALIGN=left>" ;
    
$pg=$final/$grado;

      
             echo 
"<font color='black'; font size='2';><b>Promedio General: "round($pg,2);


echo 
"</font>";
      echo 
"</DIV>" ;
//echo "</table>";


?
<?php } while ($row = mysql_fetch_assoc($row_1)); ?>

Desde ya GRACIAS