Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] mostrar datos de media de una tabla

Estas en el tema de mostrar datos de media de una tabla en el foro de PHP en Foros del Web. Bueno, a ver si me podeis echar una mano en esto, estoy intentando mostrar la media de las respuestas obtenidas para cada pregunta de una ...
  #1 (permalink)  
Antiguo 07/11/2015, 11:42
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
mostrar datos de media de una tabla

Bueno, a ver si me podeis echar una mano en esto, estoy intentando mostrar la media de las respuestas obtenidas para cada pregunta de una encuesta. La BD esta en mySql, bueno os pongo el código que tengo, que creo que es más fácil.

Código PHP:

<HTML LANG="es">

<HEAD>
    <TITLE>Encuesta Biblioteca</TITLE>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="index.css" />

</HEAD>

<BODY>

<?PHP

    
// Variables de conexión
    
$user="biblio";
    
$password="";
    
$database="biblioteca";
    
$server="localhost";

    
//Conexión al servidor

    
$conexion mysqli_connect($server,$user,$password,$database);
    if (!
$conexion) {
        echo(
'No pudo conectarse al servidor<br><br>');
    }


    
// Enviar consulta para las preguntas
    
$instruccion_preguntas "SELECT * FROM preguntas ORDER BY id ASC";
    
$consulta_preguntas mysqli_query ($conexion$instruccion_preguntas)
        or die (
"Fallo en la consulta a tabla preguntas");
    
// Nº de filas de preguntas
    
$npregmysqli_num_rows($consulta_preguntas);

    for(
$i=0;$i<$npreg;$i++){
        
        
//consulta que devuelve la media  de la pregunta que corresponde
        
$instruccion_med "select AVG(respuesta) from respuestas where id_Preguntas = $i";
        
$consulta_med mysqli_query ($conexion,$instruccion_med)
            or die (
"Fallo en la consulta media");
        
$media[$i] = mysqli_fetch_array ($consulta_med);

        
//consulta que devuelve la desviacion tipica de la pregunta que corresponde
        
$instruccion_desv "select STDEV(respuesta) from respuestas where id_Preguntas = $i";
        
$consulta_desv mysqli_query ($conexion,$instruccion_desv)
            or die (
"Fallo en la consulta desviacion");
        
$desviacion[$i] = mysqli_fetch_array ($consulta_desv);
        
        
//consulta que devuelve el numero de respuestas de la pregunta que corresponde
        
$instruccion_total "select COUNT(*) from respuestas where id_Preguntas = $i";
        
$consulta_total mysqli_query ($conexion,$instruccion_total)
            or die (
"Fallo en la consulta total");
        
$total[$i] = mysqli_fetch_array ($consulta_total);
    }
?>

    <div id="title">
        <h1><span class="Estilo1"> Informe Estudio de Satisfacción de la Biblioteca</span></h1>
    </div>

    <div id="formulario">
            <?php
            
if($npreg){
                print (
"<TABLE>\n");
                print (
"<TR>\n");
                print (
"<TH>Pregunta</TH>\n");
                print (
"<TH>Media</TH>\n");
                print (
"<TH>Desviaci&oacute; T&iacute;pica</TH>\n");
                print (
"<TH>Respuestas</TH>\n");
                print (
"</TR>\n");
                
$r=0;
                while(
$res_preg mysqli_fetch_array($consulta_preguntas)){    
                    print(
"<TR>");
                        print 
'<TD>'$res_preg['pregunta']. '</TD>';
                        print 
'<TD>'$media[$r]. '</TD>';
                        print 
'<TD>'$desviacion[$r]. '</TD>';
                        print 
'<TD>'$total[$r]. '</TD>';
                    print(
"</TR>");
                    
$r++;
                }
                echo
'</table>';
            }else{
                print (
"No hay preguntas disponibles");
            }
            
?>
    </div>

<?php
    
// Cerrar conexión
    
mysqli_close ($conexion);
?>
</BODY>
</HTML>
1.- Me da "Fallo en la consulta desviacion"
2.- Si comento las líneas que hacen la consulta de la desviación para ver si el resto de código funciona, me muestra por pantalla Array (por cada pregunta en la media y en el total)

muchas gracias por vuestra ayuda
  #2 (permalink)  
Antiguo 07/11/2015, 14:17
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: mostrar datos de media de una tabla

una pequeña aclaración, tambien he probado a hacer las consultas así:

Código PHP:
$instruccion_med "select avg(respuesta) from respuestas where id_Preguntas = ".$i
pero tampoco funciona
  #3 (permalink)  
Antiguo 08/11/2015, 02:45
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar datos de media de una tabla

Saludo

1. Esa función no existe en mysql.
En su lugar, usar STD o STDDEV.

2. Darle posición a lo que se quiere mostrar.
Código PHP:
Ver original
  1. print '<TD>'. $media[$r][0]. '</TD>';
  2. print '<TD>'. $desviacion[$r][0]. '</TD>';
  3. print '<TD>'. $total[$r][0]. '</TD>';

Con eso debe funcionar.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #4 (permalink)  
Antiguo 08/11/2015, 15:40
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: mostrar datos de media de una tabla

El punto uno solucionado, muchas gracias

El punto dos, con $r pretendo indicarle la posicion del array que tiene que mostrar, ya que en cada iteración del while tendrá que mostrar los resultados obtenidos en una posición del array, al ponerlo como me dices, me muestra los valores obtenidos para la pregunta 1 en la segunda iteración de este while, mientras que en la primera iteración no muestra nada, no obstante muchas gracias por tu ayuda, pero sigue sin funcionar, y lo peor es que no se por que...
  #5 (permalink)  
Antiguo 08/11/2015, 15:45
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: mostrar datos de media de una tabla

Esto es lo que muestra, aclarar, que esos datos que muetra corresponderían a la media, a la desviación y al número de respuestas de la pregunta "Tipo de usuario"



muchas gracias por vuestra ayuda
  #6 (permalink)  
Antiguo 08/11/2015, 16:48
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: mostrar datos de media de una tabla

Saludo

Bueno, eso tal vez sea por el ciclo (for) en el que se arman
las consultas, pues dicho ciclo arranca con el $i en 0, y hace
las búsquedas empezando con id_preguntas en 0, no en 1,
por ende, la primera posición del array queda en blanco,
pues imagino que no existe un id_preguntas 0.
Podrías o empezar en 1 el for, o manejar otra variable
($j) solo para las consultas ($i quedaría para las posiciones de los arrays)
que empiece en 1, y que vaya aumentando dentro del for.

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 09/11/2015, 03:21
 
Fecha de Ingreso: abril-2007
Mensajes: 32
Antigüedad: 17 años
Puntos: 0
Respuesta: mostrar datos de media de una tabla

ole!! que crack, muchas gracias por tu ayuda, era eso, que la id de preguntas empieza en 1 y no en 0

muchas gracias

saludos

Etiquetas: formulario, html, media, mysql, select, tabla, variable
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:09.