Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z zachowywaniem zmiennych po przeladowaniu strony i ich późniejszym skasowaniem
Forum PHP.pl > Forum > Przedszkole
Gonzo44
Witam

Mam następujący problem:
Na stronie znajduje się formularz z którego dane pobieram POSTem, obrabiam i wyświetlam poniżej formularza celem sprawdzenia przez użytkownika poprawności obróbki przez skrypt. Jeżeli wszystko jest OK, użytkownik klika zapisz i dane powinny zostać wprowadzone do bazy SQL.
Problemem jest to, że po drugim użyciu $_POST, skasowaniu ulegają zmienne pobrane przy pierwszym użyciu i nie można ich wykorzystać przy zapisie do bazy SQL.
Całość skryptu znajduje się w jednym pliku php.
Jak można przechowywać zmienne globalnie, aby były dostępne cały czas?

Pzdr
Gonzo44
cornholio666
1.pola ukryte
2. sesje
3. ciasteczka

albo poprostu jak dane sa poprawne to odrazu zapisz, po co user ma klikać zapisz ?
Gonzo44
Specyfika obrabianych danych wymaga ludzkiej kontroli nad nimi.
Konieczne jest zagwarantowanie aby nie doszło do żadnych przekłamań, czyli dokładnie te dane które widzi użytkownik zostają zapisane. Która z tych metod będzie w takim przypadku najlepsza?
Grzyw
Rozwiązałbym to poprzez sesje.
Skoro ma user kontrolować te wartości, wrzucaj je z sesji do pól, następnie po przesłaniu formularza aktualizuj ich wartości w sesji.
Gonzo44
ok, dzieki. Biorę się za czytanie o sesjach.
markotny
Nie ma co czytać. smile.gif
$_SESSION['nazwa zmiennej']=$_POST['zmiena z formularza'];

Wszystko smile.gif
Gonzo44
Co by nie mnożyć wątków pytam dalej.
Zmienne w sesji już mi ładnie zapamiętuje, ale nadchodzi moment kiedy trzeba je skasować by zrobić miejsce na nowe dane.
Strona tak jak poprzednio:
formularz
przycisk "sprawdz"
wyświetlenie obrobionych danych
przycisk "zapisz"

I teraz chciałbym aby po kliknięciu zapisz strona była czyszczona z danych.
na samym końcu mam dopisane dwie linijki:
unset( tutaj wszystkie zmienne oddzielone przecinkami);
session_destroy();
ale nadal po kliknięciu "zapisz" dane z miejsca "wyświetlenie obrobionych danych" nie znikają.
bmL
Nie wiem czy zrozumiałem :-P
Ale czy nie dzieje się tak bo przeglądarka automatycznie uzupełnia pola formularza (przeglądarka nie skrypt php)
Gonzo44
Nie.
Dane wyświetlane są w tabelce instrukcją echo $_SESSION['xxx'];


Właśnie na to wpadłem. Po każdym naciśnięciu przycisku cały plik ze skryptem i stroną jest przerabiany od nowa od pierwszej linii. Czyli czyszczenie zmiennych i zamykanie sesji jest później niż wyświetlanie danych. Dobrze myślę?
Jeżeli tak to wystarczyłoby na początku pliku umieścić
  1. <?php
  2. IF($_POST['sprawdz'] == "SPRAWDZ") {funkcja1;)
  3. IF($_POST['zapisz'] == "ZAPISZ") {funkcja2;)
  4. ?>

a htmlowe przyciski w dalszej części dokumentu?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.