Foros del Web » Programando para Internet » PHP »

Acumulador erroneo

Estas en el tema de Acumulador erroneo en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 01/04/2013, 14:02
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 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

Etiquetas: erroneo, mysql, registro, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:09.