Avatar Image
Usuario habitual
Usuario habitual

He realizado una encuesta y un código para evitar que alguien vote 2 veces (mirando ips).
El caso es que me funciona si hay votos, pero si nadie ha votao a la encuesta, no va.

Codigo:

$votodoble = mysql_query("SELECT encuesta, ip FROM encuesta WHERE 1 AND encuesta LIKE '$encuesta' and ip LIKE '$ip'")or exit;

if ($votodoble="0") //si el que pulsa no ha votado ya a la misma encuesta
{
mysql_query("insert into encuesta (encuesta,opcion,fecha,ip,host) values ('$encuesta','$opcion','$fecha','$ip','$host')") ;

//cerramos la conexión a la bd
mysql_close();

Qué habría que modificar para que fuera también cuando se vota por primera vez?
Avatar Image
Usuario habitual
Usuario habitual

Bueno, investigando me he dado cuenta de que en realidad el voto no se efectúa nunca.

Éste es el código entero:

Codigo:

if (isset($_POST['submit']))
{

include('configencuesta.php');
$fecha =date("d/m/y H:i:s");
$ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
gethostbyaddr($ip);
$host=gethostbyaddr($ip);
$encuesta="primera";

$votodoble = mysql_query("SELECT encuesta, ip FROM encuesta WHERE 1 AND encuesta LIKE '$encuesta' and ip LIKE '$ip'");

if ($votodoble="0") //si el que pulsa no ha votado ya a la misma encuesta
{
mysql_query("insert into encuesta (encuesta,opcion,fecha,ip,host) values ('$encuesta','$opcion','$fecha','$ip','$host')") ;

//cerramos la conexión a la bd
mysql_close();
}


//cerramos la condicion de pulsar
}

Me puede ayudar alguien?
Avatar Image
Usuario habitual
Usuario habitual

Lo que quiero es que si se encuentra una coincidencia en la tabla de la bd en que la columna encuesta sea "primera" y la columna ip sea la ip del visitante, no pueda votar.

Y en caso contrario, que se realize el voto.


Cuál es el fallo? o no se debería hacer así?
Por favor, ayúdenme

Avatar Image
Okupa del foro
Okupa del foro

enseñanos el código de tu form...

Atomo64
Machacateclados
Machacateclados

o puedes insertar cookies cuando ya votaron, así te ayuda, además del sistema en mysql, por que hay veces que cambia la ip, o utiliza nombres de usuarios

Avatar Image
Okupa del foro
Okupa del foro

donde if ($votodoble = "0&quot

eso esta mal, porque $votodoble, es un query de mysql,
si acaso deberias de poner

mysql_result(mysql_query());
etc....
pero yo te recomiendo hacer otra cosa,
un array de la fila, y comprobar haver si su ip ha votado, porque eso no es para nada algo "bién echo."

Avatar Image
Okupa del foro
Okupa del foro

Todo esto me ha empeñado a hacer un pequeño código!!!! :

Codigo:
function revisaVoto($ip,$id){
$ssql = mysql_query("SELECT * FROM votos WHERE ip = '$ip' AND id='$id'");
if($row = mysql_fetch_array($ssql){
return "yavoto";
}else{
return "novoto";
}
}
//He puesto un id en la funcion y en el query, representa la ID de la encuesta.
if(revisaVoto($_SERVER[REMOTE_ADDR],'1') == "yavoto"){
echo "No puedes volver a votar, ya votaste!";
}else{
$ssql = "SQL DE LA INSERCION";
if(mysql_query($ssql)){
echo "Tu voto se ha guardado correctamente";
}else{
echo "ERROR MySQL: <br>" . mysql_error();
}
}


Bye!
Avatar Image
Usuario habitual
Usuario habitual

Gracias por tanto esfuerzo ivanito, pero tras corregir paréntesis y cambiar cosas me seguían saliendo errores por todos los sitios.
Así que buscando y buscando encontré ésto, que adaptándolo, me sirvió bien:

http://desaweb.forosdelweb.com/showthread.php?p=785914#post785914


Gracias de todas formas por tanto interés

Avatar Image
Okupa del foro
Okupa del foro

Gueno, jeje, siempreme gusta ayudar!

MMM en esa url no veo nada de encuestas!

bye"

labete666
Usuario habitual
Usuario habitual

Lo que necesitabas era condicionar a que la búsqueda primera no obtenga ninguna fila, o sea necesitabas usar la función mysql_num_rows()
[cita]
<?
if (isset($_POST['submit']))
{

include('configencuesta.php');
$fecha =date("d/m/y H:i:s&quot;
$ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
gethostbyaddr($ip);
$host=gethostbyaddr($ip);
$encuesta="primera";

$votodoble = mysql_query("SELECT encuesta, ip FROM encuesta WHERE 1 AND encuesta LIKE '$encuesta' and ip LIKE '$ip'&quot;

if (mysql_num_rows!=0) //si el que pulsa no ha votado ya a la misma encuesta
{
mysql_query("insert into encuesta (encuesta,opcion,fecha,ip,host) values ('$encuesta','$opcion','$fecha','$ip','$host')&quot ;

//cerramos la conexión a la bd
mysql_close();
}


//cerramos la condicion de pulsar
}
?>[/cita]

Creo que eso debería de funcionar

Salu2

Avatar Image
Okupa del foro
Okupa del foro

Y?
a que viene ese post?
bueno, es igual


if (mysql_num_rows!=0) //si el que pulsa no ha votado ya a la misma encuesta
{

eso esta fatal!!!!!
el mysql_num_rows de k es????
bueno, yo hize funciones para que se entiendan más, y las pueda usar por todo el script.

Bye!

labete666
Usuario habitual
Usuario habitual

Se me olvidó pasar la variable y encima el condicinante no era distinto sino igual, con lo cual tienes razón en que esta fatal:

if (mysql_num_rows($voto_doble)==0)

Pero tu no eres nadie para decir si está bien o mal postear, el tema esta abierto, lo que pongo está relacionado con el hilo, además es interesante, es otra alternativa a lo anteriormente comentado. Lo único que sí estaba incorrecto.

En cualquier caso si los moderadores (cosa que tu no eres estiman oportuno borrar mi post pués adelante), pero ellos no tú .

No serás de esos usuarios que quieren acaparar el foro y piensan que cuando responden ellos ya los demás se han de callar la boca

Salu2

Avatar Image
Usuario habitual
Usuario habitual

Tranquilos, os agradezco a los dos la ayuda.

Avatar Image
Okupa del foro
Okupa del foro
Escrito originalmente por labete666
Se me olvidó pasar la variable y encima el condicinante no era distinto sino igual, con lo cual tienes razón en que esta fatal:

if (mysql_num_rows($voto_doble)==0)

Pero tu no eres nadie para decir si está bien o mal postear, el tema esta abierto, lo que pongo está relacionado con el hilo, además es interesante, es otra alternativa a lo anteriormente comentado. Lo único que sí estaba incorrecto.

En cualquier caso si los moderadores (cosa que tu no eres estiman oportuno borrar mi post pués adelante), pero ellos no tú .

No serás de esos usuarios que quieren acaparar el foro y piensan que cuando responden ellos ya los demás se han de callar la boca

Salu2

Ja, no tengo ganas de discutir, pero bueno, lo que has echo, era menospreciar mi post, almenos al ver que simplificabas, le quitabas importancia.
bye
labete666
Usuario habitual
Usuario habitual

Si el hecho de presentar una opción más corta y más rápida es menospreciar creo que todos deberíamos plantearnos cuál es el objetivo de un foro temático sobre PHP.
El objetivo es aprender. Yo simplemente presenté una opción distinta y no creo que eso deba de molestar a nadie.

Pero si incluso tu deberías estar contento de que en un foro que frecuentas alguién presente otras opciones, porque eso es signo de que la gente quiere colaborar y participa.

Aquí no estamos para sentar catedra con nuestras respuestas, sino para ayudar en lo que podemos y para aprender(sobre todo).

Salu2

Avatar Image
Okupa del foro
Okupa del foro

Bueno, pues disculpa, y gracias

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 02/Feb/2006, 00:21
xxxCloud_Striferxxx MaIcOl ArTMOSaik pacopakito46kFeb/08
Por: , el 16/Mar/2003, 21:29
Xmortal13kMar/03