Foros del Web » Programando para Internet » PHP »

Mostrar Medias de varios datos cogidos dinamicamente

Estas en el tema de Mostrar Medias de varios datos cogidos dinamicamente en el foro de PHP en Foros del Web. Buenos dias, tengo un problemilla, es al mostrar los datos, no se porqué no me muestra los resultados como debería. Tengo 17 ambitos, asique debería ...
  #1 (permalink)  
Antiguo 31/05/2012, 05:27
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Mostrar Medias de varios datos cogidos dinamicamente

Buenos dias, tengo un problemilla, es al mostrar los datos, no se porqué no me muestra los resultados como debería.

Tengo 17 ambitos, asique debería mostrarme 17 tablas

lo hago mediante este bucle for:
Código:
for ($i = 1; $i < 18; $i++){ }
ok, ahora hago la consulta en la que selecciono los datos dependiendo del codAmbito el cual tiene el valor de $i.

Código:
$sql = 	mysql_query("SELECT descripAmbito, descripCentro, numeroPregunta, evaluador1, evaluador2, evaluador3, opinPos, opinNeg
	FROM ambitos, centros, encuestas
	WHERE 	encuestas.codAmbito = $i 
	AND	ambitos.codAmbito = encuestas.codAmbito
	AND	centros.codCentro = encuestas.codCentro
	ORDER BY encuestas.numeroPregunta");

ahora hago una consulta para que me muestre el nombre del ambito antes de cada tabla con el contenido, en la que vuelvo a coger el nombre del ambito con el $i.

Código:
	$sql2 = mysql_query("SELECT descripAmbito FROM ambitos WHERE codAmbito = $i");

	while ($nombre = mysql_fetch_row($sql2)){
	echo "<b>Ambito:</b> $nombre[0]<br><br>";
	}
y ahora creo la tabla antes de empezar a rellenar la tabla, la relleno, y cierro la tabla.

Código:
	echo "<table border=\"1\"><tr><td>codAmbito</td><td>codCentro</td><td>numeroPregunta</td>
			<td>evaluador1</td><td>evaluador2</td><td>evaluador3</td>
			<td>opinPos</td><td>opinNeg</td><td>Media</td><td>Ponderacion</td></tr>";
	while ($campo = mysql_fetch_row($sql)){ 
	$media = round(($campo[4] + $campo[5] + $campo[6]) /3);
	$ponderacion = round($media * 2);
	echo "<tr>";
	echo "<td>$campo[0] 	</td>";
	echo "<td>$campo[1] 	</td>";
	echo "<td>$campo[2] 	</td>";
	echo "<td>$campo[3] 	</td>";
	echo "<td>$campo[4] 	</td>";
	echo "<td>$campo[5] 	</td>";
	echo "<td>$campo[6] 	</td>";
	echo "<td>$campo[7] 	</td>";
	echo "<td>$media    	</td>";
	echo "<td>$ponderacion 	</td>";
	echo "</tr>";
	}
	echo "<br><br>";



Mi pregunta ahora es.. ¿porque pasa esto?



Como podeis ver, me muestra un titulo, no me muestra nada, me muestra otro titulo con la tabla que deberia ir junto al titulo anterior.. etc, vamos lo que se ve en la foto.
(En la foto no se siguen rellenando tablas ni poniendo títulos porque no tengo más que 2 ambitos creados de momento).



PD: Dejo el código completo:

Código PHP:
Ver original
  1. <?php
  2.     include('conex.php');
  3.    
  4.     for ($i = 1; $i < 18; $i++){
  5.    
  6.     $sql =  mysql_query("SELECT descripAmbito, descripCentro, numeroPregunta, evaluador1, evaluador2, evaluador3, opinPos, opinNeg
  7.     FROM ambitos, centros, encuestas
  8.     WHERE   encuestas.codAmbito = $i
  9.         AND ambitos.codAmbito = encuestas.codAmbito
  10.         AND centros.codCentro = encuestas.codCentro
  11.     ORDER BY encuestas.numeroPregunta");
  12.    
  13.     $sql2 = mysql_query("SELECT descripAmbito FROM ambitos WHERE codAmbito = $i");
  14.  
  15.     while ($nombre = mysql_fetch_row($sql2)){
  16.     echo "<b>Ambito:</b> $nombre[0]<br><br>";
  17.     }
  18.    
  19.     echo "<table border=\"1\"><tr><td>codAmbito</td><td>codCentro</td><td>numeroPregunta</td>
  20.             <td>evaluador1</td><td>evaluador2</td><td>evaluador3</td>
  21.             <td>opinPos</td><td>opinNeg</td><td>Media</td><td>Ponderacion</td></tr>";
  22.     while ($campo = mysql_fetch_row($sql)){
  23.     $media = round(($campo[4] + $campo[5] + $campo[6]) /3);
  24.     $ponderacion = round($media * 2);
  25.     echo "<tr>";
  26.     echo "<td>$campo[0]     </td>";
  27.     echo "<td>$campo[1]     </td>";
  28.     echo "<td>$campo[2]     </td>";
  29.     echo "<td>$campo[3]     </td>";
  30.     echo "<td>$campo[4]     </td>";
  31.     echo "<td>$campo[5]     </td>";
  32.     echo "<td>$campo[6]     </td>";
  33.     echo "<td>$campo[7]     </td>";
  34.     echo "<td>$media        </td>";
  35.     echo "<td>$ponderacion  </td>";
  36.     echo "</tr>";
  37.     }
  38.     echo "<br><br>";
  39.     }
  40. ?>
__________________
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 31/05/2012, 08:52
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Problema al mostrar datos

no se ve nada de la foto...
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 31/05/2012, 09:52
 
Fecha de Ingreso: julio-2011
Ubicación: Arauco
Mensajes: 10
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema al mostrar datos

Cita:
Iniciado por Hidek1 Ver Mensaje
no se ve nada de la foto...
Aquí tienes la imagen en grande:

  #4 (permalink)  
Antiguo 31/05/2012, 11:08
 
Fecha de Ingreso: agosto-2008
Ubicación: Canarias, España - París, Francia
Mensajes: 105
Antigüedad: 15 años, 8 meses
Puntos: 3
Respuesta: Problema al mostrar datos

Para que haces eso del ámbito?
  #5 (permalink)  
Antiguo 31/05/2012, 13:07
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Problema al mostrar datos

Cita:
Iniciado por rutame Ver Mensaje
Para que haces eso del ámbito?
Porque tienen que salirme las tablas segun el ambito que sea, es decir

para el ambito "x"
codCentro | numPregunta | evaluador1 | evaluador2 | evaluador3
1--------------- 1---------10-----------48--------------33
2--------------- 1----------10-----------48--------------33
3--------------- 1----------10-----------48--------------33
1--------------- 2---------10-----------48--------------33
2--------------- 2-------10-----------48--------------33
3--------------- 2----------10-----------48--------------33

para el ambito "y" , lo mismo otra tabla con los valores. si os fijais no se ordena por codCentro, sino por numPregunta.

etc..

entonces tengo que mostrarlos por ambito,
__________________
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 01/06/2012, 01:31
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Problema al mostrar datos

Hola chicos, ya conseguí lo que necesitaba, después de comerme el coco y darle mil vueltas al asunto.

Ahora necesito sacar la media delas preguntas , es decir,
Ambito A: Pregunta 1 - Media 10.
_______ Pregunta 2 - Media 5.


Lo que pasa es que en Ambito A - la pregunta 1 la tienen 4 centros, entonces hay 4 lineas, y tengo que coger TODAS las notas de esas 4 lineas, sumarlas y dividirlas entre el numero de valores que sea.

Quien me puede echar una mano? xq esto ya si que no se por donde agarrarlo xD




El codigo ha cambiado un poquito... juzgar vosotros mismos xD

Código:
<?php
 include('conex.php');
 
	$sql = ("SELECT ambitos.codAmbito, ambitos.descripAmbito FROM ambitos ORDER BY codAmbito");
	$resultados = mysql_query($sql);

while($datos = mysql_fetch_assoc($resultados)) {
	
	echo "<b>Ambito: </b>".$datos['descripAmbito'];
	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>";
	
	$sql2 = ("SELECT descripAmbito, descripCentro, numeroPregunta, evaluador1, evaluador2, evaluador3, opinPos, opinNeg
	FROM ambitos, centros, encuestas
	WHERE ambitos.codAmbito = '".$datos['codAmbito']."'
	AND ambitos.codAmbito = encuestas.codAmbito
	AND centros.codCentro = encuestas.codCentro
	ORDER BY encuestas.numeroPregunta");

	$resultados2 = mysql_query($sql2);
	
	while($datos2 = mysql_fetch_assoc($resultados2)) {
		$media = round(($datos2['evaluador1'] + $datos2['evaluador2'] + $datos2['evaluador3']) /3);
		$ponderacion = round($media * 2);
		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>".$media."</td>";
		echo "<td>".$ponderacion."</td>";
		echo "</tr>";
	}
	echo "</table>";
	echo "<br>";

}

?>

PD: Si no me he explicado bien en lo que necesito avisarme y os lo intento aclarar mejor.
__________________
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? :)
  #7 (permalink)  
Antiguo 01/06/2012, 01:56
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Problema al mostrar datos

Como no se si me he explicado bien en lo que necesito voy a detallarlo un poco más.

Mirad, esto es lo que tengo hasta ahora



Por cada ámbito me muestra una tabla con sus resultados.



Ahora necesito que me coja las medias de cada ámbito, cuando la pregunta sea EL MISMO numero, es decir, el 1 que os he señalado en la foto sería todas las preguntas que hay que coger, pues todas están dentro del ámbito 'Dirección' y todas son la pregunta 1.

Y de esas preguntas debería coger, el 2 que os he señalado, las medias ya calculadas de los 3 evaluadores que son el campo media, y debería sumarla y dividirla entre el numero de respuestas que haya.


Es decir en ese ejemplo debería coger,


Ámbito : Dirección
Numero Pregunta : 1
Centros: Gerencia de Atención Primaria Valladolid Este , Gerencia Salud de Área Valladolid, Hospital Clinico Universitario Valladolid , Hospital Medina del Campo.
Medias: 20, 20, 20 y 20. (las medias de cada uno de esos centros en ESA pregunta).


y debería mostrarme:

Ambito: Dirección
Media total: 20

Coincide, porque los 3 valores tienen de media 20 xd, sería:
(media1 + media2 + media3 + media4)/numerodeCentrosquetienenesapregunta



Y luego más de lo mismo, pero para la pregunta 2 del Ambito direccion, y asi con todas las preguntas de ese ambito, luego lo mismo pero en el siguiente ambito.




Debo recalcar que NO en todos los ámbitos están todos los centros, os dejo otra imagen de ejemplo:




Si os fijáis en esos dos ámbitos, veréis que en uno ese ámbito solo lo tienen 3 centros, y en el otro solo lo tienen 2 centros.

asique hay que coger el numero de ámbitos de algún sitio, no se puede poner a mano, porque no siempre se dan las mismas condiciones.


PD: Espero haberme explicado bien ahora, y que me echéis una manita porque lo necesito! jeje.


Un fuerte abrazo, compañeros.
__________________
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? :)

Última edición por oNefl0w189; 01/06/2012 a las 02:01

Etiquetas: mysql, 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 02:59.