Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wybór opcji w formularzu z zapisem do bazy
andrzej11
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.12.2017

Ostrzeżenie: (0%)
-----


Witam, sprawa wygląda następująco..
Mam do wyboru trzy opcje - jedna musi być koniecznie zaznaczona ponieważ jest to potwierdzenie na przesyłanie ofert handlowych, a dwie pozostałe są opcjonalne i maksymalnie tylko jedna z nich może być zaznaczona.
Mam zrobione zapisywanie w sesji zaznaczeń oraz adresu email wpisanego w formularzu, tak aby w razie niepowodzenia nie było potrzeby wpisywania drugi raz adresu czy zaznaczania ponownie wyboru (bo wszystko jest sprawdzane i jak coś co jest wymagane nie jest spełnione wyrzuca błąd, że trzeba poprawić, a jak jest wszystko ok to dodaje do bazy danych).
Moim problemem jest to, że jak właśnie zaznaczę jedną z tych dwóch opcjonalnych opcji, a np. nie wypełnię pola z adresem email - czyli wyrzuci mi błąd to mimo, że zaznaczyłem opcję drugą, przeskakuje mi na pierwszą. Opcje korzystają z tej samej sesji, dzięki temu mogę wybrać maksymalnie jedną z nich bo wybierając drugą przełącza mi się z tej pierwszej. Podejrzewam, że to właśnie powoduje ten problem, ale nie wiem jak go rozwiązać...

W chwili obecnej w bazie zapisuje się tylko adres email, a chciałbym jeszcze osiągnąć zapisywanie opcji zgodnie z tą która została wybrana.

Kończąc dodam tylko, że moja znajomość php jest jeszcze (mam nadzieję (IMG:style_emoticons/default/biggrin.gif) ) nie zbyt wielka, nie potrafiłem sobie z tym sam poradzić przez kilka h dlatego postanowiłem poprosić o pomoc (IMG:style_emoticons/default/smile.gif)

Formularz:
  1. <label>
  2. <input type="radio" name="zgoda" <?php
  3. if (isset($_SESSION['zapamietaj_zgode']))
  4. {
  5. echo "checked";
  6. unset($_SESSION['zapamietaj_zgode']);
  7. }
  8. ?>/> Zgadzam się na przesłanie ofert handlowych na podany e-mail
  9. </label>
  10. <br/>
  11. <label>
  12. <input type="radio" name="opcja" <?php
  13. if (isset($_SESSION['zapamietaj_opcja']))
  14. {
  15. echo "checked";
  16. unset($_SESSION['zapamietaj_opcja']);
  17. }
  18. ?>/> Reprezentuję skład budowlany
  19. </label>
  20. <br/>
  21. <label>
  22. <input type="radio" name="opcja" <?php
  23. if (isset($_SESSION['zapamietaj_opcja']))
  24. {
  25. echo "checked";
  26. unset($_SESSION['zapamietaj_opcja']);
  27. }
  28. ?>/> Buduję dom
  29. </label>


Akceptacja zgody i wybór opcji, oraz zapamiętanie ich:
  1. //Akceptacja zgody
  2. if (!isset($_POST['zgoda'])) {
  3. $wszystko_OK = false;
  4. $_SESSION['info_zgoda'] = "Potwierdź wyrażenie zgody na przesłanie ofert handlowych.";
  5. }
  6. if (!isset($_POST['opcja'])) {
  7. $wszystko_OK = false;
  8. $_SESSION['info_opcja'] = "Wybierz opcję.";
  9. }
  10. //Zapamiętanie wprowadzonych danych
  11. $_SESSION['zapamietaj_email'] = $email;
  12. if (isset($_POST['zgoda'])) $_SESSION['zapamietaj_zgode'] = true;
  13. if (isset($_POST['opcja'])) $_SESSION['zapamietaj_opcja'] = false;


Dodawanie emaila do bazy:
  1. if ($wszystko_OK==true)
  2. {
  3. //Wszystko ok, dodanie adresu email do bazy
  4. if ($polaczenie->query("INSERT INTO adresy VALUES (NULL, '$email', '$opcja')"))
  5. {
  6. $_SESSION['info_poprawne']="Dziękujemy za skorzystanie z naszej oferty!";
  7. }


Ten post edytował andrzej11 5.01.2018, 14:47:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Dalbym se reke czyjas uciac ze byly rozne. Widocznie mi sie pomylilo.

Tak, ty wymagasz pierwszej opcji, ale user ma prawo jej nie zaznaczyc wiec powinien moc prawo ja odznaczyc a ze ty go nie przepuscisz wowczas dalej to skolei twoje prawo.

Skoro dwa ostatnie maja te same nazwe, to musisz dodac dla nich VALUE - dla kazdego inne. Wowczas po przeslanym VALUE bedziesz wiedzial ktore bedzie wcisniete. I bedzie wcisniete tylko jedno. NIe bedzie opcji, ze beda wcisniete oba naraz
A co wciesnieto to masz sprawdzac na podstawie VALUE a nie na podstawie czy bylo cos wcisniete czy nie
Go to the top of the page
+Quote Post

Posty w temacie
- andrzej11   Wybór opcji w formularzu z zapisem do bazy   5.01.2018, 14:38:56
- - nospor   if (isset($_POST['zgoda'])) $_SE...   5.01.2018, 16:50:39
- - andrzej11   Wiem, że to nie powinno tak być, jednak też nie ma...   8.01.2018, 16:28:30
- - nospor   opcja masz ustawic na false w dwoch przypadkach: ...   8.01.2018, 16:36:15
- - andrzej11   Okej, a w jaki sposób mogę zrobić zapisywanie opcj...   9.01.2018, 13:09:41
- - nospor   Tak samo jak kazda inna, ktora juz zapisujesz do b...   9.01.2018, 13:15:46
- - andrzej11   Tak, mam zmienną [PHP] pobierz, plaintext $opcja ...   9.01.2018, 13:35:53
- - nospor   A co bys chcial by bylo wpisywane? Zastosowales ze...   9.01.2018, 14:51:00
- - andrzej11   Nie potrafię tego zrobić...   9.01.2018, 15:13:21
- - nospor   To czemu wczesniej napisales OKEJ? Pytam wiec po...   9.01.2018, 15:17:39
- - andrzej11   Jeśli tak to czy opcja nie była wybrana mam w tym ...   10.01.2018, 08:28:52
- - viking   Składnia if: if (warunek) { kod } U ciebie if (war...   10.01.2018, 08:30:57
- - andrzej11   Nie wiem czy na pewno się rozumiemy.. Przedstawię ...   10.01.2018, 09:19:02
- - nospor   Wszyscy cie doskonale rozumieja. To ty nie rozumie...   10.01.2018, 09:52:08
- - andrzej11   1.) Nigdzie nie pisałem, że pierwsze może być zazn...   10.01.2018, 10:14:51
- - nospor   Dalbym se reke czyjas uciac ze byly rozne. Widoczn...   10.01.2018, 10:20:58
- - andrzej11   Value już później dałem próbując zrobić zapisywani...   10.01.2018, 10:37:00
- - nospor   value ma byc 1,2 a nie jakies teksty i to jeszcze ...   10.01.2018, 11:01:38
- - andrzej11   Jak tu dodać zapamiętanie zaznaczonej opcji?   10.01.2018, 11:40:19
- - nospor   Moze tak samo jak zapamietywales wczesniej? Poza ...   10.01.2018, 11:55:01
- - andrzej11   Wszystko ciągle przeskakuje, a ja już nie mam na t...   10.01.2018, 12:44:37


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 02:59