• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Formularz na wielu stronach - pamiętanie danych

Object Storage Arubacloud
0 głosów
152 wizyt
pytanie zadane 2 marca 2019 w PHP przez sk8cik2 Nowicjusz (120 p.)
Cześć wszystkim,

Zaczynając od początku, stworzyłem w php formularz z quiz'em, którego pytania i odpowiedzi pobierają się z bazy danych i wyświetlają z użyciem pętli. Następnie formularz jest wysyłany metodą POST do pliku result.php gdzie następuje jego walidacja, prezentacja wyników i ich upload do bazy. Problem pojawił się w momencie, gdy chciałem "upiększyć" rozwiązanie tzn. podzielić quiz na strony po 5 pytań. Stronicowanie zrobione (metoda GET), działa elegancko natomiast nie jestem w stanie wykombinować jak zrobić aby zaznaczone odpowiedzi były zapamiętywane, przekazywane do kolejnych stron a finalnie do skryptu walidującego.

Proszę o pomoc. Może ktoś już się mierzył z podobnym problemem.

2 odpowiedzi

+1 głos
odpowiedź 2 marca 2019 przez niezalogowany
Mechanizm sesji jest rozwiązaniem twojego problemu.
komentarz 3 marca 2019 przez sk8cik2 Nowicjusz (120 p.)
Tak też się zastanawiałem, tylko jak umieścić te dane z formularza do sesji skoro submit'ując formularz mogę wysłać je do $_GET albo $_POST.
komentarz 3 marca 2019 przez niezalogowany
edycja 3 marca 2019

Zobacz np. tutaj: https://pl.wikibooks.org/wiki/PHP/Sesje

Sposób przesyłania danych (GET/POST) nie ma znaczenia. Robisz tak:

1. User wypełnia 1 stronę i submituje formularz.

2. Odbierasz dane, zapisujesz je jako zmienne sesyjne (np. $_SESSION[twoja_zmienna] = $pobrana_zmienna) i przekierowujesz usera na stronę 2.

3. User wypełnia stronę 2 i submituje formularz.

4. Odbierasz dane, zapisujesz je jako zmienne sesyjne i przekierowujesz usera na stronę 3.

I tak dalej do końca. Na końcowej stronie możesz zaprezentować wszystkie wyniki userowi.

To jeżeli chodzi o PHP. Można tez przy pomocy JS i zapamiętania danych w localStorage, ale chciałeś PHP.

 

+1 głos
odpowiedź 2 marca 2019 przez Tomek Sochacki Ekspert (227,510 p.)
Rozwiązań jest kilka, zależy co rozumiesz przez "kolejne strony". Ja bym to zrobił jako zmiany tylko client-side, jeśli nie masz tutaj typowego SPA Angular itp. to możesz sam żyć History API i zrobić sobie routing, są nawet gotowe libki do tego. Wtedy w jednym obiekcie w JS mógłbyś mieć cały stan.

Jeśli są to pełne przeładowania strony to możesz użyć jakiegoś client-side storage, np. localStorage czy IndexedDB i tam sobie stopniowo uzupełniać wszystko, a na koniec puścić w requeście komplet danych.

Możesz też puszczać requesty cząstkowe i magazynować na w back-endzie np. w bazie danych, tutaj jest wiele możliwości na ten cały problem, wszystko zależy od architektury aplikacji i od tego co dokładnie z tymi danymi robisz, czy chcesz je zabezpieczać per user np. gdy ktoś skończy na PC na stronie 3 i chciałby wrócić do tego na mobile... czy ma wtedy ruszać od zera...?
komentarz 3 marca 2019 przez sk8cik2 Nowicjusz (120 p.)
Dzięki za podpowiedzi, jednakże jak dotychczas nie znam JS. Tak na prawdę zaczynam w php a więc zależy mi na prostym lecz skutecznym/optymalnym rozwiązaniu w tym właśnie języku. Nie zależy mi na tym, aby dane były pamiętane w przypadku kontynuacji quizu na innym urządzeniu. Chodzi raczej o zapisanie ich w bieżącej sesji, aby dotrwały do końca quizu (ewentualnie jak ktoś będzie chciał wrócić i poprawić poprzednie pytania).

Podobne pytania

0 głosów
1 odpowiedź 215 wizyt
pytanie zadane 17 lipca 2017 w PHP przez fred Nowicjusz (140 p.)
0 głosów
1 odpowiedź 203 wizyt
pytanie zadane 2 listopada 2020 w PHP przez wius2012 Początkujący (330 p.)
0 głosów
2 odpowiedzi 137 wizyt
pytanie zadane 19 grudnia 2015 w PHP przez Paweł123 Nałogowiec (33,500 p.)

92,575 zapytań

141,424 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...