We are in the process of migrating this forum. A new space will be available soon. We are sorry for the inconvenience.

podwójne wykonanie skryptu


lordvanyuri
31-05-2009, 21:51
Witam, w php jestem początkujący i nie znam wielu spraw. Poniższy problem już analizowałem jak sie tylko da i nic. Nie rozumiem gdzie jest błąd.

Chodzi o podwójne wykonanie skryptu. Dotyczy to komentarzy i np. głosowania.

Na stronie A jest OBIEKT, który można skomentować i ocenić na + i -.
Z bazy danych jest odczytywana odpowiednia wartość i wyświetlana.

Głosowanie.
Chcąc zagłosować np. na +. Klika się w link www.nazwa.pl/glosuj.php?id=12&akcja=plus

Na stronie glosuj.php jest prosty skrypt, który ma tylko zwiększyć wartość o jeden, a czasem zwiększa o 2. Dlaczego?
I to tylko zazwyczaj za pierwszym razem, bo dalej poruszając się po stronie, sytuacja się normalizuje i już działa poprawnie.
Oto skrypt na stronie glosuj.php:

$akcja=$_GET['akcja'];
$id=$_GET['id'];

if ($akcja=='plus') {
$wynik=mysql_query("UPDATE pytania SET glos=glos+1 WHERE id='$id'");
}

if ($akcja=='minus') {
$wynik=mysql_query("UPDATE pytania SET glos=glos-1 WHERE id='$id'");
}


Nic prostszego, prawda? Więc dlaczego, gdy skrypt się wykonuje, to zamiast zwiększyć/zmniejszyć wartość w bazie danych o jeden, zmienia ją o dwie jednostki?

Przy głosowaniu to tak źle nie wygląda, ale w systemie komentarzy już tak. Ponieważ dodaje mi dodatkowo jeden pusty komentarz, co już nie wygląda zbyt fajnie i estetycznie wizualnie... i go zlicza w bazie jako normalny.

O co w tym chodzi? gdzie jest błąd? Przecież ze strony z OBIEKTEM przekazuję wartość id przypisująca obiekt w bazie, oraz akcje, która identyfikuje, co ma być zrobione, a pomimo prostoty, gdzieś jest zapętlenie i czasem skrypt wykonuje się podwójne?????? Dlaczego?

Z góry będę wdzięczy za rozjaśnienie tej sprawy.

Pozdrawiam