Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/11/2007, 02:18
mreyesb
 
Fecha de Ingreso: febrero-2007
Mensajes: 70
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: tabla con columnas y filas variable

Lo solucioné, y por si a alguien le sirve, posteo el codigo..

Código PHP:
<?php
include("conexion.php");
$usuario $_SESSION["s_login"]; //contiene el id de usuario
$curso $_SESSION["s_curso"]; //contiene el curso al que pertenece el usuario

$consulta mysql_query("select id_asignatura,nombre_asign from asignaturas where nombre_curso = '$curso'");

?>
<table summary="Documentos">
            <caption>Notas</caption>
<thead>
<tr>
    <th scope="col">Asignaturas:</th>
    <th scope="col">N1</th> //puse un máximo de 9 notas
    <th scope="col">N2</th>
    <th scope="col">N3</th>
    <th scope="col">N4</th>
    <th scope="col">N5</th>
    <th scope="col">N6</th>
    <th scope="col">N7</th>
    <th scope="col">N8</th>
    <th scope="col">N9</th>
    <th scope="col">Promedio</th> //para el promedio de cada asignatura
</tr>
</thead>
<tbody>
<?php
while ($row mysql_fetch_array($consulta)){
$i 0;
$total 0;
echo 
"<tr>";
echo 
"<th scope=\"row\">".$row['nombre_asign']."</th>";
    
$asignatura $row['id_asignatura'];
    
$consulta2mysql_query("select valor_nota from obtiene_notas where id_asignatura = '$asignatura'");
    while (
$row2 mysql_fetch_array($consulta2)){
    echo 
"<td>".$row2['valor_nota']."</td>";
    
$i $i+1;   //cuenta el numero de notas de cada asignatura
    
$total $total+$row2['valor_nota'];   //suma las notas
    
}
    
$j $i+1;
    while (
$j<10){  //esto es para rellenar las columnas que queden vacias y pintar el promedio donde corresponde
    
$j++;
    echo 
"<td></td>";
                }
    if (
$i>0){  //para evitar la division por 0
    
$promedio $total/$i;   //se saca promedio
    
echo "<td>".number_format($promedio,1,',','.')."</td>";   //promedio con 1 decimal
                
}
echo 
"</tr>";
}
?>
<tfoot>
<tr>
<th scope="row"></th>
<td colspan="4">td>
</tr>
</tfoot>
</tbody>
</table>
Acá una foto de como lista los datos:


Cálculo 1 no tiene calificaciones aún, y como pueden ver cada asignatura tiene un número distinto de calificaciones

Ahora les queria preguntar si habia una solución mas elegante que utilizando 2 querys, con un join alomejor, pero la verdad de join no conosco mucho... me gustaria que me dieran su opinion sobre lo correcto y optimo del codigo.... saludos y gracias

Última edición por mreyesb; 03/11/2007 a las 02:27