Foros del Web » Programando para Internet » PHP »

un voto por articulo y usuario

Estas en el tema de un voto por articulo y usuario en el foro de PHP en Foros del Web. Hola he hecho un script que permite votar solo una vez por usuario utilizando las cookies, pero el problema que tengo esque si quiero votar ...
  #1 (permalink)  
Antiguo 16/04/2010, 09:03
 
Fecha de Ingreso: enero-2010
Mensajes: 373
Antigüedad: 14 años, 3 meses
Puntos: 5
un voto por articulo y usuario

Hola he hecho un script que permite votar solo una vez por usuario utilizando las cookies, pero el problema que tengo esque si quiero votar otro articulo no me deja, entonces para que un usuario pueda votar una vez en cada articulo tendria que hacer que se registren o de que manera lo podria hacer?
dejo mi script por si alguien lo quiere ver o por si a alguien le sirve (aunque ya digo te sirve si es para una encuesta o algo asi)

Cita:
<?
extract($_POST);
$sql = "SELECT * from casas
WHERE casas.nombre='".$foro."' ";

$res=mysql_query($sql,$db);
$nfilas = mysql_num_rows ($res);
if ($nfilas > 0)



{
$resultado = mysql_fetch_array ($res);
$valoracioN_total=@round($resultado[ptos]/$resultado[num_votos],2);
if(isset($_POST[valor])){

if ($_COOKIE['unvoto'] == "si") {echo "ya voto";}else { setcookie("unvoto", "si", time()+3500, "/","");


if(mysql_num_rows($res)==0){
@mysql_query("UPDATE casas SET num_votos=num_votos+1,ptos=ptos+".$_POST[valor]." WHERE id_c='" . $resultado['id_c'] . "'")or die ('ERROR AL INSERTAR REGISTRO: '.mysql_error());
}else{
@mysql_query("UPDATE casas SET num_votos=num_votos+1,ptos=ptos+".$_POST[valor]." WHERE id_c='" . $resultado['id_c'] . "'")or die ('ERROR AL MODIFICAR REGISTRO: '.mysql_error());
}
}
header('Location:'.$REQUEST_URI);
exit;
}



echo "lo que quieres que muestre el php\n";

Última edición por kai89; 16/04/2010 a las 11:38
  #2 (permalink)  
Antiguo 16/04/2010, 09:35
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: un voto por articulo y usuario

No hace falta que se registren, simplemente tienes que guardar en las cookies otro dato más indicando en que encuesta han votado, podrías meter un array en la cookie, algo como

$encuesta[0] = 1;
$encuesta[1] = 0;
$encuesta[2] = 1;
$encuesta[3] = 0;

setcookie("encuesta[0]", $encuesta[0], time()+3600);
setcookie("encuesta[1]", $encuesta[1], time()+3600);
setcookie("encuesta[2]", $encuesta[2], time()+3600);
setcookie("encuesta[3]", $encuesta[3], time()+3600);

Eso crea el array $_COOKIE['encuesta'], donde accedes a los valores de esta manera:
$_COOKIE['encuesta'][0]
$_COOKIE['encuesta'][1]
$_COOKIE['encuesta'][2]
$_COOKIE['encuesta'][3]


Espero haberte dado una idea.


Un saludo
  #3 (permalink)  
Antiguo 16/04/2010, 09:40
Avatar de kahb89  
Fecha de Ingreso: marzo-2010
Ubicación: caracas, Venezuela
Mensajes: 57
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: un voto por articulo y usuario

hola, yo lo haria de la siguiente forma, cada usuario que entre a la "encuesta" podria votar una sola vez por cada articulo; a mi me toco hacer algo parecido y lo que hic fue tomar la ip del host que esta votando y esa ip podria votar una solo vez x cada articulo, teniendo es cuenta que cada articulo debe poseer un contador propio, que permitar almacenar la cantidad de votos y las ip q votaron por el.
  #4 (permalink)  
Antiguo 16/04/2010, 11:41
 
Fecha de Ingreso: enero-2010
Mensajes: 373
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: un voto por articulo y usuario

Gracias a los dos por responder me a servido de mucho,ya me funciona al final lo que he hecho es lo que dice helios guardar un dato mas en las cookies pero sin necesidad de crear el array, lo que hice fue guardar el id(clave primaria) del articulo y que luego compruebe si con esa cookie an votado en ese id.
Pero ahora tengo otra duda no quiero que haya opcion de tiempo, y probe quitandola pero sin eso no va, alguien save que puedo hacer?

Etiquetas: articulos, votos, usuarios
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 00:12.