[HTML][PHP]Dziwne zachowania formularza, formularz przestaje wysyłać $_POST |
[HTML][PHP]Dziwne zachowania formularza, formularz przestaje wysyłać $_POST |
22.06.2020, 18:39:59
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 17.04.2018 Ostrzeżenie: (0%) |
Witam,
robię stronę z testami psychologicznymi na własny użytek. Dodaję kolejny test. W teście jest 567 pyt. Kod wygląda tak: CODE <?php @session_start(); require_once "connect.php"; ob_start(); if (!isset($_SESSION['zalogowany'])) { header('Location: index.php'); exit; } if (isset($_SESSION['nowymmpi'])) { $_SESSION['plec']=$_POST['plec']; $_SESSION['wiek']=$_POST['wiek']; $polaczenie= new mysqli($host, $db_user, $db_password, $db_name); if ($polaczenie->connect_errno!=0) { echo "Error: ".$polaczenie->connect_errno; } else { $data=date('Y-m-d'); $plec=$_SESSION['plec']; $wiek=$_SESSION['wiek']=$_POST['wiek']; $id=$_SESSION['id']; $test_id = rand(1,1000); $_SESSION['data']=$data; $_SESSION['testid']=$test_id; $polaczenie->query("INSERT INTO mmpi_skale (id, user_id, test_id, data, plec, wiek) VALUE ('', '$id', '$test_id', '$data', '$plec', '$wiek')"); $polaczenie->close(); } unset($_SESSION['nowymmpi']); } /*********** zapisywanie pytań do bazy ***********/ if (isset($_POST['odp'])) { $odp=$_POST['odp']; $nr_pyt=$_SESSION['nr']; $id=$_SESSION['id']; $test_id=$_SESSION['testid']; $data=$_SESSION['data']; $polaczenie= @new mysqli($host, $db_user, $db_password, $db_name); $polaczenie->query("INSERT INTO mmpi (id, user_id, test_id, data, nr_pyt, odp) VALUE ('', '$id', '$test_id', '$data', '$nr_pyt', '$odp')"); $polaczenie->close(); } /************* koniec zapisywania pytań do bazy ***********/ include_once("mmpipyt.php"); if (isset ($_POST['odp'])) { $_SESSION['nr']=++$_SESSION['nr']; }
W formularzu (na samym dole) wyświetla się treść pytania i należy wybrać odpowiedź "tak" lub "nie". Strona się przeładowuje i z każdym przeładowaniem zwiększa się o 1 $_SESSION ['nr'], dzięki czemu wyświetla się kolejne pytanie, a wcześniej właściwe pytanie (odpowiedź) zapisuje się do bazy. Pogrubiony if ma się włączyć po przeklikaniu wszystkich pytań. Po kliknięciu na ostatnie - 567. strona się przeładowuje i $_SESSION['nr'] powinno zwiększyć się do 568. Wtedy if ($nr>20) ($nr=$_SESSION['nr']) powinien zareagować i wykonać instrukcje. Kiedy w ifie dla przetestowania daję if($nr>10), wszystko jest ok. To samo z większymi numerami. Kiedy daję if($nr>200) - lub więcej niż 200, po przekroczeniu 200 if nie wykonuje instrukcji, a formularz wraca do pierwszego pytania. Jak zrobię takie kółko, w kodzie mogę np. przy 5. pyt. zmienić if na if($nr>10), ale wtedy nawet z taka małą liczbą nie zareaguje - po przekroczeniu 10. pytania, wraca do pierwszego. W sytuacji, kiedy if nie reaguje - np. przy if($nr>200), kiedy kliknę na 200. pytanie - formularz nie wysyła $_POST. Echo nie wyświetla jego zawartości, var_dump też nic nie pokazuje. Po powrocie do pierwszego pytania, kiedy zatoczę kółko, echo $_POST['odp'] wywala błąd. Kiedy po takim kółku kliknę na odpowiedź na pierwsze pytanie (formularz wyświetla się prawidłowo), $_POST znów się wysyła. Czy ktoś ma pomysł, na czym polega problem i jak zrobić, żeby if zaskakiwał? |
|
|
23.06.2020, 08:58:29
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Uzywaj BBCODE PHP dla kodu php nawet jak jest z html
Nie mieszaj kilku bbocde w jednym. Naprawde nie widzisz jak nieczytelne to jest? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
23.06.2020, 16:09:47
Post
#3
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 27.10.2015 Ostrzeżenie: (0%) |
Za dużo masz tutaj zamieszania zrób sobie normalnie klasę i wtedy wszystko będziesz widział z biznesowego punktu widzenia, a tak mieszasz zapytania do bazy z logiką - a zapytania do bazy to tylko szczegół implementacji:
i wtedy łatwiej zobaczyć co się dzieje i co chcesz osiągnąć, a potem implementujesz tylko metody w środku i działa jak bajka |
|
|
24.06.2020, 16:21:00
Post
#4
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 17.04.2018 Ostrzeżenie: (0%) |
nospor
Przepraszam za zamieszanie, ale na podglądzie wyglądało to inaczej. Obiecuję poprawę. javafxdev Dziękuję za odpowiedź. Wiem, że to wszystko jest mało porządnie napisane, ale jestem tylko początkującym hobbystą. Z tego co wiedzę, pewnie faktycznie muszę bardziej skupić się na obiektowym podejściu, bo wszystko będzie prostsze, ale najpierw muszę się trochę douczyć. A co do samego problemu, okazało się, że po wrzuceniu całego kodu na konto cba.pl wszystko działa. Winne są ograniczenia mojego Xamppa. Po przekroczeniu 165. pytania pamięć lub limit liczby zmiennych (stawiam na to drugie) został przekroczony i kolejne zmienne nie chciały się już zapamiętywać, dlatego formularz nie wysyłał $_POST. Po drobnej zmianie kodu wszystko działa również u mnie na Xamppie. Jeszcze raz dziękuję za odpowiedź. |
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 21:06 |