Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Tablas de acuerdo al resultado de una consulta

Estas en el tema de Tablas de acuerdo al resultado de una consulta en el foro de PHP en Foros del Web. Hola estoy tratando de hacer lo siguiente obtener las calificaciones de un alumno divididas por semestre... es decir si el alumno va en 2do. mostrar ...

  #1 (permalink)  
Antiguo 25/02/2013, 10:55
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Tablas de acuerdo al resultado de una consulta

Hola estoy tratando de hacer lo siguiente obtener las calificaciones de un alumno divididas por semestre... es decir si el alumno va en 2do. mostrar las calificaciones de
1ro. y despues en otra tabla las de 2do...

Bien se me acurrio lo siguiente
Hacer una consulta para obtener el grado actual... ejemplo
Select * ...

resultado $grado=3
como el grado fue 3... tengo q generar 3 tablas
pense usar un for hasta que x=$grado

lo que no entiendo aun es como mostrar una tabla de acuerdo a los semestres es decir tabla 1 donde grado sea=1


tabla 2 donde grado=2

y tabla 3 donde grado=3

...... alguien puede orientarme por favor.........
  #2 (permalink)  
Antiguo 25/02/2013, 11:07
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Tablas de acuerdo al resultado de una consulta

hum, lo que me dio entendi, es si , esta en grado 2 debe mostrar tablas hasta ese grado osea , tabla grado 1 y tabla grado 2 , si esta en grado 3 , tabla grado 1 ,tabla grado 2 y tabla grado 3 ? cierto ?

la pregunta es , de donde sacas las calificaciones de los anteriores grados ???
  #3 (permalink)  
Antiguo 25/02/2013, 11:10
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Cita:
Iniciado por informacionsys Ver Mensaje
hum, lo que me dio entendi, es si , esta en grado 2 debe mostrar tablas hasta ese grado osea , tabla grado 1 y tabla grado 2 , si esta en grado 3 , tabla grado 1 ,tabla grado 2 y tabla grado 3 ? cierto ?

la pregunta es , de donde sacas las calificaciones de los anteriores grados ???
si asi es mostrar una tabla de acuerdo al grado si es dos 2 tablas la 1 solo con las calificaciones de 1er. semestre y la segunda con las de 2do. semestre solamente...

tengo una tabla calificaciones que se relaciones con la tabla alumos de ahi voy a tomar las notas obtenidas por el alumno
  #4 (permalink)  
Antiguo 25/02/2013, 11:11
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
De acuerdo Respuesta: Tablas de acuerdo al resultado de una consulta

Bueno, no entiendo cual es el problema. Con la función max podrias hallar el grado máximo en el que se encuentra sin necesidad de hacer nada mas.

¿Es necesario que generes x tablas por semestres? En caso afirmativo lo unico que deberias hacer es un ciclo donde hagas la creación y cierre de tablas de manera dinámica.

Se me ocurre algo asi como:

Código PHP:
for ($i=1,$i<$grado,$i++){
$sql=select from tabla where grado=$i and alumno='zutanito';
$res=mysqli->query($sql);
    while (
$row $res->fetch_assoc()) {
  echo 
"<table>";
echo 
"<tr>";
///etc etc y al final cierras la tabla para poder crear la siguiente
echo "</table>"
}


Eso seria todo.
__________________
Blog de humor http://elcuasatar.net63.net/
  #5 (permalink)  
Antiguo 25/02/2013, 11:17
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Cita:
Iniciado por cuasatar Ver Mensaje
Bueno, no entiendo cual es el problema. Con la función max podrias hallar el grado máximo en el que se encuentra sin necesidad de hacer nada mas.

¿Es necesario que generes x tablas por semestres? En caso afirmativo lo unico que deberias hacer es un ciclo donde hagas la creación y cierre de tablas de manera dinámica.

Se me ocurre algo asi como:

Código PHP:
for ($i=1,$i<$grado,$i++){
$sql=select from tabla where grado=$i and alumno='zutanito';
$res=mysqli->query($sql);
    while (
$row $res->fetch_assoc()) {
  echo 
"<table>";
echo 
"<tr>";
///etc etc y al final cierras la tabla para poder crear la siguiente
echo "</table>"
}


Eso seria todo.
Gracias lo pruebo y comento como me fue
  #6 (permalink)  
Antiguo 25/02/2013, 12:36
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Ya hice las pruebas solo que no puedo pasar mis variables
1ro... Hice la consulta para obtener el grado actual

2do.
Código PHP:
<?php
$grado
=$row_alumnos['grado']; 
for (
$i=1$i<=$grado$i++){ 
$sql=sprintf("SELECT * FROM alumnos where  matricula='%s'"$_SESSION['mivariabledesesion']);
$res mysql_query($sql$connection) or die(mysql_error());
$p=$res['Nombre'];
while (
$sqlmysql_fetch_assoc($res));{ 
  echo 
"<table border='1'>"
 

    echo 
"<tr>"
      
               echo 
"<td> hola $p</td>"
               
                 echo 
"</tr>"
                    echo 
"/n"
                 
        

 
echo 
"</table>"

}  
?>
Bien hice una prueba aun si la consulta final de las tabla calificaciones solo para ver el comportamiento hasta ahora han salido las 4 tablas (mi alumno va en 4to.)
y sale el hola pero no el valor de la variable $p
quize ponerlo asi tambien echo "<td> hola $res['Nombre'];</td>";
pero me arroja un error :S
  #7 (permalink)  
Antiguo 25/02/2013, 12:47
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Tablas de acuerdo al resultado de una consulta

yo recorrería todos los grados que sean igual o inferiores al actual ordenandolos por grados, algo así:

SELECT * FROM tabla WHERE grado <= $gradoactual ORDER BY grado

habiendo hecho esto recorres todos los resultados y creas cada tabla a medida que se cambie el valor del grado, para esto guardas el grado en una variable ($lastgrado) y la comparas con la actual:

for($lastgrado=0; $MQ=mysqli_fetch_assoc(...); $lastgrado=$MQ['grado']){
if($MQ['grado']!=$lastgrado)echo "GRADO ".$MQ['grado']."<table>";
echo "<tr><td>".$calificacion."</td></tr>";
if($MQ['grado']!=$lastgrado)echo "</table>";
}

espero se entienda o.O
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #8 (permalink)  
Antiguo 25/02/2013, 12:54
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Cita:
Iniciado por stramin Ver Mensaje
yo recorrería todos los grados que sean igual o inferiores al actual ordenandolos por grados, algo así:

SELECT * FROM tabla WHERE grado <= $gradoactual ORDER BY grado

habiendo hecho esto recorres todos los resultados y creas cada tabla a medida que se cambie el valor del grado, para esto guardas el grado en una variable ($lastgrado) y la comparas con la actual:

for($lastgrado=0; $MQ=mysqli_fetch_assoc(...); $lastgrado=$MQ['grado']){
if($MQ['grado']!=$lastgrado)echo "GRADO ".$MQ['grado']."<table>";
echo "<tr><td>".$calificacion."</td></tr>";
if($MQ['grado']!=$lastgrado)echo "</table>";
}

espero se entienda o.O
Osea en lugar del while que tengo
Código PHP:
while ($sqlmysql_fetch_assoc($res));{ 
  echo 
"<table border='1'>"
 
*****
        

 
echo 
"</table>"


Hacer otro for??????
  #9 (permalink)  
Antiguo 25/02/2013, 13:04
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Tablas de acuerdo al resultado de una consulta

puedes usar un for o un while, yo prefiero el for por que hace más cosas en la misma linea :D

y los <table> los dejas en la condicion, de modo que solo se impriman cuando se cambie la tabla, lo he modificado un poco:

Código PHP:
Ver original
  1. for($lastgrado=0; $sql= mysql_fetch_assoc($res); $lastgrado=$sql['grado']){
  2.   if($sql['grado']!=$lastgrado){
  3.     if($lastgrado!=0) echo "</table>"; // cierra la tabla si es que ha cambiado
  4.     echo "<table border='1'>"; // y abre la tabla siguiente
  5.   }
  6.   *****      
  7. }
  8. echo "</table>"; // cierra la última tabla

:D
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #10 (permalink)  
Antiguo 25/02/2013, 13:17
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Tablas de acuerdo al resultado de una consulta

Por favor revisa el manual de PHP, tienes un error muy grave de concepto porque se nota que no sabes usar mysqli fetch assoc.


http://php.net/manual/es/mysqli-result.fetch-assoc.php


Revisa la sintaxis de como se obtienen los valores porque estas haciendo la consulta pero intentas obtener mal el valor.

Código PHP:
$res mysql_query($sql$connection) or die(mysql_error());
$p=$res['Nombre'];
while (
$sqlmysql_fetch_assoc($res));{ 
Ese $p no lo puedes obtener así. De ahí en adelante el resto esta mal.

La opción que te muestra stramin no la entiendo, así que no me atreveria a decir si esta mal o no porque no entiendo como hace la condición de parada del for, pero mas o menos la entiendo y quizas si podria funcionar.
__________________
Blog de humor http://elcuasatar.net63.net/
  #11 (permalink)  
Antiguo 25/02/2013, 13:22
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Código PHP:
<?php
$grado
=$row_alumnos['grado'];
for (
$i=1$i<=$grado$i++){ 
$sql=sprintf("SELECT * FROM calificar .......");
$res mysql_query($sql$connection) or die(mysql_error());
/*while ($sql= mysql_fetch_assoc($res));{ 
  echo "<table border='1'>"; 

$m= $res["Nombre"];
    echo "<tr>"; 
      
               echo "<td> Grado</td>"; 
              
                 echo "</tr>"; 
                    echo "/n"; 
                 
        

 
echo "</table>"; */
Quite el while para sustituirlo por eso
for($lastgrado=0;  
    
$sqlmysql_fetch_assoc($res);
    
$lastgrado=$sql['grado']){
  if(
$sql['grado']!=$lastgrado){
    if(
$lastgrado!=0) echo "</table>"// cierra la tabla si es que ha cambiado 
    
echo "<table border='1'>"// y abre la tabla siguiente
  
}
echo 
"<td> Grado</td>";    [COLOR="Red"]en esta parte irían mis tr y td??????[/COLOR]
}
echo 
"</table>";
}  
?>
  #12 (permalink)  
Antiguo 25/02/2013, 13:35
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Tablas de acuerdo al resultado de una consulta

Código PHP:
<?php
$grado
=$row_alumnos['grado']; //esto de donde sale?

$sql=sprintf("SELECT * FROM calificar ......."); 
$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>"// cierra la tabla si es que ha cambiado  
    
echo "<table border='1'>"// y abre la tabla siguiente 
  

  echo 
"<tr><td> Grado ".$sql['grado']."</td></tr>"// si, aqui van

echo 
"</table>"
?>
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #13 (permalink)  
Antiguo 25/02/2013, 13:53
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Cita:
Iniciado por stramin Ver Mensaje
Código PHP:
<?php
$grado
=$row_alumnos['grado']; //esto de donde sale?

$sql=sprintf("SELECT * FROM calificar ......."); 
$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>"// cierra la tabla si es que ha cambiado  
    
echo "<table border='1'>"// y abre la tabla siguiente 
  

  echo 
"<tr><td> Grado ".$sql['grado']."</td></tr>"// si, aqui van

echo 
"</table>"
?>
Código PHP:
<?php
$grado
=$row_alumnos['grado'];
for (
$i=1$i<=$grado$i++){ 
$sql=sprintf("SELECT * FROM calificaciones Where matricula='%s' "$_SESSION['mivariabledesesion']);
$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>"// cierra la tabla si es que ha cambiado 
    
echo "<table border='1'>"// y abre la tabla siguiente
  
}
  echo 
"<tr><td> Grado ".$sql['grado']."</td>";   
  echo 
"<td> Materia ".$sql['materia']."</td>";  
echo 
"<td> Parcial 1 ".$sql['parcial1']."</td></tr>";   
}
echo 
"</table>";
}  
?>

Arroja lo siguiente

Grado 1 Materia Matematicas Parcial 1 10
Grado 2 Materia Español Parcial 1 7
Grado 3 Materia Ciencias Parcial 1 9
Grado 4 Materia Fisica Parcial 1 8
Grado 1 Materia Quimica Parcial 1 10



Pero hace 4 veces la misma tabla
Yo necesito que salga la tabla 1 solo con las calificaciones de 1

la dos solo con las calificaciones de 2
asi hasta llegar a la 4
  #14 (permalink)  
Antiguo 25/02/2013, 13:56
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Tablas de acuerdo al resultado de una consulta

no se están ordenando los resultados, fijate en la consulta que puse más arriba:

SELECT * FROM tabla WHERE grado <= $gradoactual ORDER BY grado

o sea en tu caso sería:

$sql="SELECT * FROM calificaciones Where matricula='".$_SESSION['mivariabledesesion']."' AND grado <= ".$grado." ORDER BY grado ";
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #15 (permalink)  
Antiguo 25/02/2013, 14:03
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Código PHP:
<?php
$grado
=$row_alumnos['grado'];
for (
$i=1$i<=$grado$i++){ 
$sql=sprintf("SELECT * FROM calificaciones Where grado <= $grado and rfcalumno='%s' order by grado"$_SESSION['mivariabledesesion']);
$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>"// cierra la tabla si es que ha cambiado 
    
echo "<table border='1'>"// y abre la tabla siguiente
  
}
  echo 
"<tr><td> Grado ".$sql['grado']."</td>";   
  echo 
"<td> Materia ".$sql['materia']."</td>";  
echo 
"<td> Parcial 1 ".$sql['parcial1']."</td></tr>";   
  echo 
"/n"
}
echo 
"</table>";
}  
?>
Ya le agregue a mi consultan lo que le faltaba me queda asi
Grado 1 Materia Matemáticas Parcial 1 10
Grado 1 Materia Quimica Parcial 1 10

Grado 2 Materia Español Parcial 1 7

Grado 3 Materia Ciencias Parcial 1 9

Grado 4 Materia Fisica Parcial 1 8



Pero De nuevo lo hace 4 veces
  #16 (permalink)  
Antiguo 25/02/2013, 14:07
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

quite esta linea for ($i=1; $i<=$grado; $i++){
y ya no se repiten trabajare en esto si me vuelvo a enredar en algo preguntare por aquí gracias a los dos
  #17 (permalink)  
Antiguo 25/02/2013, 16:19
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Tengo otra interrogante ya salen las tablas como deben de ir... ahora bien como podría sacar el promedio por semestre...
ammm creo que debo de sumar tados los parciales del semestre 1 por ejemplo pero como sé entre que dividir...(osea como se que hay 5 calificaciones por decir del semestre 1)
como podría sumar y dividir entre el total por semestre
  #18 (permalink)  
Antiguo 25/02/2013, 16:37
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Otra cosa como puedo evitar que se duplicen mis titulos.... es decir en semestre 2 tengo 3 materias que solo salga una vez los titulos y no las 3 veces
lo estoy organizando asi
Código PHP:
<?php
$grado
=$row_alumnos['grado'];
/*for ($i=1; $i<=$grado; $i++){ */
$sql=sprintf("SELECT * FROM calificaciones Where grado <= $grado and matricula='%s' order by grado"$_SESSION['mivariabledesesion']);
$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>"// cierra la tabla si es que ha cambiado 
    
echo "<table class='normal'>"// y abre la tabla siguiente
  
}
  echo  
"<thead>";
  echo 
"<tr><td> Grado </td>";   
  
  echo 
"<td> Materia </td>";  
echo 
"<td> Parcial 1</td></tr>";   
  echo 
"<br>"
  echo  
"</thead>";

  echo 
"<tr><td> ".$sql['grado']."</td>";   
  
  echo 
"<td>".$sql['materia']."</td>";  
echo 
"<td> ".$sql['parcial1']."</td></tr>";  
}
echo 
"</table>";
/*}  */?>

Sale bien la tabla pero donde existe más de una materia duplica los encabezados
Grado Materia Parcial

como puedo hacer para sacarlos una sola vez no importando el numero de materias
  #19 (permalink)  
Antiguo 25/02/2013, 16:50
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Creo que debo usar un do while pero no me ubico bien como hacerlo :s
  #20 (permalink)  
Antiguo 25/02/2013, 16:55
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Tablas de acuerdo al resultado de una consulta

Cita:
Iniciado por Briss Ver Mensaje
quite esta linea for ($i=1; $i<=$grado; $i++){
y ya no se repiten trabajare en esto si me vuelvo a enredar en algo preguntare por aquí gracias a los dos
hola

podrias mostrar el codigo como lo tienes finalmente, sin modificaciones, el for que tienes esta mal en sintaxis, es por eso que no se repiten
  #21 (permalink)  
Antiguo 25/02/2013, 17:02
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Cita:
Iniciado por informacionsys Ver Mensaje
hola

podrias mostrar el codigo como lo tienes finalmente, sin modificaciones, el for que tienes esta mal en sintaxis, es por eso que no se repiten
Lo tengo asi y ya esta bien muestra las calificaciones por semestre y hace 4 tablas (para el caso de que el alumno curse 4to. semestre)
Código PHP:
<?php
$grado
=$row_alumnos['grado'];
/*for ($i=1; $i<=$grado; $i++){ */Este lo omite sino mostraba la tabla final 4 veces
$sql
=sprintf("SELECT * FROM calificaciones Where grado <= $grado and matricula='%s' order by grado"$_SESSION['mivariabledesesion']);
$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>"// cierra la tabla si es que ha cambiado 
    
echo "<table class='normal'>"// y abre la tabla siguiente
  
}
  
  echo  
"<thead>";
  echo 
"<tr><td> Grado </td>";   
  
  echo 
"<td> Materia </td>";  
echo 
"<td> Parcial 1</td></tr>";   
  echo 
"<br>"
  echo  
"</thead>";

  echo 
"<tr><td> ".$sql['grado']."</td>";   
  
  echo 
"<td>".$sql['materia']."</td>";  
echo 
"<td> ".$sql['parcial1']."</td></tr>";  
}


echo 
"</table>";
/*}  */

?>
Ahora lo que necesito es que los encabezados no se duplique es decir si hay dos materias en el semestre 1 que no salga GRADO , MATERIA, PARCIAL 1 LAS DOS VECES SI NO SOLAMENTE UNA VEZ

PENSE EN ALGO ASI
********

do {
echo "<td>".$sql['materia']."</td>";
echo "<td> ".$sql['parcial1']."</td></tr>";
}

}while $sql= mysql_fetch_assoc($res);
echo "</table>";
Pero no logro que quede

?>[/PHP]
  #22 (permalink)  
Antiguo 25/02/2013, 17:11
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Probe asi tambien
********
Código PHP:
for($lastgrado=0
    
$sqlmysql_fetch_assoc($res);
    
$lastgrado=$sql['grado']){
  if(
$sql['grado']!=$lastgrado){
    if(
$lastgrado!=0) echo "</table>"// cierra la tabla si es que ha cambiado 
    
echo "<table class='normal' >"// y abre la tabla siguiente
  
}
  
  echo  
"<thead>";
  echo 
"<tr><td> Grado </td>";    
  echo 
"<td> Materia </td>";  
echo 
"<td> Parcial 1</td></tr>";   
  echo 
"<br>"
  echo  
"</thead>";
while (
$sqlmysql_fetch_assoc($res));{ 
  echo 
"<tr><td> ".$sql['grado']."</td>";   
  echo 
"<td>".$sql['materia']."</td>";  
echo 
"<td> ".$sql['parcial1']."</td></tr>";  
}

}
echo 
"</table>"
Pero entonces no arroja nada solo los encabezados
  #23 (permalink)  
Antiguo 25/02/2013, 17:45
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Para q no se dupliquen los encabezados movi esta llave
Código PHP:
for($lastgrado=0
    
$sqlmysql_fetch_assoc($res);
    
$lastgrado=$sql['grado']){
  if(
$sql['grado']!=$lastgrado){
    if(
$lastgrado!=0) echo "</table>"// cierra la tabla si es que ha cambiado 
    
echo "<table class='normal' >"// y abre la tabla siguiente
 
}/* esta*/

  
echo  "<thead>";
  echo 
"<tr><td> Grado </td>";    
  echo 
"<td> Materia </td>";  
echo 
"<td> Parcial 1</td></tr>";   
  echo 
"<br>"
  echo  
"</thead>"

aca

Código PHP:
for($lastgrado=0
    
$sqlmysql_fetch_assoc($res);
    
$lastgrado=$sql['grado']){
  if(
$sql['grado']!=$lastgrado){
    if(
$lastgrado!=0) echo "</table>"// cierra la tabla si es que ha cambiado 
    
echo "<table class='normal' >"// y abre la tabla siguiente
 

  
echo  "<thead>";
  echo 
"<tr><td> Grado </td>";    
  echo 
"<td> Materia </td>";  
echo 
"<td> Parcial 1</td></tr>";   
  echo 
"<br>"
  echo  
"</thead>"
}
al final de los títulos....
solo alguien puede orientarme para sacar el promedio de acuerdo a los semestres??????
  #24 (permalink)  
Antiguo 25/02/2013, 19:20
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

No consigo hacer lo del promedio ejemplo:
en 1ro. tengo lo siguiente
Semestre 1

MATERIA PARCIAL 1
Matematicas 10
Quimica 10


Como obtendria el promedio de Matematicas y Quimica...
sé que sumandalos y dividendo ente dos...

Pero como mis datos varian de acuerdo al resultado del for no sé como hacerlo AYUDA por fis
  #25 (permalink)  
Antiguo 25/02/2013, 19:23
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Tablas de acuerdo al resultado de una consulta

Por favor consulta el manual de mysql que tienes muchas funciones para manipular datos numéricos, esfuerzate un poquito.
__________________
Blog de humor http://elcuasatar.net63.net/
  #26 (permalink)  
Antiguo 25/02/2013, 19:27
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Cita:
Iniciado por cuasatar Ver Mensaje
Por favor consulta el manual de mysql que tienes muchas funciones para manipular datos numéricos, esfuerzate un poquito.
si ya lei q puede usar avg por ejemplo...
o hacer una suma y dividir entre el total de datos...

Pero al no ser datos estaticos no me doy una idea de como podría resolverlo
  #27 (permalink)  
Antiguo 25/02/2013, 19:33
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Tablas de acuerdo al resultado de una consulta

Cita:
si ya lei q puede usar avg por ejemplo...
o hacer una suma y dividir entre el total de datos...
Pues tu mismo te has dado la respuesta. ¿Que tienen de común estos datos que quieres promediar? pues que todos son de un mismo semestre.

Puedes agrupar estos datos por arreglos, con sentencias sql o con funciones de arreglos en php que ya te hacen el trabajo por ti.

Blanco y en botella...
__________________
Blog de humor http://elcuasatar.net63.net/
  #28 (permalink)  
Antiguo 25/02/2013, 19:39
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Cita:
Iniciado por cuasatar Ver Mensaje
Pues tu mismo te has dado la respuesta. ¿Que tienen de común estos datos que quieres promediar? pues que todos son de un mismo semestre.

Puedes agrupar estos datos por arreglos, con sentencias sql o con funciones de arreglos en php que ya te hacen el trabajo por ti.

Blanco y en botella...
Blanco y en botella... xD

ammm pues me enredo mucho con los arreglos
estoy probando algo así

Código PHP:
<?php
$grado
=$row_alumnos['grado'];

$sql=sprintf("SELECT * FROM calificaciones Where grado <= $grado and matricula='%s' order by grado"$_SESSION['mivariabledesesion']);
$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 "<table class='normal7' >"// y abre la tabla siguiente
 
echo "<h3><font color='black'>Semestre"." "$sql['grado'];
  echo  
"<thead>";
 
  echo 
"<td width='250'> Materia </td>";  
echo 
"<td> Parcial 1</td>";   
echo 
"<td> Parcial 2</td>"
echo 
"<td> Parcial 3</td></tr>"
  echo 
"<br>"
  echo  
"</thead>";
 }
 

  echo 
"<td bgcolor='#CCCCCC'>".$sql['materia']."</td>";  
echo 
"<td bgcolor='#CCCCCC'> ".$sql['parcial1']."</td>";  
echo 
"<td bgcolor='#CCCCCC'> ".$sql['parcial2']."</td>";  
echo 
"<td bgcolor='#CCCCCC'> ".$sql['parcial3']."</td></tr>";  
$datos = array($sql['parcial1']); 
     
  echo  
array_sum($datos) / count($datos);



echo 
"</table>";


?>

mi duda es como llenar mi array ya que no es fijo....

MATERIA PARCIAL 1
Matematicas 10
Quimica 10

por ejemplo aquí como paso 10 + 10 a mi array y obtengo el total 2




Se que quizá es sencillo pero no logro que me quede
  #29 (permalink)  
Antiguo 26/02/2013, 09:25
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Tablas de acuerdo al resultado de una consulta

Hola Briss, cuasatar tiene razón, no estás logrando mucho por tu cuenta y la idea es que entiendas y aprendas, yo lo haría así, trata de entender lo que estamos haciendo, o sea que no sea solo un copy-paste, he comentado algunas lineas:

Código PHP:
$acumulador=0// En esta variable guardaré una suma de notas
$contador=0// En esta variable guardaré la cantidad de notas

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 "Promedio: ".($acumulador/$contador); // y se muestra el promedio
    
}
    
    echo 
"<h3><font color='black'>Semestre"." "$sql['grado'];
    echo 
"</font></h3>"// Despues de poner un título y cambiar el texto debes cerrar las etiquetas

    
echo "<table class='normal7' >"// y abre la tabla siguiente 

    
echo  "<thead>"
    echo 
"<td width='250'> Materia </td>";   
    echo 
"<td>Parcial 1</td>";
    echo 
"<td>Parcial 2</td>";
    echo 
"<td>Parcial 3</td>";
    echo 
"<td>Promedio</td></tr>";  // he agregado una columna de promedio
    
echo "<br>";
    echo  
"</thead>";

    
$acumulador=0// Como es un grado nuevo reiniciamos el acumulador
    
$contador=0// Como es un grado nuevo reiniciamos también el contador
  




  echo 
"<td bgcolor='#CCCCCC'>".$sql['materia']."</td>";
  echo 
"<td bgcolor='#CCCCCC'> ".$sql['parcial1']."</td>";
  echo 
"<td bgcolor='#CCCCCC'> ".$sql['parcial2']."</td>";
  echo 
"<td bgcolor='#CCCCCC'> ".$sql['parcial3']."</td>";
  
$promedio=($sql['parcial1']+$sql['parcial2']+$sql['parcial3'])/3// Bueno,
  // esto es solo un promedio de las 3 notas parciales
  
echo "<td bgcolor='#CCCCCC'> ".$promedio."</td></tr>";   
  
  
$acumulador+=$promedio// agregamos el promedio al acumulador
  
$contador++; // aumentamos el contador en 1
}
echo 
"</table>";
echo 
"Promedio: ".($acumulador/$contador); // y se muestra el promedio 
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #30 (permalink)  
Antiguo 26/02/2013, 10:49
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: Tablas de acuerdo al resultado de una consulta

Bueno gracias por tu ayuda pero estoy tratando de obtener el promedio por columna y no por fila :S

por eso me enredo porque no se cuantas notas del parcial 1 por semestre hay

Última edición por Briss; 26/02/2013 a las 11:01

Etiquetas: acuerdo, select, tabla, tablas
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 08:43.