Foros del Web » Programando para Internet » PHP »

Encuesta en php y mysql

Estas en el tema de Encuesta en php y mysql en el foro de PHP en Foros del Web. Buenos dias: Estoy haciendo una encuesta en php con mysql y para ello he creado dos tablas, encuestas y respuestas. Primero muestro la encuesta y ...
  #1 (permalink)  
Antiguo 29/03/2008, 06:31
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años, 7 meses
Puntos: 1
Encuesta en php y mysql

Buenos dias:
Estoy haciendo una encuesta en php con mysql y para ello he creado dos tablas, encuestas y respuestas.
Primero muestro la encuesta y en función del valor que elija el usuario se incrementa en un valor en la tabla respuestas, para guardarlo en la base de datos para posteriormente mostrarlo.
Entonces muestro la encuestay guardo la respuesta que ha elegido en $respuesta, y ahora en la tabla respuesta segun ese valor elegido deberia incrementar el valor de voto pero no lo hace.
Hago el siguiente update:
$SQLquery="UPDATE respuestas SET votos=votos+1 where (id_respuesta=".$respuesta.")";
donde respuestas es la tabla de las respuestas posibles que tengo
votos son los votos que se van haciendo
y id_respuesta es un identificador que guarda 1, 2, o 3 que es en funcion de las tres opciones posibles que existen para elegir en la encuesta.
$respuesta es el valor que ha elegido el usuario en la encuesta.
Y no se lo que hago mal pero no incrementa el valor de votos, en cambio si pongo el siguiente UPDATE:
$SQLquery="UPDATE respuestas SET votos=votos+1";
si que incrementa el valor de votos pero me cambia todas las filas de la tabla respuestas, y yo solo quiero que cambie aquella que coincida con la opcion elegida de la encuesta.
Espero que alguien sepa cual puede ser el posible error, y que estoy haciendo mal
Muchas gracias de antemano
Mari
http://www.puenteviejo.tk
  #2 (permalink)  
Antiguo 29/03/2008, 07:13
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 8 meses
Puntos: 25
Re: Encuesta en php y mysql

yo lo que te puedo pasar es una encuesta muy buena en PHP sin My sql muy modificable:

crea un archivo que se llame index.php ( o otra manera pero tenes qe modificar dsp)
y de contenido esto:

<?
include("config.php"); //incluimos el fichero config.php donde tenemos la configuración del script
if(!file_exists($file)) //si el txt no existe...
{
$fp=fopen($file,"w"); //creamos un txt por si no tá creado
fputs($fp,"0\n0\n0\n0"); //le ponemos las respuestas desde 0
fclose($fp); //cerramos el txt
}


?>
<form method=POST action="enc_ver.php">
<input type="radio" name="En" value="E1" checked><? echo $c1;?><br>
<input type="radio" name="En" value="E2"><? echo $c2;?><br>
<input type="radio" name="En" value="E3"><? echo $c3;?><br>
<input type="radio" name="En" value="E4"><? echo $c4;?><br>
<input type="submit" value="OK" name="Bot">
</form>
<p>

ahora crea un archivo que se llame: config.php

contenido:

<?
// CONFIGURACION DE LA ENCUESTA
$file="base.txt"; //nombre del txt en el que guardaremos los resultados

//Escribe tus respuestas para la encuesta
$c1="Nº 1"; //Encuesta nº 1
$c2="Nº 2"; //Encuesta nº 2
$c3="Nº 3"; //Encuesta nº 3
$c4="Nº 4"; //Encuesta nº 4
?>

crea un archivo que se llame: base.txt

contenido:

(vacio aca se van a guardar los resultados automaticamente)

ahora crea un archivo que se llame enc_ver.php contenido:

<?
include("config.php"); //incluimos el fichero config.php donde tenemos la configuración del script

$file2=file($file); //creamos el array con las lineas del archivo
$lineas=count($file2);//contamos los elementos del array, es decir el total de lineas
$n1=$file2[0]; //asignamos a la variable el nº de votos(la línea 1 del txt)
$n2=$file2[1]; //asignamos a la variable el nº de votos(la línea 2 del txt)
$n3=$file2[2]; //asignamos a la variable el nº de votos(la línea 3 del txt)
$n4=$file2[3]; //asignamos a la variable el nº de votos(la línea 4 del txt)


if($En=="E1") //si la respuesta es la opción 1...
{$nn1=intval($n1)+1;}else{$nn1=intval($n1);} //entonces sumamos uno a $nn1, si no, se keda igual
if($En=="E2") //si la respuesta es la opción ...
{$nn2=intval($n2)+1;}else{$nn2=intval($n2);} //entonces sumamos uno a $nn2, si no, se keda igual
if($En=="E3") //si la respuesta es la opción 3...
{$nn3=intval($n3)+1;}else{$nn3=intval($n3);} //entonces sumamos uno a $nn3, si no, se keda igual
if($En=="E4") //si la respuesta es la opción 4...
{$nn4=intval($n4)+1;}else{$nn4=intval($n4);} //entonces sumamos uno a $nn4, si no, se keda igual

$fp=fopen($file,"w+"); //abrimos de nuevo el txt borrándolo todo
fwrite($fp,"$nn1\n$nn2\n$nn3\n$nn4"); //escribimos en el txt los votos.. en su respectiva línea. NOTA: \n <- cambia de línea ;)
fclose($fp); //cerramos el txt

$ntotal=$nn1+$nn2+$nn3+$nn4; //contamos el nº total de votos

?>

<table border=0 cellpadding=0 cellspacing=0 width=188>
<tr>
<td colspan=3 width=186><strong><font face=Arial>Resultados Encuesta</font></strong></td>
</tr>
<tr>
<td width=46><font face=Arial><? echo $c1;?></font></td>
<td width=101><table border=0 cellpadding=0 cellspacing=1 width=100
bgcolor="#000080">
<tr>
<td><table border=0 cellpadding=0 cellspacing=0 width=<? echo $nn1*100/$ntotal;?> bgcolor=#FFFFFF
height=5>
<tr>
<td></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td width=37><p align=center><font face=Arial size=2><? echo $nn1;?></font></td>
</tr>
<tr>
<td width=46><font face=Arial><? echo $c2;?></font></td>
<td width=101><table border=0 cellpadding=0 cellspacing=1 width=100%
bgcolor=#000080>
<tr>
<td width=100%><table border=0 cellpadding=0 cellspacing=0 width=<? echo $nn2*100/$ntotal;?>
bgcolor=#FFFFFF height=5>
<tr>
<td></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td width=37><p align=center><font face=Arial size=2><? echo $nn2;?></font></td>
</tr>
<tr>
<td width=46><font face=Arial><? echo $c3;?></font></td>
<td width=101><table border=0 cellpadding=0 cellspacing=1 width=100%
bgcolor=#000080>
<tr>
<td width=100%><table border=0 cellpadding=0 cellspacing=0 width=<? echo $nn3*100/$ntotal;?>
bgcolor=#FFFFFF height=5>
<tr>
<td></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td width=37><p align=center><font face=Arial size=2><? echo $nn3;?></font></td>
</tr>
<tr>
<td width=46><font face=Arial><? echo $c4;?></font></td>
<td width=101><table border=0 cellpadding=0 cellspacing=1 width=100%
bgcolor=#000080>
<tr>
<td width=100%><table border=0 cellpadding=0 cellspacing=0 width=<? echo $nn4*100/$ntotal;?>
bgcolor=#FFFFFF height=5>
<tr>
<td></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td width=37><p align=center><font face=Arial size=2><? echo $nn4;?></font></td>
</tr>
<tr>
<td width=184 colspan=3><font face=Arial>Total encuesta: </font><font
color=#004080 face=Arial size=2><strong><? echo $ntotal;?></strong></font></td>
</tr>
</table>

<br>
<a href="index.php">Volver</a>


ES MUY BUENO, YA QUE TE DICE CUANTOS LO VOTARON Y AL LADO UNA BARRITA SI TIENE TODOS LOS VOTOS ESA OPCION LA BARRITA LLENA Y LAS DEMAS VACIAS..

ahora te paso el leeme.txt asi lo sabes programar:

Este script consta de:
index.php -> Índice de la encuesta
config.php -> Configuración del script
enc_ver.php -> Resultados de la encuesta
base.txt -> Donde guardaremos los resultados

Instalación:
Fácil, sólo tienes que subir en el servidor los archivos
mencionados antes. El archivo de txt "base.txt" por defecto
se creará sólo por si no estuviera ya creado.
  #3 (permalink)  
Antiguo 29/03/2008, 07:57
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años, 7 meses
Puntos: 1
Re: Encuesta en php y mysql

Muchas gracias por la respuesta.
Pero ya lo he solucionado, era un error tonto, ya que en el UPDATE ponia un nombre a la variable y en la base de datos estaba guardado con otro.
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 14:08.