[PHP]Nie mogę sobie poradzić z zasięgiem zmiennej |
[PHP]Nie mogę sobie poradzić z zasięgiem zmiennej |
9.11.2012, 18:24:56
Post
#1
|
|
Grupa: Zarejestrowani Postów: 152 Pomógł: 4 Dołączył: 4.10.2012 Ostrzeżenie: (10%) |
Witam
Na początku dokumentu deklaruję zmienną :
Poniżej mam przycisk ( Calcule ):
Jeżeli zostanie on wciśnięty globalna zmienna $session, zostanie zmieniona na wartość true. W przeciwnym wypadku raczej tak się nie stanie. Oto drugi przycisk ( donating )
Tutaj już wiem, że zmienna $session zawsze ( czy wcisne Calcule czy nie ) jest równa wartości false i nie mogę się z tym uporać. Wybaczcie za literówkę (mouth) winno być (month) -------------------- C/C++/C#/JAVA/SQL ( funkcje, procedury, pakiety ).
|
|
|
9.11.2012, 18:27:38
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) |
Takie coś sprawdzaj, przecież już wcześniej dodajesz coś do sesji
$_SESSION['month']; Tutaj masz jeszcze przykłady: http://pl.wikibooks.org/wiki/PHP/Sesje |
|
|
9.11.2012, 20:01:09
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) |
Zmienna globalna, to nie to samo co zmienna sesyjna, jeśli masz na myśli, ze przycisk 1 i przycisk 2, to są dwa oddzielne pliki i w jednym zmieniasz wartość zmiennej globalnej, to drugi plik tego nie widzi. Jak wiesz zapewne z innych języków programowania chodzi o jej dostępność. Do przenoszenia zmiennych w obrębie witryny służy sesja, a nie zmienne globalne.
-------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
9.11.2012, 20:31:38
Post
#4
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) |
1. Ja się ciągle nie umiem nadziwić, dlaczego ludzie sobie tak komplikują życie, i nie dobierają odpowiednich narzędzi do odpowiedniego celu. Jak rozumiem, miesiąc jest WPISYWANY przez usera, tak? No to nie lepiej zrobić
i odczytywać po prostu $_POST['month'] dostając wartość numeryczną miesiąca? 2. Dziwi mnie fragment kodu:
Drugi jest niepotrzebny - jeśli tablica $_POST istnieje, to request method jest właśnie "POST". Jeśli już, to warunki powinny być zamienione miejscami. 3. Jak już piszesz w jednym pliku obsługę wielu rzeczy, czyli wyświetlania (GET) i przewarzania (POST), to sugeruję zrobić to na zasadzie:
4. A, user b4rt3kk zwrócił uwagę na jedną rzecz: powinieneś użyć sesji. Bo to co do tej pory robisz, to wygląda tak, że: a) idzie żądanie (GET) do wyświetlenia formatki - skrypt wyświetla formatkę i kończy działanie. user wprowadza dane na formularzu c) idzie żądanie (POST) do przetworzenia formatki (z danymi via $_POST). Zakładasz, że zmienna będzie istniała taka, jak w poprzednim skrypcie. A to niestety błąd - tamtego skryptu (ze wszelkimi zmiennymi) już dawno nie ma. Zobacz sobie opis z punktu wyżej. Przeanalizuj go. Ratunkiem dla Ciebie będą sesje. Ten post edytował abort 9.11.2012, 20:42:06 |
|
|
10.11.2012, 08:43:17
Post
#5
|
|
Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) |
Cytat if ($_SERVER['REQUEST_METHOD'] == 'GET') { // tu wyświetlamy formatkę (odczyt z bazy/sesji) } else { // równoważne if ($_SERVER['REQUEST_METHOD'] == 'POST') { // a tu przetwarzamy (zapis do bazy/sesji) } to akurat nie zawsze jest prawda Ale ogólnie cenne uwagi kolega Ci dał, nie komplikuj sobie życia ... -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 10:58 |