Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/06/2006, 13:50
Avatar de ZydRick
ZydRick
 
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
problemilla con una encuesta

Hola gente, pues veran tengo un pekeño script para poner encuestas funcina con PHP y MySQL el metodo de votacion es de un voto por usuario o sea ke hay ke estar registrado para poder votar(esto funciona bien), una vez ke el usuario voto ya no podra hacerlo de nuevo, aki les pong el codigo del script y luego paso a contarles mi lio

Código PHP:
<?php
$enkesta_destino 
"main.php"// destino del form al ser enviado, io por ejemplo lo tengo en el index con un include entonces ago que vaya al index.php
$size_fuente "1"// indica el tamaño de la fuente
$color_fuente "#000000"// indica el color de la fuente
$color_barras "#CC0000"// indicador de los porcentages elije el color que quieras
$size_barras "10"// indicador de la grosos de las barras q muestran los porcentajes
$host "localhost"// host de la bdd
$userx "user"// usuario
$passx "*****"// password
$bdd "labase"// base de datos

/* A partir de aquí es recomendable que no toques nada */

$conecta mysql_connect($host,$userx,$passx); mysql_select_db($bdd,$conecta);
session_start(); /* Conectado con exito a la bdd y sesion iniciada */

    
if(!isset($_SESSION[usuario]) ) { /* si es usuario anonimo, veras los resultados pero no podras votar */
    
    
$query "SELECT * FROM enkesta ORDER BY id DESC LIMIT 0, 1"$resp mysql_query($query); /* si os fijais con esta seleccion elegimos siempre la última enquesta segun la id :D */
    
while ($enkesta mysql_fetch_array($resp)) {
        
/********************************************************************
        suma de el total de votos realizados los tendremos en $votos_totales
        y calculo de cada porcentage dentro del while
        los tendremos en $porcentage_op1, $porcentage_op2 etc...
        /********************************************************************/
         
$votos_totales $enkesta[vot1] + $enkesta[vot2] + $enkesta[vot3] + $enkesta[vot4];
         
$mult_op1 $enkesta[vot1] * 100$porcentage_op1 =@ round($mult_op1 $votos_totales,0);
         
$mult_op2 $enkesta[vot2] * 100$porcentage_op2 =@ round($mult_op2 $votos_totales,0);
         
$mult_op3 $enkesta[vot3] * 100$porcentage_op3 =@ round($mult_op3 $votos_totales,0);
         
$mult_op4 $enkesta[vot4] * 100$porcentage_op4 =@ round($mult_op4 $votos_totales,0);
?>
    <table width='100%' border='0'>
    <tr><td align='center'><font size='<?=$size_fuente?> 'color='#000000'><b><?=$enkesta[titol]?></b></font></td></tr>
    <tr><td height='15'><font size='<?=$size_fuente?>' color='#000000'><b><?=$enkesta[op1]?></b></font><font size='<?=$size_fuente?>'> - <?=$enkesta[vot1]?> votos - <?=$porcentage_op1?>%</font></td><tr>
    <tr><td><table width='<?=$porcentage_op1?>%' height='<?=$size_barras?>' border='0' style='border: 1px #000000 solid'><tr><td style="background: <?=$color_barras?>; font-size: 2pt;">&nbsp;</td></tr></table></td></tr>
    <tr><td height='15'><font size='<?=$size_fuente?>' color='#000000'><b><?=$enkesta[op2]?></b></font><font size='<?=$size_fuente?>'> - <?=$enkesta[vot2]?> votos - <?=$porcentage_op2?>%</font></td><tr>
    <tr><td><table width='<?=$porcentage_op2?>%' height='<?=$size_barras?>' border='0' style='border: 1px #000000 solid'><tr><td style="background: <?=$color_barras?>; font-size: 2pt;">&nbsp;</td></tr></table></td></tr>
    <tr><td height='15'><font size='<?=$size_fuente?>' color='#000000'><b><?=$enkesta[op3]?></b></font><font size='<?=$size_fuente?>'> - <?=$enkesta[vot3]?> votos - <?=$porcentage_op3?>%</font></td><tr>
    <tr><td><table width='<?=$porcentage_op3?>%' height='<?=$size_barras?>' border='0' style='border: 1px #000000 solid'><tr><td style="background: <?=$color_barras?>; font-size: 2pt;">&nbsp;</td></tr></table></td></tr>
    <tr><td height='15'><font size='<?=$size_fuente?>' color='#000000'><b><?=$enkesta[op4]?></b></font><font size='<?=$size_fuente?>'> - <?=$enkesta[vot4]?> votos - <?=$porcentage_op4?>%</font></td><tr>
    <tr><td><table width='<?=$porcentage_op4?>%' height='<?=$size_barras?>' border='0' style='border: 1px #000000 solid'><tr><td style="background: <?=$color_barras?>; font-size: 2pt;">&nbsp;</td></tr></table></td></tr>
    <tr><td align='center'><font size='<?=$size_fuente?>' color='#000000'>Votos totales: <?=$votos_totales?></font></td><tr>
    </table>
<? 
        
}/* fin del while que muestra los datos */
    
/* fin del if de si el usuario es anonimo*/

    
else{ /* si hay sesion abierta*/
    /* Miramos si el usuario ha sido o no enquestado consultando a la tabla users */
        
$querys "SELECT * FROM users WHERE nick='".$_SESSION[usuario]."'";
        
$respira mysql_query($querys);
        while (
$jj mysql_fetch_array($respira)) { $usuari_enkestat $jj[enkesta]; }
        
        if (
$usuari_enkestat == "si") { /* si ya lo ha sido haremos lo mismo que si fuera animo, no puede votar pues que solo vea los resultados */
        
$query "SELECT * FROM enkesta ORDER BY id DESC LIMIT 0, 1";
        
$resp mysql_query($query);
            while (
$enkesta mysql_fetch_array($resp)) {
             
$votos_totales $enkesta[vot1] + $enkesta[vot2] + $enkesta[vot3] + $enkesta[vot4];
             
$mult_op1 $enkesta[vot1] * 100$porcentage_op1 =@ round($mult_op1 $votos_totales,0);
             
$mult_op2 $enkesta[vot2] * 100$porcentage_op2 =@ round($mult_op2 $votos_totales,0);
             
$mult_op3 $enkesta[vot3] * 100$porcentage_op3 =@ round($mult_op3 $votos_totales,0);
             
$mult_op4 $enkesta[vot4] * 100$porcentage_op4 =@ round($mult_op4 $votos_totales,0);
             
?>
                <table width='100%' border='0'>
                <tr><td align='center'><font size='<?=$size_fuente?>'color='#000000'><b><?=$enkesta[titol]?></b></font></td></tr>
                <tr><td height='15'><font size='<?=$size_fuente?>'color='#000000'><b><?=$enkesta[op1]?></b></font><font size='<?=$size_fuente?>'> - <?=$enkesta[vot1]?> votos - <?=$porcentage_op1?>%</font></td><tr>
                <tr><td><table width='<?=$porcentage_op1?>%' height='<?=$size_barras?>' border='0' style='border: 1px #000000 solid'><tr><td style="background: <?=$color_barras?>; font-size: 2pt;">&nbsp;</td></tr></table></td></tr>
                <tr><td height='15'><font size='<?=$size_fuente?>'color='#000000'><b><?=$enkesta[op2]?></b></font><font size='<?=$size_fuente?>'> - <?=$enkesta[vot2]?> votos - <?=$porcentage_op2?>%</font></td><tr>
                <tr><td><table width='<?=$porcentage_op2?>%' height='<?=$size_barras?>' border='0' style='border: 1px #000000 solid'><tr><td style="background: <?=$color_barras?>; font-size: 2pt;">&nbsp;</td></tr></table></td></tr>
                <tr><td height='15'><font size='<?=$size_fuente?>'color='#000000'><b><?=$enkesta[op3]?></b></font><font size='<?=$size_fuente?>'> - <?=$enkesta[vot3]?> votos - <?=$porcentage_op3?>%</font></td><tr>
                <tr><td><table width='<?=$porcentage_op3?>%' height='<?=$size_barras?>' border='0' style='border: 1px #000000 solid'><tr><td style="background: <?=$color_barras?>; font-size: 2pt;">&nbsp;</td></tr></table></td></tr>
                <tr><td height='15'><font size='<?=$size_fuente?>'color='#000000'><b><?=$enkesta[op4]?></b></font><font size='<?=$size_fuente?>'> - <?=$enkesta[vot4]?> votos - <?=$porcentage_op4?>%</font></td><tr>
                <tr><td><table width='<?=$porcentage_op4?>%' height='<?=$size_barras?>' border='0' style='border: 1px #000000 solid'><tr><td style="background: <?=$color_barras?>; font-size: 2pt;">&nbsp;</td></tr></table></td></tr>
                <tr><td align='center'><font size='<?=$size_fuente?>'color='#000000'>Votos totales: <?=$votos_totales?></font></td><tr>
                </table>
        <?
            
/* fin del while que muestra los datos */
        
}  /* fin if si el usuario ya ha sido enquestado */
        
if ($usuari_enkestat == "no") { /* Ahora si el usuario no ha sido enquestado, que salga el formulario de votacion */

        
if ($vota) {                                                  /* indicamos si se ha enviado el formulario */
        /* Actualizamos la tabla users e indicamos que 'si' ha votado */
        
$actua "UPDATE users SET enkesta='si' WHERE nick='".$_SESSION[usuario]."'";
        
mysql_query($actua);
        
$query "UPDATE enkesta SET $enke=$enke+1 WHERE id='".$enkesta_id."'";
        
mysql_query($query);
        echo 
"Gracias por votar !!!"/* Un mensaje que indica que se ha votado */
        
/* con este break ahora pasaremos a mostrar el formulario para votar */
        
$query "SELECT * FROM enkesta ORDER BY id DESC LIMIT 0, 1";
        
$resp mysql_query($query);
        while (
$enkesta mysql_fetch_array($resp)) {
        
?>
        <form method="post" name="enkesta_<?=$enkesta[id]?>" action="<?=$enkesta_destino?>">
            <input type="hidden" name="enkesta_id" value="<?=$enkesta[id]?>" />
            <p style="text-align: left; font-weight: bold; color: #000000; font-size: 9pt;"><?=$enkesta[titol]?></p>
            <input type="radio" name="enke" value="vot1" /> <?=$enkesta[op1]?><br />
            <input type="radio" name="enke" value="vot2" /> <?=$enkesta[op2]?><br />
            <input type="radio" name="enke" value="vot3" /> <?=$enkesta[op3]?><br />
            <input type="radio" name="enke" value="vot4" /> <?=$enkesta[op4]?><br />
            <p style="text-align: left;"><input type="submit" value="Enviar voto" name="vota" /></p>
        </form>
<?
            
/* fin if si el usuario NO ha sido enquestado */
        
/* si NO es usuario anonimo */
    
/* y Fin lee el final del leeme.txt para encontrarte con algunas explicaciones de cosas que puedes tener dudas */
?>
Pues bien, mi problema esta en ke cuando incluyo el archivo dela encuesta en mi pagina principal, una vez ke el usuario emite el voto, al guardarse en la BD dicho voto y actualizarse en la tabla de usuarios de ke este ya voto deberia mostrarle los resultados de como va la encuesta, pero no, sucede lo contrario, ke le sigue mostrando el form de la encuesta, he puesto de cabeza el script para ver donde puede estar fallando pero no doy con el, espero ke alguno de uds. me pueda echar una mano.

Un saludo