Foros del Web » Programando para Internet » PHP »

Problema mostrando resultados de encuesta

Estas en el tema de Problema mostrando resultados de encuesta en el foro de PHP en Foros del Web. Hola de nuevo, ayer hice una consulta sobre un script para crear encuestas, pues bien, dicha parte ya está funcionando bien, puedo crear encuestas y ...
  #1 (permalink)  
Antiguo 26/10/2007, 12:32
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Problema mostrando resultados de encuesta

Hola de nuevo, ayer hice una consulta sobre un script para crear encuestas, pues bien, dicha parte ya está funcionando bien, puedo crear encuestas y tal, luego he creado otro script en el que muestro la encuesta con sus opciones, los votos se envían y guardan correctamente, pero el problema surge cuando muestro los resultados de la misma. Aquí dejo dicho script con el que muestro los resultados.

Código PHP:
<?php
    $encuesta 
mysql_query("SELECT * FROM encuestas ORDER BY id_enc LIMIT 0,1");
    while(
$datos mysql_fetch_array($encuesta)) {
        
$id_enc $datos['id_enc'];
        
$pregunta $datos['pregunta'];
?>
        <div style="width: 300px;">
        <strong><?=$pregunta?></strong>
        <ul style="list-style: none;">
<?php
        $tot 
0;
        
$opts mysql_query("SELECT * FROM encuestas_opt WHERE id_enc='".$id_enc."'");
        while(
$dat2 mysql_fetch_array($opts)) {
            
$id_opt $dat2['id_opt'];
            
$opciones $dat2['opciones'];
            
$num_votos $dat2['num_votos'];
            
$tot $num_votos+$tot;
            
$ptos $num_votos 100;
            
$porcentaje = @round($ptos/$tot,0);
?>
            <li style="padding-bottom: 5px;"><?=$opciones?> - <?=$num_votos?> votos - <?=$porcentaje?>%
            <div style="width: <?=$porcentaje?>%; height: 6px; background: #cc0000;"></div></li>
<?php
        
}
?>
        </ul>
        Total: <?=$tot?>
        </div>
<?php
    
}
?>
El número de votos se obtiene de forma correcta, pero cuando quiero obtener el porcentaje de votos es donde me salta un problema y es que la primera opción siempre me muestra con 100% del total de votos sin importar que esta pueda tener menos votos que las demás, les dejo una imagen de muestra:



He puesto de cabeza el script para ver la falla pero no doy con ella ¿Dónde es que estoy fallando?, gracias de antemano por la ayuda.

Saludos.
  #2 (permalink)  
Antiguo 26/10/2007, 12:56
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: Problema mostrando resultados de encuesta

El problema es q no estás dividiendo por el total, sino por el total acumulado en cada punto, entonces en el primero son 12/12, en el segundo 15/27 y en el último recién está el total, con 3/30, porque vas contando el total en la marcha.

Lo que podés hacer es esto
Código PHP:
 <?php
    $encuesta 
mysql_query("SELECT * FROM encuestas ORDER BY id_enc LIMIT 0,1");
    while(
$datos mysql_fetch_array($encuesta)) {
        
$id_enc $datos['id_enc'];
        
$pregunta $datos['pregunta'];
?>
        <div style="width: 300px;">
        <strong><?=$pregunta?></strong>
        <ul style="list-style: none;">
<?php
        $tot 
0;
        
$opts mysql_query("SELECT * FROM encuestas_opt WHERE id_enc='".$id_enc."'");
        while(
$dat2 mysql_fetch_array($opts)) {
            
$tot += $num_votos;
        }
        
mysql_data_seek($opts,0);
        while(
$dat2 mysql_fetch_array($opts)) {
            
$id_opt $dat2['id_opt'];
            
$opciones $dat2['opciones'];
            
$num_votos $dat2['num_votos'];
            
$ptos $num_votos 100;
            
$porcentaje round($ptos/$tot,0);
?>
            <li style="padding-bottom: 5px;"><?=$opciones?> - <?=$num_votos?> votos - <?=$porcentaje?>%
            <div style="width: <?=$porcentaje?>%; height: 6px; background: #cc0000;"></div></li>
<?php
        
}
?>
        </ul>
        Total: <?=$tot?>
        </div>
<?php
    
}
?>
Primero iterás para contar los votos, y después recién calculás los porcentajes
  #3 (permalink)  
Antiguo 26/10/2007, 13:38
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: Problema mostrando resultados de encuesta

he hecho los cambios que me dices y sigue igual, o hay algo que me faltó hacer?.
  #4 (permalink)  
Antiguo 26/10/2007, 13:54
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: Problema mostrando resultados de encuesta

Prueba poniendo esto :
Código PHP:
<?php
    $arrTot 
mysql_query("SELECT * FROM encuestas_opt");
    
$tot mysql_num_rows($arrTot);
    
$encuesta mysql_query("SELECT * FROM encuestas ORDER BY id_enc LIMIT 0,1");
    while(
$datos mysql_fetch_array($encuesta)){
        
$id_enc $datos['id_enc'];
        
$pregunta $datos['pregunta'];
?>
        <div style="width: 300px;">
        <strong><?=$pregunta?></strong>
        <ul style="list-style: none;">
<?php        
        $opts 
mysql_query("SELECT * FROM encuestas_opt WHERE id_enc='".$id_enc."'");
        while(
$dat2 mysql_fetch_array($opts)) {
            
$id_opt $dat2['id_opt'];
            
$opciones $dat2['opciones'];
            
$num_votos $dat2['num_votos'];
            
$ptos $num_votos 100;
            
$porcentaje round($ptos/$tot,0);
?>
            <li style="padding-bottom: 5px;"><?=$opciones?> - <?=$num_votos?> votos - <?=$porcentaje?>%
            <div style="width: <?=$porcentaje?>%; height: 6px; background: #cc0000;"></div></li>
<?php
        
}
?>
        </ul>
        Total: <?=$tot?>
        </div>
<?php
    
}
?>
Se supone que debes sacar el numero total de opciones elegidas para calcular el tot, y en las consultas arriba solo sacas el total de cierto id.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!

Última edición por Marvin; 26/10/2007 a las 13:56 Razón: Editado completo
  #5 (permalink)  
Antiguo 26/10/2007, 14:05
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: Problema mostrando resultados de encuesta

ya lo conseguí, calculando primero el total de votos antes del bucle y ahora funciona de maravilla, gracias por la ayuda
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 16:27.