Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 12.11.2011 Ostrzeżenie: (0%)
|
Witam..
Nie mogę sobie poradzić z jedną rzeczą.. Potrzebuję zrobić coś takiego: Formularz ma trzy rubryki : - nazwa - cena - koszt W zależności od tego czy koszt jest "0" czy jest inny potrzebuje: - jeżeli jest 0 to dodać rekord do bazy danych - jeżeli coś w formularzu kosztów wpiszę chcę by przekierowało mnie i przekazało dane do strony gdzie będę jeszcze mógł uzupełnić opis kosztów i dopiero to wszystko wysłać do bazy.. Co do kodu.. 1) Sam formularz
2) Plik add.php
Tu w przypadku else próbowałem przekierować dane GET'em do strony costs.php gdzie mógłbym dodać opis kosztów.. Niestety całe powyższe rozwiązanie nie działa.. W przypadku gdy koszt jest wpisany 0 to rekord dodaje się do bazy bez problemu natomiast gdy wpiszę cokolwiek innego poza zerem nic się nie dzieje.. Ma ktoś pomysł jak to rozwiązać? ewentualnie gdzie popełniłem błąd?? Pozdrawiam serdecznie |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%)
|
Możesz:
1. Dane zapisać i odczytać w/z $_SESSION. 2. Użyć url_encode() i url_decode(), bo jeśli wpisane dane zawierają znaki specjalne, spacje i tym podobne, to nie zostaną przekazane lub będą obcięte. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 12.11.2011 Ostrzeżenie: (0%)
|
Mimo dodania encode i decode nic się nie dzieje.. W Sesji nie bardzo mam pomysł jak to rozwiązać
Normalnie dane z POSTa zapisać do sesji i na na następnej stronie je odczytać? Coś czuje że mogę nie poradzić sobie technicznie |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 4 Dołączył: 13.10.2009 Ostrzeżenie: (0%)
|
Ogólnie można to też zrobic na klasie,
ale wydaje mi się, że jeżeli w cost.php masz jakies dane wyświetlania to zamiast przejścia możesz je wczytać do add.php przez include i wówczas będziesz miał wszystkie zmienne z $_post podeslij jeszcze plik cost Ten post edytował Micchaleq 17.11.2011, 12:20:26 -------------------- |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%)
|
Użycie klasy niczego tutaj nie zmieni, bo nie w tym problem. Zresztą wartości pól klasy i tak trzeba by było gdzieś (np. sesja) przechować. Problem w tym, że funkcja header() jest użyta nieprawidłowo. Powinno być:
Gwoli wyjaśnienia, problemem jest brak Location: , natomiast funkcji urlencode() użyłem, aby można było przesyłać również znaki specjalne (jak np. spacja). Jednak do rozwiązania problemu użyłbym sesji, jak wcześniej wspomniałem. Zresztą nie ma w tym nic trudnego:
W powyższym kodzie zgrupowałem wszystkie informacje w tablicy o indeksie 'add', jednak Ty możesz użyć innego indeksu, albo zapisać wszystko bezpośrednio w $_SESSION. |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 12.11.2011 Ostrzeżenie: (0%)
|
Mortus.. Bardzo dziękuję za przykład rozwiązania problemu, oczywiście wszystko działa już jak należy
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 4 Dołączył: 13.10.2009 Ostrzeżenie: (0%)
|
i tak wydaje mi się, że w pliku cost.php jest kolejny formularz w tym też przypadku tak jak pisałem poza sesjami można by skorzystać z wczytania formularza do pliku add.php w przypadku kiedy koszta != 0
-------------------- |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%)
|
i tak wydaje mi się, że w pliku cost.php jest kolejny formularz w tym też przypadku tak jak pisałem poza sesjami można by skorzystać z wczytania formularza do pliku add.php w przypadku kiedy koszta != 0 Nie można, zmienne w PHP nie są bytem trwałym. Każde żądanie (wejście na stronę, odświeżenie strony) powoduje wygenerowanie i wczytywanie nowej zawartości, wykonanie skryptu ponownie. Zatem po przejściu z pliku add.php do costs.php zmienne z add.php kończą żywot. Mechanizmy, które pozwalają nam przechowywać te zmienne to m.in. ciasteczka, sesje, a w szczególnych przypadkach bazy danych, czy pliki. |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 4 Dołączył: 13.10.2009 Ostrzeżenie: (0%)
|
Nie można, zmienne w PHP nie są bytem trwałym. Każde żądanie (wejście na stronę, odświeżenie strony) powoduje wygenerowanie i wczytywanie nowej zawartości, wykonanie skryptu ponownie. Zatem po przejściu z pliku add.php do costs.php zmienne z add.php kończą żywot. Mechanizmy, które pozwalają nam przechowywać te zmienne to m.in. ciasteczka, sesje, a w szczególnych przypadkach bazy danych, czy pliki. Nie przeczytałeś mojego postu ze zrozumieniem. Wydaje mi się, że plik cost.php zawiera formularz w większości html, więc index.php->add.php ( if$koszt != 0, include cost.php ) i pracujemy na pliku add.php mając wewnątrz wczytany plik cost.php -------------------- |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 12.11.2011 Ostrzeżenie: (0%)
|
i pracujemy na pliku add.php mając wewnątrz wczytany plik cost.php Ja generalnie potrzebuję wyświetlić ten plik.. Wczytanie go nic mi nie da - na jedno by wyszło jakbym kod PHP z costs.php zamieścił od razu w pliku add.php.. Fizycznie chodzi o to by: - jeżeli w formularzu w add.php wpiszę koszty = 0 - zapisuje mi dane do bazy - natomiast gdy wpiszę już jakąś sumę wtedy przekierowuje mnie do drugiego formularza w którym to wypełniam sobie co to za koszty i dopiero całość zapisuję do bazy danych.. Metoda z headerem i przekierowaniem danych getem do costs.php działa poprawnie także nie ma co już tutaj ruszać Teoretycznie mógłbym jeszcze wszystko zrobić w pliku add.php na zasadzie if($koszt == 0) oraz elseif($koszt != 0) natomiast formularz kosztów będzie operować na innej tabeli w bazie i wolałem mieć go oddzielnie |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 4 Dołączył: 13.10.2009 Ostrzeżenie: (0%)
|
Wydaje mi się, że jeżeli chodzi o wydajność to nie ma większego znaczenia czy go wczytasz czy go przekierujesz. Chciałem jedynie zaprezentować, ze nie konieczne jest używanie sesji w tym przypadku.
- Nie to samo, bo teoretycznie trzymasz formularze w 2 różnych plikach, jedynie wywołanie jest w jednym. -------------------- |
|
|
|
![]() ![]() |
|
Aktualny czas: 20.08.2025 - 03:47 |