Foros del Web » Programando para Internet » PHP »

Pregunta,encuesta

Estas en el tema de Pregunta,encuesta en el foro de PHP en Foros del Web. Hola,tengo una encuesta, todo funciona 100% pero tengo un problema,me gustaria que los usuarios solo puedan firmar 1 vez... Obvio que para ver el contenido ...
  #1 (permalink)  
Antiguo 28/07/2005, 15:33
Saldu
Invitado
 
Mensajes: n/a
Puntos:
Pregunta,encuesta

Hola,tengo una encuesta, todo funciona 100% pero tengo un problema,me gustaria que los usuarios solo puedan firmar 1 vez... Obvio que para ver el contenido de la encuesta tienen que hacer login...


Este es el index.php :
Código:
<?
	$servidor="localhost";
	$usuario="root";
	$password="";
	$base="Tryman";
	$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);
print("<body bgcolor=#009900 text=#009900 link=#FFFFFF>");
?>
<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="#FFFFFF"> <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>


y este es el encuesta.php

Código:
<?
print("<body bgcolor=#009900 text=#FFFFFF link=#FFFFFF>");
//recibo el voto
$voto = $_POST["voto"];
//recibo el id de la encuesta
$encid = $_POST["encid"];

$servidor="localhost";
$usuario="root";
$password="";
$base="Tryman";
$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);
?>
  <P ALIGN="center"><font size="4"><strong><em>RESULTADOS PARCIALES DE LA 
    ENCUESTA</em></strong></font></P>
  <P ALIGN="center"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> 
    <?
  	echo $SQLrow["encprg"]
  ?>
  </font></strong></P>
  <TABLE ALIGN="center" WIDTH="75%" BORDER="0" CELLSPACING="1" CELLPADDING="1">
    <!--DWLayoutTable-->
    <TR> 
      <TD ALIGN="left" WIDTH="23%"><? echo $SQLrow["encrpt1"]?> 
        <div align="left"></div></TD>
      <TD><IMG HEIGHT="5" WIDTH="<? echo $SQLrow["encval1"]*100/$SQLrow["enctot"]?>%" SRC="imagenes/barra1.gif"></TD>
      <TD ALIGN="center" WIDTH="14%"><? echo $SQLrow["encval1"]?> votos</TD>
    </TR>
    <TR> 
      <TD ALIGN="left"><? echo $SQLrow["encrpt2"]?> 
        <div align="left"></div></TD>
      <TD><IMG HEIGHT="5" WIDTH="<? echo $SQLrow["encval2"]*100/$SQLrow["enctot"]?>%" SRC="imagenes/barra2.gif"></TD>
      <TD ALIGN="center"><? echo $SQLrow["encval2"]?> votos</TD>
    </TR>
    <TR> 
      <TD ALIGN="left"><? echo $SQLrow["encrpt3"]?> 
        <div align="left"></div></TD>
      <TD><IMG HEIGHT="5" WIDTH="<? echo $SQLrow["encval3"]*100/$SQLrow["enctot"]?>%" SRC="imagenes/barra3.gif"></TD>
      <TD ALIGN="center"><? echo $SQLrow["encval3"]?> votos</TD>
    </TR>
    <TR> 
      <TD ALIGN="left"><? echo $SQLrow["encrpt4"]?> 
        <div align="left"></div></TD>
      <TD><IMG HEIGHT="5" WIDTH="<? echo $SQLrow["encval4"]*100/$SQLrow["enctot"]?>%" SRC="imagenes/barra4.gif"></TD>
      <TD ALIGN="center"><? echo $SQLrow["encval4"]?> votos</TD>
    </TR>
  </TABLE>
  <P ALIGN="center">Total de votos emitidos: <? echo $SQLrow["enctot"]?></P>


Bueno... expliquenme cómo puedo hacer eso.. que solo puedan firmar 1 vez...

La tabla es así

DROP TABLE IF EXISTS tblenc;
CREATE TABLE tblenc (
encid int(11) NOT NULL auto_increment,
encprg varchar(50) default NULL,
encrpt1 varchar(50) default NULL,
encrpt2 varchar(50) default NULL,
encrpt3 varchar(50) default NULL,
encrpt4 varchar(50) default NULL,
encval1 int(11) NOT NULL default '0',
encval2 int(11) NOT NULL default '0',
encval3 int(11) NOT NULL default '0',
encval4 int(11) NOT NULL default '0',
enctot int(11) NOT NULL default '0',
PRIMARY KEY (encid)
) TYPE=MyISAM;


y el archivo de login asi... quizás les sirva,para ver las variables de session que abro


<?php
session_start();
print("<body bgcolor=#009900 text=#FFFFFF link=#FFFFFF>");
require_once("conexion.php");
$Query = mysql_query("SELECT * FROM usuarios WHERE username='".addslashes(strip_tags($_POST['User']))."' && user_password ='".addslashes(md5($_POST['Password']))."'");
$Q_num = mysql_num_rows($Query);
if($Q_num == 1){
$data = mysql_fetch_array($Query);
$_SESSION['username'] = strip_tags($_POST['User']);
$_SESSION['Auth'] = "YES" ;
$_SESSION["codigoUsuario"] = $data["codigo"];
echo "<script>window.location='default.php';</script>";
exit;
} else {
$_SESSION['Auth'] = "NO" ;
echo("Usuario / Clave no son válidos, intente de nuevo...");
}
?>
  #2 (permalink)  
Antiguo 28/07/2005, 16:26
Avatar de aichiche  
Fecha de Ingreso: marzo-2004
Ubicación: Valparaíso
Mensajes: 35
Antigüedad: 20 años, 8 meses
Puntos: 0
unsa idea.. pueden firmar una vez por visita o por única vez en todo lo que dura la encuesta..
si es lo primero .. facil una cookie o variable de session que guarde si voto o no..
para le segunda.. una tabla de registro de encuesta v/s usuario..lo regiustras cada vez que vota..el resto sólo cmparar con existencia del voto en la BD ;)
__________________
"Sólo dime qué quieres.."
  #3 (permalink)  
Antiguo 28/07/2005, 16:36
Saldu
Invitado
 
Mensajes: n/a
Puntos:
es la segunda opción.. pero no sé hacer eso... me lo arreglas a los scripts? para que queden aptos para eso?
  #4 (permalink)  
Antiguo 28/07/2005, 16:45
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 6 meses
Puntos: 35
loading...........



propongo crear una tabla que recoja las IPs de los que hagan el voto con las columnas

id INT
ip varchar(45)
fecha_de_voto datetime

entonces si el usuario ya votò tendrà un registro en la tabla, la proxima vez que quiera votar se buscarà en la tabla si existe su IP y si existe, verificar en la tabla que now()-fecha_de_voto sea mayor a 1 dìa, y asì de paso tenemos un registro de votantes.



connection closed.
__________________

Maborak Technologies
  #5 (permalink)  
Antiguo 29/07/2005, 04:11
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
De acuerdo con ambos dos () pero que quede claro que validar por IP y/o usar cookies no es algo 100% seguro; la mayoría de las IP's son dinámicas y las cookies son borrables.

Si tu sistema contempla trabajar con "visitantes" --usuarios no registrados-- tendrás que usar alguno --ó ambos-- de estos métodos, pero si va a ser EXCLUSIVO de usuarios registrados mejor lo que dice aichiche: Crear un campo a tu tabla y darle un valor para compararlo y actuar en consecuencia.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 13:04.