Foros del Web » Programando para Internet » PHP »

Sistema de Encuestas.

Estas en el tema de Sistema de Encuestas. en el foro de PHP en Foros del Web. Holas gente, bueno miren me descarge el sistema de encuestas que encontre en Desarrollo web pero queria agregarle para que solo se pueda votar 1 ...
  #1 (permalink)  
Antiguo 26/01/2009, 16:42
 
Fecha de Ingreso: marzo-2008
Ubicación: Santa Cruz, Argentina
Mensajes: 433
Antigüedad: 16 años, 1 mes
Puntos: 5
Sistema de Encuestas.

Holas gente, bueno miren me descarge el sistema de encuestas que encontre en Desarrollo web pero queria agregarle para que solo se pueda votar 1 vez por dia
les dejo el codigo del sistema de encuestas

index.php
Código PHP:
<?
    $servidor
="localhost";
    
$usuario="usuariodeladb";
    
$password="contraseña";
    
$base="basededatos";
    
$SQLid mysql_connect($servidor,$usuario,$password);
    
mysql_select_db($base,$SQLid);
    
$SQLquery "SELECT * FROM tblenc order by encid desc";
    
$SQLresult mysql_query($SQLquery,$SQLid);
    
$SQLrow mysql_fetch_array($SQLresult);
?>

<form name="form1" method="post" action="encuesta.php">
<input type=hidden name="encid" value="<?echo $SQLrow[0]?>">              
  <table width="270" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr> 
                  <td align=center bgcolor="#006600"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif">:::::::::::::::::::::::::::::::::::::::::::::::::::::</font></td>
                </tr>
                <tr> 
                  <td bgcolor="#FFFFCC"> <div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>
                  <? echo $SQLrow[1]?>
                  </strong></font></div></td>
                </tr>
                <tr> 
                  <td bgcolor="#FFFFCC"> <p> <font size="2"> 
                      <label> 
                      <input type="radio" name="voto" value="1">
                      <? echo $SQLrow[2]?></label>
                      <br>
                      <label> 
                      <input type="radio" name="voto" value="2">
                      <? echo $SQLrow[3]?></label>
                      <br>
                      <label> 
                      <input type="radio" name="voto" value="3">
                      <? echo $SQLrow[4]?></label>
                      <br>
                      <label> 
                      <input type="radio" name="voto" value="4">
                      <? echo $SQLrow[5]?></label>
                      <br>
                      </font></p></td>
                </tr>
                <tr> 
                  <td bgcolor="#FFFFCC"> <BR>
                        <div align="center"> 
                      <input type="submit" name="Submit" value="Aceptar">
                    </div><BR>
                </td>
                </tr>
              </table>
            </form>
encuestas.php
Código PHP:
<?
//recibo el voto
$voto $_POST["voto"];
//recibo el id de la encuesta
$encid $_POST["encid"];

$servidor="localhost";
$usuario="usuariodeladb";
$password="contraseña";
$base="basededatos";
$SQLid mysql_connect($servidor,$usuario,$password);
mysql_select_db($base,$SQLid);
$SQLquery "UPDATE tblenc".
            
" SET encval$voto = encval$voto+1, enctot = enctot+1 where encid=$encid";
$SQLresult mysql_query($SQLquery,$SQLid);
$SQLquery "SELECT * FROM tblenc where encid=$encid";
$SQLresult mysql_query($SQLquery,$SQLid);
$SQLrow mysql_fetch_array($SQLresult);
?>
Muchas Gracias por votar

Lo que quiero hacer es que cuando hagas 1 click no puedas volver a hacerlo hasta dentro de 1 dia osea esa IP


Desde ya les agradezco :)


Atte, PoLiZe
  #2 (permalink)  
Antiguo 27/01/2009, 10:31
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sistema de Encuestas.

Lo que tienes que hacer es crear una tabla con los IP y una fecha. Cada vez que un usuario vota, revisas que no exista la IP, sino existe entonces la insertas junto con la fecha. Si existe, y la fecha es menor a 1 dia, entonces le niegas el voto. Pero si existe, y la fecha es mayor a 1 dia, entonces le dejas votar.

Tambien puedes crearlo usando COOKIES + IP para hacerlo mas "seguro".
  #3 (permalink)  
Antiguo 27/01/2009, 10:44
 
Fecha de Ingreso: marzo-2008
Ubicación: Santa Cruz, Argentina
Mensajes: 433
Antigüedad: 16 años, 1 mes
Puntos: 5
Respuesta: Sistema de Encuestas.

te cueto yo hize esto:

index.php
Código PHP:
<?
    $servidor
="localhost";
    
$usuario="usuariodeladb";
    
$password="contraseña";
    
$base="basededatos";
    
$SQLid mysql_connect($servidor,$usuario,$password);
    
mysql_select_db($base,$SQLid);
    
$SQLquery "SELECT * FROM tblenc order by encid desc";
    
$SQLresult mysql_query($SQLquery,$SQLid);
    
$SQLrow mysql_fetch_array($SQLresult);
    
setcookie("entro""si"time() + 60 60 24); 
?>
<?php
if ($_COOKIE["entro"]; == 'si'){
    
?>
<form name="form1" method="post" action="encuesta.php">
<input type=hidden name="encid" value="<?echo $SQLrow[0]?>">              
  <table width="270" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr> 
                  <td align=center bgcolor="#006600"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif">:::::::::::::::::::::::::::::::::::::::::::::::::::::</font></td>
                </tr>
                <tr> 
                  <td bgcolor="#FFFFCC"> <div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>
                  <? echo $SQLrow[1]?>
                  </strong></font></div></td>
                </tr>
                <tr> 
                  <td bgcolor="#FFFFCC"> <p> <font size="2"> 
                      <label> 
                      <input type="radio" name="voto" value="1">
                      <? echo $SQLrow[2]?></label>
                      <br>
                      <label> 
                      <input type="radio" name="voto" value="2">
                      <? echo $SQLrow[3]?></label>
                      <br>
                      <label> 
                      <input type="radio" name="voto" value="3">
                      <? echo $SQLrow[4]?></label>
                      <br>
                      <label> 
                      <input type="radio" name="voto" value="4">
                      <? echo $SQLrow[5]?></label>
                      <br>
                      </font></p></td>
                </tr>
                <tr> 
                  <td bgcolor="#FFFFCC"> <BR>
                        <div align="center"> 
                      <input type="submit" name="Submit" value="Aceptar">
                    </div><BR>
                </td>
                </tr>
              </table>
            </form>
            <?php
}else{
    
?>
    
      <table width="270" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr> 
                  <td align=center bgcolor="#006600"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif">:::::::::::::::::::::::::::::::::::::::::::::::::::::</font></td>
                </tr>
                <tr> 
                <td bgcolor="#FFFFCC">
                Disculpa, pero tu has votado, podras volver a votar dentro de 24 horas
                </td>
                </tr>
                </table>
                <?php
}
?>
y en encuestas.php
Código PHP:
<?
//recibo el voto
$voto $_POST["voto"];
//recibo el id de la encuesta
$encid $_POST["encid"];

$servidor="localhost";
$usuario="usuariodeladb";
$password="contraseña";
$base="basededatos";
$SQLid mysql_connect($servidor,$usuario,$password);
mysql_select_db($base,$SQLid);
$SQLquery "UPDATE tblenc".
            
" SET encval$voto = encval$voto+1, enctot = enctot+1 where encid=$encid";
$SQLresult mysql_query($SQLquery,$SQLid);
$SQLquery "SELECT * FROM tblenc where encid=$encid";
$SQLresult mysql_query($SQLquery,$SQLid);
$SQLrow mysql_fetch_array($SQLresult);
setcookie("voto""si"time() + 60 60 24); 
?>
Muchas Gracias por votar
<head><meta http-equiv="refresh" content="5; url=http://www.elgrancantante.com.ar"></head>
y no funciona que esta mal?
  #4 (permalink)  
Antiguo 27/01/2009, 12:07
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sistema de Encuestas.

Pues, a simple vista:
Código PHP:
if ($_COOKIE["entro"]; == 'si'){ 
Y ese punto y coma de donde salio?

Si creas una cookie en un archivo, y en ese mismo archivo tratas de leerla, no va a funcionar hasta que la pagina se refresque.

Seteas 2 cookies, y una de estas la seteas pase lo que pase:
Código PHP:
$servidor="localhost"
    
$usuario="usuariodeladb"
    
$password="contraseña"
    
$base="basededatos"
    
$SQLid mysql_connect($servidor,$usuario,$password); 
    
mysql_select_db($base,$SQLid); 
    
$SQLquery "SELECT * FROM tblenc order by encid desc"
    
$SQLresult mysql_query($SQLquery,$SQLid); 
    
$SQLrow mysql_fetch_array($SQLresult); 
    
setcookie("entro""si"time() + 60 60 24); 
Aun cuando el usuario no vote, al refrescar la pagina le va a mostrar que ya ha votado.
Tienes que crear la COOKIE despues que voto.
Código PHP:
<?php
//blah blah blah, conexion a la BD.
if(!isset($_COOKIE['loquesea'])) {
  
//inserto a la DB
  //creo cookie
} else {
  
//ya haz votado
}
?>
  #5 (permalink)  
Antiguo 27/01/2009, 13:51
 
Fecha de Ingreso: marzo-2008
Ubicación: Santa Cruz, Argentina
Mensajes: 433
Antigüedad: 16 años, 1 mes
Puntos: 5
Claro pero a eso me refiero osea no quiero que cuando refresques se te guarde la cookie por eso mismo porque va en un costado de una pagina.
Igual muchas gracias.. pero como puedo hacer para uqe no sea cuando refresques :S

Porfavor Ayuda lo necesito para hoy

Gente please ¬¬ este post ya esta como en la pagina 5

Última edición por GatorV; 29/01/2009 a las 21:28
  #6 (permalink)  
Antiguo 29/01/2009, 21:25
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sistema de Encuestas.

Cita:
Claro pero a eso me refiero osea no quiero que cuando refresques se te guarde la cookie por eso mismo porque va en un costado de una pagina.
Igual muchas gracias.. pero como puedo hacer para uqe no sea cuando refresques :S
No crees y leas la cookie en el mismo script.
  #7 (permalink)  
Antiguo 31/01/2009, 16:54
 
Fecha de Ingreso: marzo-2008
Ubicación: Santa Cruz, Argentina
Mensajes: 433
Antigüedad: 16 años, 1 mes
Puntos: 5
Respuesta: Sistema de Encuestas.

Ya esta la solucion era agregar que la cookie se pueda usar en todo el sitio
Gracias a todos por ayudarme igual :D
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 09:00.