Encuesta. No suma 1, Suma 2 (URGE, Plis)
Publicado por Rafaelo (37 intervenciones) el 31/05/2007 00:16:57
Hola:
Estoy desarrollando un formulario que contiene una encuesta en PHP y MySQL. El problema es que al elegir la opcion y luego votar se debería de sumar 1 voto a la opcion seleccionada, ya que uso los clasicos botones de Radio. PERO en ocasiones no suma 1 voto sino 2. Hasta ahora no he logrado descubrir si se sigue algun patrón para que se haga la suma de 2 votos y no 1.
Les dejo el codigo para ver si me pueden ayudar por favor.
Muchas Gracias.
<?php
include("conexion.php"); //me conecto a la BD
$result=mysql_query("SELECT * FROM pregs ORDER BY codigo DESC", $conexion);
$row=mysql_fetch_array($result);
$codigo=$row[0]; //Tomo el valor del codigo de la Pregunta actual.
$nomcookie="ACP".$codigo; //Creo un Nuevo nombre de Cookie
if(!isset($_COOKIE[$nomcookie])){
setcookie($nomcookie,0,time()+(3600*24*7));
}
if(isset($_POST['respuestas']))
{
/********** Actualizo la Cookie **********************/
if(isset($_COOKIE[$nomcookie]))
{
$_COOKIE[$nomcookie]++;
setcookie($nomcookie,$_COOKIE[$nomcookie],time()+(3600*24*7));
} else {
setcookie($nomcookie,1,time()+(3600*24*7));
}
/********** Si no se ha excedido el no. Max de Votaciones desde la misma PC **********/
if($_COOKIE[$nomcookie] > 400)
{
$aceptovoto = 0;
}
else //Si no ha llegado al no. Max de votaciones entonces...
{
$aceptovoto = 1;
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>ENCUESTA VERSION 2.0</title>
<style type="text/css">
<!--
.Estilo1 {color: #000066}
.Estilo2 {
font-family: Verdana, Arial, Helvetica, sans-serif;
color: #990000;
font-size: 14px;
}
.fontrojo {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
font-size:14px;
color:#FF0000;
}
.Estilo3 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 9px;
}
.Estilo9 {font-size: 10}
-->
</style>
<script language="JavaScript" type="text/javascript" >
function checaclick()
{
var i=0;
var checado=0;
for(i=0;i<document.forms['frmencuesta'].respuestas.length;i++)
{
if(document.forms['frmencuesta'].respuestas[i].checked)
checado=1;
}
if(checado==0)
{
alert('Debe de seleccionar una opcion');
return false;
}
else{document.forms['frmencuesta'].submit()}
}
</script>
</head>
<body>
<h3 align="center" class="Estilo1">ESTA ES UNA PAGINA WEB</h3>
<p class="Estilo2">Y COMO PARTE DE LA PAGINA VAMOS A AGREGAR UN CUADRITO EN LA QUE SALGA UN SISTEMA DE ENCUESTAS A VER COMO QUEDA.</p>
<table width="742" border="0" cellpadding="0" cellspacing="0"><!--DWLayoutTable-->
<tr>
<td width="146">BLA BLA BLA BLA BLA BLA BLA </td>
<td width="274">IMG</td>
<td width="322" rowspan="2" nowrap bgcolor="#FFFFB3">
<?php
/*SCRIPT PARA ENCUESTA*/
if(isset($_POST['respuestas']))
{
include "conexion.php";
/*************************************************************************/
/*************************************************************************/
$valor=0;
$codresp = $_POST['respuestas'];
/*EN ESTE SELECT TOMO EL NO DE VOTOS (valores) QUE TIENE LA OPCION SELECCIONADA*/
$result=mysql_query("SELECT valores FROM resps WHERE codresp=$codresp", $conexion);
$row1=mysql_fetch_assoc($result);
$valor=$row1["valores"];
/*SI SE IMPRIME EN PANTALLA $row1["valores"] SE PUEDE VER QUE EN OCACIONES DEVUELVE 1 MAS DE LO QUE TENIA ORIGINALMENTE */
mysql_free_result($result);
/********** Si no se ha excedido el no. Max de Votaciones desde la misma PC **********/
if($aceptovoto == 0)
{
echo '<p class="Estilo1">'."Ya ha votado antes, Gracias".'<p></p>';
}
else /*Si no ha llegado al no. Max de votaciones entonces...*/
{
/*ACTUALIZO LA TABLA DE RESULTADOS*/
/*INCLUSO, AL ACTUALIZAR valores=valores+1 SE ACTUALIZA EN 2 VOTOS MAS, NO EN 1 MAS.*/
mysql_query("UPDATE resps SET valores = valores+1 where codresp=$codresp", $conexion);
}
/***********************************************************/
/*HAGO CONSULTA PARA DIBUJAR LOS RESULTADOS*/
$result=mysql_query("SELECT SUM(valores) AS TOTAL FROM resps where codigo=$codigo", $conexion);
$total=mysql_fetch_array($result);
mysql_free_result($result);
$result=mysql_query("SELECT * FROM resps where codigo=$codigo", $conexion);
##intentando crear 2 veces el mismo arreglo
##$row=mysql_fetch_array($result) y while ($row=mysql_fetch_array($result))
##la parte comentada aqui abajo esta dentro del while
/*$row=mysql_fetch_array($result);
$porcien=(($row[3]/$total[0])*100);
$porcien=round($porcien);
//100% = 100
echo '<span class="Estilo3">'.$row[2].'<br>';
echo '<span class="Estilo4"><img src="35.gif" width='.$porcien.' height="9">'.' '.$porcien.' %<p>';*/
while ($row=mysql_fetch_array($result))
{
$porcien=(($row["valores"]/$total["TOTAL"])*100);
$porcien=round($porcien);
echo '<span class="Estilo3">'.$row["respuesta"].'<br>';
echo '<span class="Estilo4"><img src="35.gif" width='.$porcien.' height="9">'.' '.$porcien.' %<p>';
}
echo '<p>';
echo '<p class="Estilo1">'."Total de Votos Emitidos: ".$total[0].'<p></p>';
}else
{
/*include("votar.php");*/
/*************************************************************************/
/*************************************************************************/
$respuestas=0;
echo '<form id="frmencuesta" name="frmencuesta" method="post" action="encuesta.php?'.$respuestas.'" onsubmit="return checaclick()" >';
include "conexion.php";
$yavoto=1;
$result=mysql_query("SELECT * FROM pregs ORDER BY codigo DESC", $conexion);
$row=mysql_fetch_array($result);
$codigo=$row["codigo"];
$pregunta=$row["pregunta"];
echo '<p class="Estilo3">'.$pregunta;
$result=mysql_query("SELECT * FROM resps where codigo=$codigo", $conexion);
/*$row=mysql_fetch_array($result);
echo '<br class="Estilo3"><input name="respuestas" type="radio" id='.$row[1].' value='.$row[1].' />';
echo '<label for='.$row[1].'>'.$row[2].'</label></br>';*/
while ($row=mysql_fetch_array($result))
{
if($row["codigo"]==$codigo){
echo '<br class="Estilo3"><input name="respuestas" type="radio" id='.$row["codresp"].' value='.$row["codresp"].' />';
echo '<label for='.$row["codresp"].'>'.$row["respuesta"].'</label></br>';
}
}
echo '<br></br>';
echo '<label>';
echo '<input type="submit" name="Submit" value="Votar">';
echo '</label>';
echo '<a href="catpregs.php" class="Estilo9">Catálogo de Preguntas |</a><span class="Estilo9"><a href="catreps.php">Catálogo de Respuestas </a></span>';
echo '</form>';
/*************************************************************************/
/*************************************************************************/
}
?> </td>
</tr>
<tr>
<td>TEXTO</td>
<td>TEXTO CON IMAGEN </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
</table>
<p class="Estilo2"> </p>
<p> </p>
</body>
</html>
Estoy desarrollando un formulario que contiene una encuesta en PHP y MySQL. El problema es que al elegir la opcion y luego votar se debería de sumar 1 voto a la opcion seleccionada, ya que uso los clasicos botones de Radio. PERO en ocasiones no suma 1 voto sino 2. Hasta ahora no he logrado descubrir si se sigue algun patrón para que se haga la suma de 2 votos y no 1.
Les dejo el codigo para ver si me pueden ayudar por favor.
Muchas Gracias.
<?php
include("conexion.php"); //me conecto a la BD
$result=mysql_query("SELECT * FROM pregs ORDER BY codigo DESC", $conexion);
$row=mysql_fetch_array($result);
$codigo=$row[0]; //Tomo el valor del codigo de la Pregunta actual.
$nomcookie="ACP".$codigo; //Creo un Nuevo nombre de Cookie
if(!isset($_COOKIE[$nomcookie])){
setcookie($nomcookie,0,time()+(3600*24*7));
}
if(isset($_POST['respuestas']))
{
/********** Actualizo la Cookie **********************/
if(isset($_COOKIE[$nomcookie]))
{
$_COOKIE[$nomcookie]++;
setcookie($nomcookie,$_COOKIE[$nomcookie],time()+(3600*24*7));
} else {
setcookie($nomcookie,1,time()+(3600*24*7));
}
/********** Si no se ha excedido el no. Max de Votaciones desde la misma PC **********/
if($_COOKIE[$nomcookie] > 400)
{
$aceptovoto = 0;
}
else //Si no ha llegado al no. Max de votaciones entonces...
{
$aceptovoto = 1;
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>ENCUESTA VERSION 2.0</title>
<style type="text/css">
<!--
.Estilo1 {color: #000066}
.Estilo2 {
font-family: Verdana, Arial, Helvetica, sans-serif;
color: #990000;
font-size: 14px;
}
.fontrojo {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
font-size:14px;
color:#FF0000;
}
.Estilo3 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 9px;
}
.Estilo9 {font-size: 10}
-->
</style>
<script language="JavaScript" type="text/javascript" >
function checaclick()
{
var i=0;
var checado=0;
for(i=0;i<document.forms['frmencuesta'].respuestas.length;i++)
{
if(document.forms['frmencuesta'].respuestas[i].checked)
checado=1;
}
if(checado==0)
{
alert('Debe de seleccionar una opcion');
return false;
}
else{document.forms['frmencuesta'].submit()}
}
</script>
</head>
<body>
<h3 align="center" class="Estilo1">ESTA ES UNA PAGINA WEB</h3>
<p class="Estilo2">Y COMO PARTE DE LA PAGINA VAMOS A AGREGAR UN CUADRITO EN LA QUE SALGA UN SISTEMA DE ENCUESTAS A VER COMO QUEDA.</p>
<table width="742" border="0" cellpadding="0" cellspacing="0"><!--DWLayoutTable-->
<tr>
<td width="146">BLA BLA BLA BLA BLA BLA BLA </td>
<td width="274">IMG</td>
<td width="322" rowspan="2" nowrap bgcolor="#FFFFB3">
<?php
/*SCRIPT PARA ENCUESTA*/
if(isset($_POST['respuestas']))
{
include "conexion.php";
/*************************************************************************/
/*************************************************************************/
$valor=0;
$codresp = $_POST['respuestas'];
/*EN ESTE SELECT TOMO EL NO DE VOTOS (valores) QUE TIENE LA OPCION SELECCIONADA*/
$result=mysql_query("SELECT valores FROM resps WHERE codresp=$codresp", $conexion);
$row1=mysql_fetch_assoc($result);
$valor=$row1["valores"];
/*SI SE IMPRIME EN PANTALLA $row1["valores"] SE PUEDE VER QUE EN OCACIONES DEVUELVE 1 MAS DE LO QUE TENIA ORIGINALMENTE */
mysql_free_result($result);
/********** Si no se ha excedido el no. Max de Votaciones desde la misma PC **********/
if($aceptovoto == 0)
{
echo '<p class="Estilo1">'."Ya ha votado antes, Gracias".'<p></p>';
}
else /*Si no ha llegado al no. Max de votaciones entonces...*/
{
/*ACTUALIZO LA TABLA DE RESULTADOS*/
/*INCLUSO, AL ACTUALIZAR valores=valores+1 SE ACTUALIZA EN 2 VOTOS MAS, NO EN 1 MAS.*/
mysql_query("UPDATE resps SET valores = valores+1 where codresp=$codresp", $conexion);
}
/***********************************************************/
/*HAGO CONSULTA PARA DIBUJAR LOS RESULTADOS*/
$result=mysql_query("SELECT SUM(valores) AS TOTAL FROM resps where codigo=$codigo", $conexion);
$total=mysql_fetch_array($result);
mysql_free_result($result);
$result=mysql_query("SELECT * FROM resps where codigo=$codigo", $conexion);
##intentando crear 2 veces el mismo arreglo
##$row=mysql_fetch_array($result) y while ($row=mysql_fetch_array($result))
##la parte comentada aqui abajo esta dentro del while
/*$row=mysql_fetch_array($result);
$porcien=(($row[3]/$total[0])*100);
$porcien=round($porcien);
//100% = 100
echo '<span class="Estilo3">'.$row[2].'<br>';
echo '<span class="Estilo4"><img src="35.gif" width='.$porcien.' height="9">'.' '.$porcien.' %<p>';*/
while ($row=mysql_fetch_array($result))
{
$porcien=(($row["valores"]/$total["TOTAL"])*100);
$porcien=round($porcien);
echo '<span class="Estilo3">'.$row["respuesta"].'<br>';
echo '<span class="Estilo4"><img src="35.gif" width='.$porcien.' height="9">'.' '.$porcien.' %<p>';
}
echo '<p>';
echo '<p class="Estilo1">'."Total de Votos Emitidos: ".$total[0].'<p></p>';
}else
{
/*include("votar.php");*/
/*************************************************************************/
/*************************************************************************/
$respuestas=0;
echo '<form id="frmencuesta" name="frmencuesta" method="post" action="encuesta.php?'.$respuestas.'" onsubmit="return checaclick()" >';
include "conexion.php";
$yavoto=1;
$result=mysql_query("SELECT * FROM pregs ORDER BY codigo DESC", $conexion);
$row=mysql_fetch_array($result);
$codigo=$row["codigo"];
$pregunta=$row["pregunta"];
echo '<p class="Estilo3">'.$pregunta;
$result=mysql_query("SELECT * FROM resps where codigo=$codigo", $conexion);
/*$row=mysql_fetch_array($result);
echo '<br class="Estilo3"><input name="respuestas" type="radio" id='.$row[1].' value='.$row[1].' />';
echo '<label for='.$row[1].'>'.$row[2].'</label></br>';*/
while ($row=mysql_fetch_array($result))
{
if($row["codigo"]==$codigo){
echo '<br class="Estilo3"><input name="respuestas" type="radio" id='.$row["codresp"].' value='.$row["codresp"].' />';
echo '<label for='.$row["codresp"].'>'.$row["respuesta"].'</label></br>';
}
}
echo '<br></br>';
echo '<label>';
echo '<input type="submit" name="Submit" value="Votar">';
echo '</label>';
echo '<a href="catpregs.php" class="Estilo9">Catálogo de Preguntas |</a><span class="Estilo9"><a href="catreps.php">Catálogo de Respuestas </a></span>';
echo '</form>';
/*************************************************************************/
/*************************************************************************/
}
?> </td>
</tr>
<tr>
<td>TEXTO</td>
<td>TEXTO CON IMAGEN </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
<tr>
<td> </td>
<td> </td>
<td> </td></tr>
</table>
<p class="Estilo2"> </p>
<p> </p>
</body>
</html>
Valora esta pregunta


0