![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam następujący problem. Piszę w chwili obecnej skrypt ankiety. Będę chciał, aby użytkownikowi nie wyświetlać wszystkich na raz pytań tylko podzielić je na kilka ekranów. Pola, które już użytkownik wypełni będę chciał zapisywać w bazie. Chciałbym tutaj wykorzystać transakcje. Co jednak się stanie gdy użytkownik nie zakończy ankiety i tak po prostu wyłączy przeglądarkę. Czy istnieje coś takiego aby ustawić czas, po którym system sam wyda polecenie rollback? Pytanie dotyczy MySQL’a. Dzięki za odpowiedź. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 31.03.2002 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Może to odpowiedź nie na temat, ale czy nie lepiej zastosować sesje?
|
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
wydaje mi się, że wszystkie zapytaina które dostaną commit są traktowane jako rollback
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 23.08.2003 Skąd: Olsztyn, Polska Ostrzeżenie: (0%) ![]() ![]() |
Wszystkie zapytania, które nie dostaną commit są oczywiście traktowane jako rollback. Jednak wtedy gdy istnieje ciągłe połączenie z bazą danych, tak jak to może występować w przypadku serwisów internetowych, rollback nie jest domyślny, przynajmniej do czasu zamknięcia połączenia, co czasem może wystąpić po długim okresie. Próbowałem cosik znaleźć na ten temat w dokumentacji, ale nie za bardzo jest co. Więc teoretycznie fajnie by było taki rollback wykonać co jakiś czas, np. przed zakończeniem połączenia w wywołaniu mysql_close, ale nie piszą jak to by wszystko działało. W takim przypadku rozwiązanie wykorzystujące sesje php jest chyba lepsze.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Hmm... chyba faktyczne lepsze beda sesje. Mam w zwiazku z tym nastepujace pytanie. W jaki sposob zaprojektowac baze danych. Czy uzasadnione jest stosowanie np. jakiejs tabeli tymczasowej, w ktorej bede przechowywal aktualny stan wypelniania ankiety a dopiero po zakonczeniu przy ostatnim ekranie przekopiuje dane z tej tabeli tymczasowej do mojej glownej tabeli. Wowczas w mojej 'ostatecznej' tabeli pozbede sie sytuacji w ktorej bede mial puste rekordy czyli czegos co nie powinno byc w bazie danych. Tabele tymczasowa bede mogl sobie co jakis czas wyczyscic aby nie zbierac smieci. Czy stosowanie tymczasowych tabel np. w podobnych lub tez innych projektach jest stosowane/dopuszczalne?
Dzieki za dotychczasowe odpowiedzi i te nastepne. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Wyniki cząstkowe trzymaj w zmiennych sesyjnych. A je możesz trzymać np. w bazie w specjalnej tabeli o takim schemacie:
[sql:1:2fbd55b770]create table sesje (session_id char(32), dane text)[/sql:1:2fbd55b770] Funkcja session_set_save_handler pozwala na ustawienie swoich funkcji obsługujących przechowywanie danych w sesji, więc nie powinieneś mieć z tym problemu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 01:31 |