Foros del Web » Programando para Internet » PHP »

Problemas con sistemas de encuesta

Estas en el tema de Problemas con sistemas de encuesta en el foro de PHP en Foros del Web. Saludos, Porfavor necesito de su ayuda si es posible. tengo un problema con el sgte. codigo es sobre un sistema de encuestas funciona, graba los ...
  #1 (permalink)  
Antiguo 08/10/2008, 12:33
 
Fecha de Ingreso: diciembre-2007
Mensajes: 218
Antigüedad: 16 años, 4 meses
Puntos: 1
Problemas con sistemas de encuesta

Saludos,

Porfavor necesito de su ayuda si es posible.

tengo un problema con el sgte. codigo es sobre un sistema de encuestas funciona, graba los datos ok, recibe votos ok pero el problema es q si refresco la pagina se aumenta 1 voto al ultimo option escogido, como puedo evitar esto?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script LANGUAGE="JavaScript">
var cuenta=0;
function enviado() {
if (cuenta == 0){
cuenta++;
return true;
}else{
alert("Formulario ya enviado");
return false;
}
}
</script>
</head>
<body>
<?php
require_once("../class/class00x.php");
$consulta_ed= new consultas_varias;
$sql_enc= $consulta_ed->consulta_encuesta_diaria();
$consulta_oe= new consultas_varias;
$consulta_ed_2=new consultas_varias;
$consulta_ve=new consultas_varias;
$consulta_oe_2= new consultas_varias;

while($row = mysql_fetch_array($sql_enc)) {
$id_enc = $row['id_enc'];
$pregunta = $row['pregunta'];
?>
<div style="text-align: center;" class="titular_encuesta"><strong><?=$pregunta?></strong></div>
<?php
echo' <form method="post" action="'.$PHP_SELF.'" id="frm_w3FormValidation" name="encuesta" name="encuesta" onSubmit="return enviado()">';
$opt= $consulta_oe->consulta_opciones_encuesta($id_enc);
while($row2 = mysql_fetch_array($opt)) {
$id_opt = $row2['id_opt'];
$opciones = $row2['opciones'];
$num_votos = $row2['num_votos'];
?>
<input type="radio" name="opciones" value="<?=$id_opt?>"/><span class="cuerpo_encuesta"><?=$opciones?></span><br />
<?php
}
?>
<div style="text-align: center; padding: 10px;"><input type="submit" name="votar" value="Votar" /><input type="reset" id="borra" name="borra" width="10" height="10" style="visibility:hidden"/></div>
</form>
<div style="text-align: center;" class="titular_encuesta">Resultados</div>
<?php
if(isset($_POST['votar'])){
if($_POST['opciones'] != '') {
$opciones = $_POST['opciones'];
$sql = mysql_query("SELECT * FROM encuestas_opt WHERE id_opt='".$opciones."'");
$row = mysql_fetch_array($sql);
$suma = $row['num_votos']+1;
mysql_query("UPDATE encuestas_opt SET num_votos='".$suma."' WHERE id_opt='".$opciones."'");
mysql_query("INSERT INTO encuestas_ip (ip_voto) VALUES('$REMOTE_ADDR')");

$rs=$consulta_ve->consulta_votos_encuesta($id_enc);
$tot = mysql_result($rs,0);
$opts=$consulta_oe_2->consulta_opciones_encuesta($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);
?>
<strong class="cuerpo_encuesta"><?=$opciones?></strong> - <span class="cuerpo_encuesta"><?=$num_votos?> votos - <?=$porcentaje?>%</span>
<div style="width: <?=$porcentaje?>%; height: 10px; background: #009900;"></div>
<?php
}
?>
<div style="text-align: center; font-size: 11px;" class="titular_encuesta">Votos totales: <strong class="cuerpo_encuesta"><?=$tot?></strong></div>
<?php
}
}
}
?>
</body>
</html>
  #2 (permalink)  
Antiguo 08/10/2008, 12:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problemas con sistemas de encuesta

Hola lvinuezav,

Lo que tienes que hacer es añadir un header("Location: otrositio.php") despues de registrar el voto, con el header haces una redirección hacia otra pagina y eso evita que queden variables en el $_POST y se aumente el voto.

Saludos.
  #3 (permalink)  
Antiguo 08/10/2008, 13:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 218
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Problemas con sistemas de encuesta

Saludos,

De antemano muchas gracais por su respuesta pero el problema radica en q esta pagina esta incluida en otra pagina con un div de esta manera:

<div id="encuesta">
<? require_once("../librerias/encuesta.php");?>
</div>

y alponer redirect me manda error.
  #4 (permalink)  
Antiguo 08/10/2008, 13:33
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problemas con sistemas de encuesta

pues quita los div
  #5 (permalink)  
Antiguo 08/10/2008, 13:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problemas con sistemas de encuesta

Es forzoso que hagas el redirect, de lo contrario te va a presentar el error, tienes que borrar el cache de envío.

Saludos.
  #6 (permalink)  
Antiguo 08/10/2008, 14:09
 
Fecha de Ingreso: diciembre-2007
Mensajes: 218
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Problemas con sistemas de encuesta

Saludos,

este proyecto estaba realizado en 2 paginas la 1ra. es la q muestra el form para las opciones y la 2da. es donde se hace el proceso de ingreso de votos a la BD, utilize iframe por que tiene q estar incluida en la pagina del index.php pero tenia problemas al manejar el height debido a los numeros de opciones, lo q hice fue unir estos codigos en una sola pagina poniendo en el action del form $PHP_SELF para q rezlice el proceso y muestre los valores enla misma pagina y la inclui en la pagina index.php con un div, no se como hacer para q cuando se refresque no me aumente el voto.

Gracias y disculpen.
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 03:45.