Foros del Web » Programando para Internet » PHP »

Relacionar datos / Capturar cambio.

Estas en el tema de Relacionar datos / Capturar cambio. en el foro de PHP en Foros del Web. Hola compañeros, necesito que me echéis una mano, Necesito imprimir una media total de las preguntas, es decir, una media de la pregunta 1, una ...
  #1 (permalink)  
Antiguo 04/06/2012, 00:51
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Relacionar datos / Capturar cambio.

Hola compañeros, necesito que me echéis una mano,

Necesito imprimir una media total de las preguntas, es decir, una media de la pregunta 1, una media de la pregunta 2, una media de la pregunta 3.

Lo que pasa es que las preguntas se repiten entre 1 y 4 veces en cada tabla, porque hay varios centros con esa pregunta.

y Necesito que después de la ULTIMA pregunta de cada número me imprima una fila y me la muestre.

No se relacionar los datos para ir guardando las medias de las preguntas y luego coger todas las preguntas 1 y hacer la media, luego todas las 2 y hacerla.. etc.

Os dejo el código que tengo:

Código PHP:
Ver original
  1. <?php
  2.  include('conex.php');
  3.  
  4.     // SELECCIONAMOS EL ÁMBITO.
  5.     $sql = ("SELECT ambitos.codAmbito, ambitos.descripAmbito FROM ambitos ORDER BY codAmbito");
  6.     $resultados = mysql_query($sql);
  7.  
  8.     //MIENTRAS HAYA ÁMBITO IMPRIME.
  9. while($datos = mysql_fetch_assoc($resultados)) {
  10.    
  11.     // IMPRIMIMOS EL TÍTULO Y ABRIMOS LA TABLA.
  12.     echo "<b>Ambito: </b>".$datos['descripAmbito'];
  13.     echo "<table border=\"1\"><tr><td><b>Centro</b></td><td><b>Numero Pregunta</b></td><td><b>Evaluador1</b></td><td><b>Evaluador2</b></td><td><b>Evaluador3</b></td><td><b>opinPos</b></td><td><b>opinNeg</b></td><td><b>Media</b></td><td><b>Ponderacion</b></td></tr>";
  14.    
  15.     // SELECIONAMOS TODOS LOS DATOS DE ENCUESTAS CUANDO TENGAN ESE CÓDIGO DE AMBITO.
  16.     $sql2 = ("SELECT descripAmbito, descripCentro, encuestas.codCentro, numeroPregunta, evaluador1, evaluador2, evaluador3, opinPos, opinNeg, media
  17.     FROM ambitos, centros, encuestas
  18.     WHERE ambitos.codAmbito = '".$datos['codAmbito']."'
  19.     AND ambitos.codAmbito = encuestas.codAmbito
  20.     AND centros.codCentro = encuestas.codCentro
  21.     ORDER BY encuestas.numeroPregunta");
  22.     $resultados2 = mysql_query($sql2);
  23.        
  24.         // MIENTRAS  HAYA RESULTADOS IMPRIME.
  25.         while($datos2 = mysql_fetch_assoc($resultados2)) {
  26.        
  27.             // CALCULAMOS LA MEDIA (NO NECESARIO SI LA GUARDAMOS EN LA BD).
  28.             $med = round(($datos2['evaluador1'] + $datos2['evaluador2'] + $datos2['evaluador3']) /3);
  29.            
  30.             // SELECIONAMOS LOS PORCENTAJES PARA CALCULAR LA PONDERACIÓN.
  31.             $sql3 = ("SELECT porcentaje FROM ponderaciones WHERE codCentro = '".$datos2['codCentro']."'");
  32.             $resultados3 = mysql_query($sql3);
  33.            
  34.             // MIENTRAS HAYA DATOS EN PONDERACIONES IMPRIME.
  35.             while($datos3 = mysql_fetch_assoc($resultados3)){
  36.                 $ponderacion = round($med * $datos3['porcentaje']);
  37.             }
  38.        
  39.         // SEELECIONAMOS LA MEDIA CUANDO SEA ESE NUMERO DE PREGUNTA EN ESE AMBITO.
  40.         $sql4 = ("SELECT media FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
  41.         $resultados4 = mysql_query($sql4);
  42.            
  43.         // RELLENAMOS LA TABLA CON LOS DATOS   
  44.         echo "<tr>";
  45.         echo "<td>".$datos2['descripCentro']." </td>";
  46.         echo "<td>".$datos2['numeroPregunta']." </td>";
  47.         echo "<td>".$datos2['evaluador1']." </td>";
  48.         echo "<td>".$datos2['evaluador2']." </td>";
  49.         echo "<td>".$datos2['evaluador3']." </td>";
  50.         echo "<td>".$datos2['opinPos']." </td>";
  51.         echo "<td>".$datos2['opinNeg']." </td>";
  52.         echo "<td>".$med."</td>";
  53.         echo "<td>".$ponderacion."</td>";
  54.         echo "</tr>";
  55.            
  56.         }
  57.        
  58.         // CERRAMOS LA TABLA.
  59.         echo "</table>";
  60.         echo "<br>";
  61.  
  62.  
  63. }
  64. ?>


y una foto:





Lo dicho, tiene que coger TODAS las preguntas según el número (todas las 1, todas las 2) y DEPENDIENDO del ÁMBITO. (todas las 1 del ambito 1, todas las 1 del ambito 2).



Espero que me podáis echar una mano... que lo necesito!

Gracias, un saludo.
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #2 (permalink)  
Antiguo 04/06/2012, 04:43
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Relacionar datos / Capturar cambio.

Quisiera ayudarte amigo, pero no entiendo nadaa..
Explicate mejor
  #3 (permalink)  
Antiguo 04/06/2012, 05:05
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Relacionar datos / Capturar cambio.

Hola @gldelossantos de primeras muchas gracias.

Ya mas o menos he encontrado la manera.. pero ahora tengo problemas para mostrarlo como yo quiero.

Tengo esta base de datos:


Tengo que obtener la MEDIA_TOTAL de cada pregunta (de cada ámbito), es decir la media total para pregunta1, media total para pregunta2 etc..

La obtengo así:

Código PHP:
Ver original
  1. // CONTAMOS EL NÚMERO DE REGISTROS PARA DIVIDIR.
  2.             $sql4 = ("SELECT COUNT(*) FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
  3.             $resultados4 = mysql_query($sql4);
  4.             while($datos4 = mysql_fetch_array($resultados4)) {
  5.                 $cuenta = $datos4[0];
  6.             }
  7.            
  8.             // SELECIONAMOS Y SUMAMOS LA MEDIA CUANDO SEA ESE NUMERO DE PREGUNTA EN ESE AMBITO.
  9.             $sql5 = ("SELECT SUM(media) as media FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
  10.             $resultados5 = mysql_query($sql5);
  11.             while($datos5 = mysql_fetch_array($resultados5)){
  12.                     $mediatotal = $datos5[0]/$cuenta;
  13.             }

(recordemos que la media son, la suma de los datos, dividido entre el numero de datos que hay)

es decir, con la primera consulta:

SELECT COUNT(*) FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'

Cuento cuantos datos me saca para saber entre cuanto tengo que dividir luego la media, filtrando para que sea ESA PREGUNTA en ESE ÁMBITO.


con la segunda consulta:

SELECT SUM(media) as media FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'

cojo todas las medias de ESA PREGUNTA y de ESE ÁMBITO y las sumo.

Después hago la operación para que me divida la media:
$mediatotal = $datos5[0]/$cuenta;

Así obtengo la media_total de la Pregunta1 ambito1, pregunta2 ambito1, etcetc..


El problema es que ahora tengo que mostrar las medias y me gustaría que saliese en esta tabla



Despues de las filas de pregunta1 una fila que fuese, Media total pregunta 1, despues de todas las preguntas 2 una fila que fuese, Media total pregunta 2,
y así sucesivamente.

El caso es que voy imprimiendo fila a fila y nose como hacerlo..

el código que tengo ahora es:

Código PHP:
Ver original
  1. <?php
  2.  include('conex.php');
  3.  
  4.     // SELECCIONAMOS EL ÁMBITO.
  5.     $ambitos = ("SELECT ambitos.codAmbito, ambitos.descripAmbito FROM ambitos ORDER BY codAmbito");
  6.     $resuambitos = mysql_query($ambitos);
  7.  
  8.     echo "<table border=\"1\"><tr><td> Datos Encuesta </td> <td> Medias Totales </td></tr><tr><td>";
  9.    
  10.     // MIENTRAS HAYA ÁMBITO IMPRIME.
  11. while($datos = mysql_fetch_assoc($resuambitos)) {
  12.  
  13.     // IMPRIMIMOS EL TÍTULO Y ABRIMOS LA TABLA.
  14.     echo "<b>Ambito: </b>".$datos['descripAmbito'];
  15.     echo "<table border=\"1\"><tr><td><b>Centro</b></td><td><b>Numero Pregunta</b></td><td><b>Evaluador1</b></td><td><b>Evaluador2</b></td><td><b>Evaluador3</b></td><td><b>opinPos</b></td><td><b>opinNeg</b></td><td><b>Media</b></td><td><b>Ponderacion</b></td></tr>";
  16.    
  17.     // SELECIONAMOS TODOS LOS DATOS DE ENCUESTAS CUANDO TENGAN ESE CÓDIGO DE AMBITO.
  18.     $encuestas = ("SELECT descripAmbito, descripCentro, encuestas.codAmbito, encuestas.codCentro, numeroPregunta, evaluador1, evaluador2, evaluador3, opinPos, opinNeg, media
  19.     FROM ambitos, centros, encuestas
  20.     WHERE ambitos.codAmbito = '".$datos['codAmbito']."'
  21.     AND ambitos.codAmbito = encuestas.codAmbito
  22.     AND centros.codCentro = encuestas.codCentro
  23.     ORDER BY encuestas.numeroPregunta");
  24.     $resuencuestas = mysql_query($encuestas);
  25.        
  26.         // MIENTRAS  HAYA RESULTADOS IMPRIME.
  27.         while($datos2 = mysql_fetch_assoc($resuencuestas)) {
  28.                    
  29.             // SELECIONAMOS LOS PORCENTAJES PARA CALCULAR LA PONDERACIÓN.
  30.             $porcentajes = ("SELECT porcentaje FROM ponderaciones WHERE codCentro = '".$datos2['codCentro']."'");
  31.             $resuporcentajes = mysql_query($porcentajes);
  32.            
  33.             // MIENTRAS HAYA DATOS EN PONDERACIONES IMPRIME.
  34.             while($datos3 = mysql_fetch_assoc($resuporcentajes)){
  35.                 $ponderacion = round($datos2['media'] * $datos3['porcentaje']);
  36.             }
  37.                    
  38.  
  39.         // RELLENAMOS LA TABLA CON LOS DATOS.
  40.         echo "<tr>";
  41.         echo "<td>".$datos2['descripCentro']." </td>";
  42.         echo "<td>".$datos2['numeroPregunta']." </td>";
  43.         echo "<td>".$datos2['evaluador1']." </td>";
  44.         echo "<td>".$datos2['evaluador2']." </td>";
  45.         echo "<td>".$datos2['evaluador3']." </td>";
  46.         echo "<td>".$datos2['opinPos']." </td>";
  47.         echo "<td>".$datos2['opinNeg']." </td>";
  48.         echo "<td>".$datos2['media']."</td>";
  49.         echo "<td>".$ponderacion."</td>";
  50.         echo "</tr>";
  51.    
  52.    
  53.             // CONTAMOS EL NÚMERO DE REGISTROS PARA DIVIDIR.
  54.             $sql4 = ("SELECT COUNT(*) FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
  55.             $resultados4 = mysql_query($sql4);
  56.             while($datos4 = mysql_fetch_array($resultados4)) {
  57.                 $cuenta = $datos4[0];
  58.             }
  59.            
  60.             // SELECIONAMOS Y SUMAMOS LA MEDIA CUANDO SEA ESE NUMERO DE PREGUNTA EN ESE AMBITO.
  61.             $sql5 = ("SELECT SUM(media) as media FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
  62.             $resultados5 = mysql_query($sql5);
  63.             while($datos5 = mysql_fetch_array($resultados5)){
  64.                     $mediatotal = $datos5[0]/$cuenta;
  65.             }
  66.    
  67.         }
  68.        
  69.         // CERRAMOS LA TABLA.
  70.         echo "</table>";
  71.         echo "<br>";
  72.  
  73. }
  74.  
  75. // IMPRIMIMOS LAS MEDIAS TOTALES.
  76. echo "</td><td> aqui va la tabla de las medias totales</td>";
  77. echo "</tr></table>";
  78. ?>


Me serviría mostrar despues de cada numero de preguntas (es decir, despues de las 4 pregunta1, luego despues de las 4 pregunta2) mostrar una fila que fuese, Media Total Pregunta 1 : 'x' .

o tambien,

mostrar esos datos para que me muestre una tabla por cada ámbito con 1 fila por cada pregunta en la que muestre el número de pregunta y la media total.



Si no entiendes especifícame mejor que partes son las que no entiendes a ver como te podría explicar mejor, ok?
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #4 (permalink)  
Antiguo 04/06/2012, 05:15
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Relacionar datos / Capturar cambio.

Ok, entiendo que quiere dividir esos datos y mostrarlo en tablas diferentes, por media total, media ambito etc?

es correcto?
  #5 (permalink)  
Antiguo 04/06/2012, 05:35
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Relacionar datos / Capturar cambio.

quiero hacer esto, a ver si así se te aclara del todo:





Ahí ves las dos opciones que proponía arriba, me gustaría mas hacerlo de la primera manera, pero si no es posible o tal, de la segunda forma también me vale.

Muchas gracias por tu tiempo.
Un saludo.
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #6 (permalink)  
Antiguo 04/06/2012, 05:40
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Relacionar datos / Capturar cambio.

Ok ya comprendi, ahora solo es cuestion de como tiene la base de datos, si es posible muestra tu tabla..
  #7 (permalink)  
Antiguo 04/06/2012, 05:43
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Relacionar datos / Capturar cambio.

Cita:
Iniciado por gldelossantos Ver Mensaje
Ok ya comprendi, ahora solo es cuestion de como tiene la base de datos, si es posible muestra tu tabla..



Necesitas algo más detallado? o solo los campos?
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #8 (permalink)  
Antiguo 04/06/2012, 05:50
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 13 años
Puntos: 28
Respuesta: Relacionar datos / Capturar cambio.

un par de preguntas... quisas no he leido bien el codigo...

para hacer la media porque no usas AVG()? y para sabar la media de las preguntas numero 1 puedes usar AVG () y un GROUP BY numeroPregunta... lo que quieres es la media de las medias verdad... o la media por acada evaluador?

Última edición por jamie_88; 04/06/2012 a las 05:57
  #9 (permalink)  
Antiguo 04/06/2012, 06:07
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Relacionar datos / Capturar cambio.

La media por cada evaluador la tengo guardada ya en el campo MEDIA de la BD.

La inserto cuando inserto el resto de los datos de la manera:

(evaluador1 + evaluador2 + evaluador3 / 3)


Y lo que necesito es la media de las medias de cada pregunta en cada ambito.

Es decir, sumar todas las medias obtenidas de la BD, pero eso ya lo tengo, lo hago así:

Código PHP:
Ver original
  1. // CONTAMOS EL NÚMERO DE REGISTROS PARA DIVIDIR.
  2.             $sql4 = ("SELECT COUNT(*) FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
  3.             $resultados4 = mysql_query($sql4);
  4.             while($datos4 = mysql_fetch_array($resultados4)){
  5.                 $cuenta = $datos4[0];
  6.             }
  7.            
  8.             // SELECIONAMOS Y SUMAMOS LA MEDIA CUANDO SEA ESE NUMERO DE PREGUNTA EN ESE AMBITO.
  9.             $sql5 = ("SELECT SUM(media) as media FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
  10.             $resultados5 = mysql_query($sql5);
  11.             while($datos5 = mysql_fetch_array($resultados5)){
  12.                     $mediatotal = $datos5[0]/$cuenta;
  13.             }


Lo que necesito es mostrarlo como os he dicho en las imágenes... y nose como :S
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #10 (permalink)  
Antiguo 04/06/2012, 08:22
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 13 años
Puntos: 28
Respuesta: Relacionar datos / Capturar cambio.

prueba con algo asi...

esta deberia ser una manera simple de controlar en que pregunta estas (arregla como quieres que se vea la tabla y el resto)...

Código PHP:
<?php
//con esto obtienes la media de las medias por cada pregunta
$sql4 mysql_query("SELECT AVG(media) as MediaTotal, numeroPregunta FROM encuestas GROUP BY numeroPregunta Order By numeroPregunta");
            
           
//esto es para que se coloque despues de la ultima pregunta por numero
//no he entendido muy bien tu codigo, espero que tu si llegues a entenderme XD...
$pregunta=1;
while(
$datos2 mysql_fetch_assoc($resultados2)) {
        
            
//...
            
        // RELLENAMOS LA TABLA CON LOS DATOS
        
if($pregunta!=$datos2['numeroPregunta'])//esta es una manera muy sensilla de controlar si ya pasaste a la siguente pregunta
        
{
            
$mediatotal=mysql_fetch_array($sql4);//controlo que te de el dato justo 
            
echo "<tr>";
            echo 
"<td>Media Pregunta ".$pregunta."</td>";//$pregunta deberia ser igual a $mediatotal["numeroPregunta"], si no son iguales el error esta dos lineas arriba
            
echo "<td>" .$mediatotal["MediaTotal"]. "</td></tr>";
            
$pregunta=$datos2['numeroPregunta'];
        }   
        echo 
"<tr>";
        echo 
"<td>".$datos2['descripCentro']." </td>";
        echo 
"<td>".$datos2['numeroPregunta']." </td>";
        echo 
"<td>".$datos2['evaluador1']." </td>";
        echo 
"<td>".$datos2['evaluador2']." </td>";
        echo 
"<td>".$datos2['evaluador3']." </td>";
        echo 
"<td>".$datos2['opinPos']." </td>";
        echo 
"<td>".$datos2['opinNeg']." </td>";
        echo 
"<td>".$med."</td>";
        echo 
"<td>".$ponderacion."</td>";
        echo 
"</tr>";
         
        }
        
        
// CERRAMOS LA TABLA.
        
echo "</table>";
?>
  #11 (permalink)  
Antiguo 04/06/2012, 08:34
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Relacionar datos / Capturar cambio.

oNefl0w189 una pregunta, cuantas variables de media tienes en el campo media, porque tu solucion es agrupar los datos al ser mostrado... ese es el detalle de lo que quieres hacer..
  #12 (permalink)  
Antiguo 04/06/2012, 12:25
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Relacionar datos / Capturar cambio.

Cita:
Iniciado por gldelossantos Ver Mensaje
oNefl0w189 una pregunta, cuantas variables de media tienes en el campo media, porque tu solucion es agrupar los datos al ser mostrado... ese es el detalle de lo que quieres hacer..
El problema es que no se cuantas tengo...
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #13 (permalink)  
Antiguo 05/06/2012, 05:09
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Relacionar datos / Capturar cambio.

ya lo he conseguido chicos, al final no aplique tu formula jamie_88, porque al jefe le gustaba más el otro diseño una vez visto...

Aún así os lo agradezco muchísimo, me habéis sido muy útiles, gracias por colaborar!


PD: Os dejo el código final.

Código PHP:
Ver original
  1. <?php
  2.  include('conex.php');
  3.  echo "<link rel=\"StyleSheet\" href=\"style.css\" type=\"text/css\" media=\"screen\">";
  4.  
  5.     // SELECCIONAMOS EL ÁMBITO.
  6.     $ambitos = ("SELECT ambitos.codAmbito, ambitos.descripAmbito FROM ambitos ORDER BY codAmbito");
  7.     $resuambitos = mysql_query($ambitos);
  8.  
  9.  
  10.    
  11.     // MIENTRAS HAYA ÁMBITO IMPRIME.
  12. while($datos = mysql_fetch_assoc($resuambitos)) {
  13.  
  14.     $mt = array();
  15.  
  16.     echo "<table border=\"0\" class=\"reportes\"><tr><td> <b>Datos Encuesta.<br>  Ambito: </b>  ".$datos['descripAmbito']."  </td> <td> <b>Medias Totales. <br>Ambito: </b> ".$datos['descripAmbito']."   </td></tr><tr><td>";
  17.     // IMPRIMIMOS EL TÍTULO Y ABRIMOS LA TABLA.
  18.     echo "<br>";
  19.     echo "<table border=\"1\" class=\"encuestas\"><tr><td><b>Centro</b></td><td><b>Numero Pregunta</b></td><td><b>Eval1</b></td><td><b>Eval2</b></td><td><b>Eval3</b></td><td><b>opinPos</b></td><td><b>opinNeg</b></td><td><b>Media</b></td><td><b>Ponderacion</b></td></tr>";
  20.    
  21.     // SELECIONAMOS TODOS LOS DATOS DE ENCUESTAS CUANDO TENGAN ESE CÓDIGO DE AMBITO.
  22.     $encuestas = ("SELECT descripAmbito, descripCentro, encuestas.codAmbito, encuestas.codCentro, numeroPregunta, evaluador1, evaluador2, evaluador3, opinPos, opinNeg, media, ponderacion
  23.     FROM ambitos, centros, encuestas
  24.     WHERE ambitos.codAmbito = '".$datos['codAmbito']."'
  25.     AND ambitos.codAmbito = encuestas.codAmbito
  26.     AND centros.codCentro = encuestas.codCentro
  27.     ORDER BY encuestas.numeroPregunta");
  28.     $resuencuestas = mysql_query($encuestas);
  29.        
  30.         // MIENTRAS  HAYA RESULTADOS IMPRIME.
  31.         while($datos2 = mysql_fetch_assoc($resuencuestas)) {
  32.                    
  33.  
  34.         $media = round($datos2['media'],2);
  35.         $ponderacion = round($datos2['ponderacion'],2);
  36.                    
  37.         // RELLENAMOS LA TABLA CON LOS DATOS.
  38.         echo "<tr>";
  39.         echo "<td align=\"left\">".$datos2['descripCentro']." </td>";
  40.         echo "<td align=\"center\">".$datos2['numeroPregunta']." </td>";
  41.         echo "<td align=\"center\">".$datos2['evaluador1']." </td>";
  42.         echo "<td align=\"center\">".$datos2['evaluador2']." </td>";
  43.         echo "<td align=\"center\">".$datos2['evaluador3']." </td>";
  44.         echo "<td align=\"center\"><textarea rows=\"5\" cols=\"25\" disabled>".$datos2['opinPos']." </textarea></td>";
  45.         echo "<td align=\"center\"><textarea rows=\"5\" cols=\"25\" disabled>".$datos2['opinNeg']." </textarea></td>";
  46.         echo "<td align=\"center\">".$media."</td>";
  47.         echo "<td align=\"center\">".$ponderacion."</td>";
  48.         echo "</tr>";
  49.        
  50.  
  51.    
  52.    
  53.             // CONTAMOS EL NÚMERO DE REGISTROS PARA DIVIDIR.
  54.             $sql4 = ("SELECT COUNT(*) FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
  55.             $resultados4 = mysql_query($sql4);
  56.             while($datos4 = mysql_fetch_array($resultados4)){
  57.                 $cuenta = $datos4[0];
  58.             }
  59.            
  60.             // SELECIONAMOS Y SUMAMOS LA MEDIA CUANDO SEA ESE NUMERO DE PREGUNTA EN ESE AMBITO.
  61.             $sql5 = ("SELECT SUM(ponderacion) as resultado FROM encuestas WHERE numeroPregunta = '".$datos2['numeroPregunta']."' AND codAmbito = '".$datos2['codAmbito']."'");
  62.             $resultados5 = mysql_query($sql5);
  63.             while($datos5 = mysql_fetch_array($resultados5)){
  64.                     $mediatotal = round($datos5[0],2);
  65.                    
  66.                    
  67.             }
  68.  
  69.         $mt [$datos2['numeroPregunta']]= $mediatotal;  
  70.         }
  71.  
  72.         // CERRAMOS LA TABLA.
  73.         echo "</table>";
  74.         echo "<br>";
  75.        
  76. // IMPRIMIMOS LAS MEDIAS TOTALES.
  77. echo "</td><td><div id=\"flotante\">";
  78. echo "<table border=\"1\" class=\"encuestas\">";
  79. echo "<br>";
  80. echo "<tr><td><b>Numero Pregunta </b></td><td><b>Resultado</b></td></tr>";
  81. foreach ($mt as $numpre => $mediattl){
  82. echo "<tr><td>".$numpre."</td><td>".$mediattl."</td></tr>";
  83. }
  84. echo "</table>";
  85. echo "</div></td>";
  86. echo "</tr><tr><td colspan=\"2\"></td></tr></table>";
  87. echo "<br>";
  88. }
  89.  
  90. ?>
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)

Etiquetas: mysql, relacionar, 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 10:04.