Skocz do zawartości
thunder_pl

Formularz W Php

Rekomendowane odpowiedzi

Witam

 

mam taki problem: Robię formularz w PHP i chciałbym, żeby jak ktoś nie wybierze żadenj opcji (pola typu "radio") wyświetłał się komunikat, że nic nie zaznaczył. Niestety potrafię zrobić to tylko tak:

 

<input type="radio" name="opcja" value="a" /><input type="radio" name="opcja" value="b" />

a potem w pliku obsługującym formularz

if ($opcja = 'a') {$message = '<p>wybrałeś A</p>';} elseif ($opcja = 'b') {$message = '<p>wybrałeś B</p>';}else ( $opcja = NULL;echo '<p>Nic nie wybrałeś</p>'}

W tym przypadku pisze co wybrałem albo że niczego nie wybrałem, a mi chodzi o to, żeby pisał TYLKO jak nic nie zostanie wybrane. To jest tylko przykład w rzeczywistości mam tego znacznie więcej, więc mam nadziję, że można to zrobić praktyczniej.

Edytowane przez thunder_pl

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

if ($opcja = 'a') {$message = '<p>wybrałeś A</p>';} elseif ($opcja = 'b') {$message = '<p>wybrałeś B</p>';}elseif ($opcja = ""){....}
Edytowane przez Hipoll

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

if ( $opcja = NULL;echo '<p>Nic nie wybrałeś</p>'}

nie wystarczy tylko tak to powinno wyswietlic ze nic nie wybrales

to nie działa

 

Użyj instrukcji switch

zainteresowało mnie to switch. Jednak chyba nie do końca to rozumiem. Mam 9 opcji. Atrybut "value" jest dla nich po koleji od 1 do 9.

 

w pliku obsługującym formularz napisałem tak (najprawdopodobniej źle)

switch ($Forma) {   case 1:   case 2:   case 3:   case 4:   case 5:   case 6:   case 8:   case 9:   default:    	print "Nie wybrałeś rodzaju działalności";	  }

Czy coś zaznacze, czy nie, zawsze i tak mi wyskakuje "Nie wybrałeś rodzaju działalności"

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

switch ($Forma) {   case 1: break;   case 2: break;   case 3: break;   case 4: break;   case 5: break;   case 6: break;   case 8: break;   case 9: break;   default:    	print "Nie wybrałeś rodzaju działalności"; 	  }

to samo. czy cos dam, czy nie zawsze wyskakuje "Nie wybrałeś rodzaju działalności"

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

if ( $opcja = NULL;echo '<p>Nic nie wybrałeś</p>'}

nie wystarczy tylko tak to powinno wyswietlic ze nic nie wybrales

o operatorach porownania i przypisania słyszał ? :P

 

 

jesli masz radiobutton z nadanym name opcja to :

 

if(empty($_POST['opcja'])){// tu piszesz co ma byc wykonane jesli ZADNA z opcji radio nie została wykonana}

jesli chcesz przelaczac po kolei pomiedzy opcjami

switch ($_POST['opcja']) {   case 1:    // tu cos robimy   break;   case 2:   // tu cos robimy   break;   default:	   echo 'Nie wybrałeś rodzaju działalności';	 }

Najwazniejsze jest to ze kazda wartosc w formularzu przesyłanym metoda POST jest elementem tablicy $_POST kluczem do tej wartosci w tablicy jest atrybut name - jesli masz kilka wartosci o takich samych name to elementem $_POST['twoje_name'] beda kolejne walue - ale zostana do tej tablicy wpisane tylko jesli pole jest zaznaczone !

Edytowane przez Yacho

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Yacho dzięki, ale jestem chyba oporny i dalej coś źle robię.

 

Więc tak: mam 9 opcji typu radio, każda ma name="Forma", a value są od 1 do 9

 

w pliczku obslugujacym formularz wpisałem:

if(empty($_POST['Forma'])){post '<p>Nie wybrales zadnej formy!</p>'}

nie działa

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

Edytowane przez thunder_pl

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przepraszam bardzo. wszyscy sie chyba ciut zagalopowaliśmy i podyktowalismy Ci zły przykład....

 

$_POST['forma'] jest tablica - ta tablica zawiera 0-9 elementow ponumerowanych od 0 do 8 (maks 9 elementow numerowanych od 0)

 

Przykład - zaznaczyles 3 pola majace wpisane jako value 4 7 8

dostajesz cos takiego :

 

$_POST['forma'][0] => 4

$_POST['forma'][1] => 7

$_POST['forma'][2] => 8

 

jak widzisz drugi indeks tej tablicy zawsze zaczyna sie od zera.... wiec jesli chcesz sprawdzic czy dany przycisk został nacisniety - musisz sprawdzic czy w tablicy występuje wartosc 4 7 czy 8 - służy do tego funkcja in_array()

teraz przykład kodu :

if(in_array(1, $_POST['Forma'])){// rob cos jesli wybrano 1;}elseif (in_array(2, $_POST['Forma'])){// tu robimny cos jesli wybrano 2}

ten blkok sprawdzi nam czy odpowiednie wartości istnieja w tablicy i wykona odpowiednie intrukcje....

oczywiscie sprawdzanie tych warunków nie ma zupełnego sensu jesli tablica jest pusta... dlatego mozemy lepiej zapisać :

 

if(empty($_POST['Forma'])){//tu robimy cos jesli nie wybrano zadnej opcji !}else{   if(in_array(1, $_POST['Forma']))   {   // rob cos jesli wybrano 1;   }   elseif (in_array(2, $_POST['Forma']))   {   // tu robimny cos jesli wybrano 2   }}

Mam nadzieje ze wyrazilem sie dostatecznie jasno bys oprocz przepisywania na pałę cos skumał :)

Edytowane przez Yacho

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Znaczy co rozumiesz przez nic nie robiło ? jesli ktos nie wybierze nic to przycisk wyslij ma byc nieaktywny ? czy jak ?

 

Masz kod zaczynajacy sie od pierwszego ifa - tam jest ta ewentualnosc kiedy tablica jest pusta - wpisujesz tam to co ma byc wyswietlone gdy nie beda wybrane zadne opcje

Edytowane przez Yacho

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

!

 

hehe, chyba W OGÓLE się nie zrozumieliśmy.

 

Chodzi mi o to, żeby te opcje, były jakby konieczne do wysłania formularza. Jeżeli ktoś nie wybierze żadnej z tych opcji to ma się wyświetlać komunikat "Nie wybrałes....", a jeżeli coś wybrał to tylko "Wszystko OK, formularz wysłany) <- to wiem jak zrobić

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

zrozum ze form wysyla sie zawsze - a ty w zaleznosci od tego jakie sa dane wyswietlasz komunikat ze albojest ok albo nie ...

 

kod :

 

if(empty($_POST['Forma'])){// jesli trafilismy tu to oznacza ze nie wybrano zadnego checkboxa Forma - nalezy wyswietlic komunikat ze jest ble i poprosic o wypelnienie !}else{// tu jestesmy jesli user zaznaczyl conajmniej 1 checkbox z grupy forma - i teraz mozemy z nimi robic co chcemy    if(in_array(1, $_POST['Forma']))   {   // rob cos jesli wybrano 1;   }   elseif (in_array(2, $_POST['Forma']))   {   // tu robimny cos jesli wybrano 2   }}
Edytowane przez Yacho

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

sprecyzowałem.....

 

Proste:

 

1. pytanie w formularzy

2. pytanie w formularzu

3. tu np. można wybrać za pomocą przycisków "radio" np. 9 opcji.

 

Chodzi mi o to, że jak ktoś nie wybierze żadenj opcji w pkt 3, to sie potem na nastepnej stronie wyswietli "nie wypełniłes pkt 3", a jeżeli wypełnił to nic sie nie ma dziać, formularz zostanie wysłany

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

sprecyzowałem.....

 

Proste:

 

1. pytanie w formularzy

2. pytanie w formularzu

3. tu np. można wybrać za pomocą przycisków "radio" np. 9 opcji.

 

Chodzi mi o to, że jak ktoś nie wybierze żadenj opcji w pkt 3, to sie potem na nastepnej stronie wyswietli "nie wypełniłes pkt 3", a jeżeli wypełnił to nic sie nie ma dziać, formularz zostanie wysłany

i tren kod dokladnie tak zrobi - popatrz na komentarze

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

formularz idzie na mejla. To wiem jak zrobić

 

Jak mam zwykle pola tekstowe to potrafie to zrobić. Czyli jak ktos nic nie wpisze to sie sie wyswietla "nie wpisales...." a jak wpisze to idzie na mejla

 

wtedy robie to tak:

 

if (strlen ($Comments) > 0) { $Comments = stripslashes($Comments); } else { $Comments = NULL;echo '<p> Nie wpisałeś wiadomości</p>';}
Edytowane przez thunder_pl

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

kielbasisz ten skrypt.... rob tak walidacje :

if(empty($_POST['Forma'])){die ('nie wybrałes zadnej opcji forma');}if(empty($comments)){die('comments jest puste');}// tu juz sobie normalnie wysylasz dane na maila

robisz tak ze najpierw sprawdzasz warunki co do zgodnosci pol - jesli pole jest puste lub nieprawidłowe wywołujesz die('$opis_bledu') ktore powoduje zatrzymanie skryptu - wiec jesli ktorekolwiek z pol bedzie zle skrypt sie nie wykona - a dopiero za tymi ifami wysyłasz sobie dane na maila....

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

if(empty($_POST['Forma'])){die ('nie wybrałes zadnej opcji forma');}

przy tym, jak nic nie dam - faktycznie, jest napisane "nie wybrales....", ale jak coś zaznacze to jest dokładnie to samo ;)

Postaraj sie aby w zadnym value w html - nie było zera ani wartosci ""

czy przesyłasz dane z forma metoda post ?

Edytowane przez Yacho

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

tak metodą post

 

<label><input type="radio" name="Forma" value="1">  Jednoosobowa działalność gospodarcza</label>	 <br>	 <label>	 <input type="radio" name="Forma" value="2">  Spółka jawna</label>	 <br>	 <label>	 <input type="radio" name="Forma" value="3">  Spółka cywilna</label>	 <br>	 <label>	 <input type="radio" name="Forma" value="4">  Spółka partnerska</label>	 <br>	 <label>	 <input type="radio" name="Forma" value="5">  Spółka z o.o.</label>	 <br>	 <label>	 <input type="radio" name="Forma" value="6">  Spółka akcyjna</label>	 <br>	 <label>	 <input type="radio" name="Forma" value="7">  Spółka komandytowo-akcyjna</label>	 <br>	 <label>	 <input type="radio" name="Forma" value="8">  Spółka komandytowa</label>	 <br>	 <label>	 <input type="radio" name="Forma" value="9">  Inna forma</label>

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...