Hola, tengo un sistema de votos simple en el que primero obtengo el numero de votos (5) y la suma de los votos (50) de la base de datos, para luego sumar 1 al numero de votos (5+1) y el voto en sí a la suma de votos (50+7).
Esto ultimo lo actualizo mediante un UPDATE pero al salir de la página donde ejecuta la consulta:
Código:
http://..../votar.php?voto=x&id=y
hacia
que es en la que se muestra el numero de votos y la nota.
Tanto la nota como el número de votos aparece como si los últimos valores añadidos se hubieran duplicado, es decir si deben salir 6 (5+1) votos, salen 7 (5+2), y la suma de los votos en vez de 57 (50+7), sale 64 (50+14).
En la BD también salen estos datos erroneos.
--------------------------------------------------------------------------------------------------- Esta es la consulta: Código PHP:
$aumentar_nota = mysql_query("UPDATE nombre_tabla SET votos_totales = '$sumar_voto', numero_de_votos = '$numero_de_votos', nota = '$nota' where id = '$id'",$conexion);
Explicación variables: Código PHP:
$numero_de_votos = $row["numero_de_votos"];
Código PHP:
$suma_de_votos = $row["votos_totales"];
Código PHP:
$numero_de_votos = $numero_votos + 1;
Código PHP:
$sumar_voto = $suma_de_votos + $_GET["voto"];
Código PHP:
$nota = $sumar_voto / $numero_de_votos;
Código PHP:
$id = $_GET["id"];
---------------------------------------------------------------------------------------------------
He hecho que aparezcan las variables antes y despues de la consulta con un echo para saber su valor, y estaban bien.
He realizado un SELECT después del UPDATE para comprobar los datos que se habían metido y estaban bien.
He añadido 1 while($numero < 1) para controlar que no pase por ahi 2 veces.
Tengo un sistema de cookies para que no se pueda votar 2 veces, por lo que no pasa 2 veces por la consulta.
Tenía un meta refresh para que te devolviera a la pagina anterior (ruta exacta de la página), lo he quitado y sigue pasando lo mismo.
Pienso que el problema está al abandonar la página donde se actualiza la nota, pero no tengo ni idea de porque ocurre esto.
---------------------------------------------------------------------------------------------------
¿Qué creéis que esta pasando?, gracias :)