Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/11/2015, 11:42
lexell
 
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