Gonzo44
5.09.2007, 11:02:27
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
5.09.2007, 11:08:59
1.pola ukryte
2. sesje
3. ciasteczka
albo poprostu jak dane sa poprawne to odrazu zapisz, po co user ma klikać zapisz ?
Gonzo44
5.09.2007, 11:58:05
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
5.09.2007, 12:29:08
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
5.09.2007, 12:38:45
ok, dzieki. Biorę się za czytanie o sesjach.
markotny
5.09.2007, 19:54:54
Nie ma co czytać.
$_SESSION['nazwa zmiennej']=$_POST['zmiena z formularza'];
Wszystko
Gonzo44
7.09.2007, 11:54:55
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ą.
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
7.09.2007, 18:29:14
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ć
<?php
IF($_POST['sprawdz'] == "SPRAWDZ") {funkcja1;)
IF($_POST['zapisz'] == "ZAPISZ") {funkcja2;)
?>
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.