Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[PHP+PostgreSQL] Podwojne inserty

0 views
Skip to first unread message

Sławek Mróz

unread,
Jan 23, 2003, 11:10:28 AM1/23/03
to
Hej!

Dzieja mi sie dziwne rzeczy.

W skrypcie PHP wstawilem instrukcje pg_Exec z insertem i, co ciekawe,
zdarzaja sie przypadki, ze zapisze mi w bazie (PostgreSQL) rekord podwojnie
(kilka procent).
Zaznaczam, ze nie jest to na pewno wynik odswiezania strony, sprawdzilem,
oba rekordy sa zapisane w identycznym czasie.

Zdarzylo sie cos takiego komus??
Help!

Slawek


aasat

unread,
Jan 23, 2003, 1:02:58 PM1/23/03
to

Użytkownik "Sławek Mróz" <s.m...@sacel.com.pl> napisał w wiadomości
news:b0p3eg$q6f$1...@news.tpi.pl...
uzwam PHP raz z Postgresem od ponad roku
pracowalem na roznych wersjach php i postgresa

nigdy mi sie cos takiego nie zdarzylo

pozdr
aasat

HM

unread,
Jan 23, 2003, 8:17:55 PM1/23/03
to
Czy na pewno sprawdzales czas insertu ? W jakis inny sposob niz timestamp
default now() ?
Czy przypadkiem nie wysylasz formularza <input type="image"
onClick="document.form.submit()"... ?
Tak pytam bo 95% przypadków z podwójnym insertem to blad w logice skryptu
badz podwojny submit ?


Sławek Mróz

unread,
Jan 24, 2003, 3:48:01 AM1/24/03
to
> Czy przypadkiem nie wysylasz formularza <input type="image"
> onClick="document.form.submit()"... ?

Formularz, a wlasciwie jego dane, przekazywane sa javascriptem do okienka
popup, a submit jest zablokowany.
Poza tym, gdyby byl podwojny submit, to pewnie 100% rekordow byloby
zdublowanych, a sa tylko wybiorcze i , jak dotad, nie mam pojecia na jakiej
zaleznosci sie to opiera.

> Tak pytam bo 95% przypadków z podwójnym insertem to blad w logice skryptu
> badz podwojny submit ?
>
>

Przed insertem jest polecenie kasujace kazdy podobny wpis (juz tak sie "na
chama" zabezpieczylem), wiec teoretycznie kazdy wpis powinien byc
poprzedzony malym czyszczeniem.

Jako parametru czasu uzylem funkcji time() - dla odswiezen, mam nadzieje,
powinna wystarczyc?

A jakie jest to pozostale 5 %?

SLawek


Grzegorz Szyszlo

unread,
Jan 24, 2003, 4:38:28 AM1/24/03
to
Sławek Mróz wrote:

tak. explorery glupieja. sprawdz w logach serwera WWW. taki explorer
potrafi
odeslac formularz do serwera dwa razy.

--
/===================================\ oOOo (C) Publikacja tego
| http://avalon.wbc.lublin.pl/~znik/ \===\__/==\ artykulu wymaga
| Grzegorz Szyszlo mailto:zn...@wbc.lublin.pl | rzetelnosci
\==============================================/ dziennikarskiej.

Sławek Mróz

unread,
Jan 24, 2003, 6:19:41 AM1/24/03
to

> tak. explorery glupieja. sprawdz w logach serwera WWW. taki explorer
> potrafi
> odeslac formularz do serwera dwa razy.
>
O to, to ,tooooo!

Masz pomysl, jak sie przed takim cudem obronic, czy od razu instalowac
przegladarke "alternatywnego producenta"??

Pozdr
Slawek


Sławek Mróz

unread,
Jan 24, 2003, 7:21:06 AM1/24/03
to
Zauwazylem, ze podwojne rejestracje odwolan do plikow w logach dotycza tych
skryptow, ktore drukuja sie od razu po wyswietleniu
(funkcja print() w javascripcie, ale to juz chyba NTG)

Pozdr
Slawek


Grzegorz Szyszlo

unread,
Jan 24, 2003, 9:08:59 AM1/24/03
to
Sławek Mróz wrote:

> O to, to ,tooooo!
>
> Masz pomysl, jak sie przed takim cudem obronic, czy od razu instalowac
> przegladarke "alternatywnego producenta"??

znam tylko jeden sposob. zakladasz sobie sekwencje, a we wszystkich
formularzach
wrzucasz pole ukryte do ktorego te sekwencje upychasz.
robisz tez baze zrealizowanych zapytan/operacji, z jedna kolumna,
zapisanymi sekwencjami, i jedynym unikalnym primary_key.
formularz cos zapisuje, wiec najpierw probujesz upchnac numer do bazy
wykonanych operacji. jak sie dalo upchnac, robisz to co zwykle.
jak sie nie da, to nie upychasz, jedynie realizujesz sama informacje
zwrotna ze upchniecie sie powiodlo.

btw. taka baze sekwencyjna musisz co jakis czas czyscic, bo bedzie ci
tylko
plac zapychac :) w kazdym razie jak sadze, jest to dobra ochrona
przed wybrykami microsoftu.

0 new messages