Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][PHP]Problem z warunkami
Szunaj85
post
Post #1





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Chciałbym zadać kilka pytań odnośnie formularza, a właściwie warunków w PHP, które mają sprawdzać jego pola.

1. Mam trzy pola i teraz jak napisać warunek, który będzie wyglądał tak. Jeżeli użytkownik uzupełni którekolwiek z trzech pól (czyli jedno lub dwa ze wszystkich pól) wyświetli mu się komunikat, że nie uzupełnił wszystkich pól?
2. Kolajna sprawa to weryfikacja jednego pola, która dotyczy poprawności wpisanej temperatury, ale z pewnego zakresu (od minusowej do plusowej). Problemu by nie było gdyby były to same liczby.
Jednak użytkownicy mogą wpisywać np. "20°C", "20 °C", "20 stopni celcjusza", "-10°C", "- 10 °C", itp.
Jak za pomocą warunku pierw spradzić czy w ogóle jakaś liczba jest wisana, wyodrębnić tą liczbę i sprawdzić czy mieści się w zdefiniowanym zakresie liczb?
Powód edycji: [wookieb]:
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


@Evinek: Zdaje się, że Twoja metoda nie przejdzie, ponieważ pola tekstowe formularza HTML są wysyłane zawsze, a jeśli nie wpisze się wartości, to ich wartość to po prostu pusty łańcuch znaków. Niemniej jednak są one ustawione (ang. set) zatem isset() zawsze zwróci prawdę. Warunek z funkcją isset() trzeba zatem rozbudować, albo alternatywnie użyć funkcji empty():
  1. if(!empty($_POST)) {
  2. if(empty($_POST['pole1']) || empty($_POST['pole2']) || empty($_POST['pole3'])) {
  3. echo 'Uzupełnij wszystkie pola!';
  4. }
  5. // alternatywą dla powyższego zapisu jest zapis poniżej
  6. if((isset($_POST['pole1']) && $_POST['pole1'] == '') ||
  7. (isset($_POST['pole1']) && $_POST['pole1'] == '') ||
  8. (isset($_POST['pole1']) && $_POST['pole1'] == '')) {
  9. echo 'Uzupełnij wszystkie pola!';
  10. }
  11. // choć w tym drugim przypadku stosuje się raczej
  12. if((isset($_POST['pole1']) && $_POST['pole1'] != '') &&
  13. (isset($_POST['pole1']) && $_POST['pole1'] != '') &&
  14. (isset($_POST['pole1']) && $_POST['pole1'] != '')) {
  15. // wszystkie pola zostały uzupełnione
  16. } else {
  17. echo 'Uzupełnij wszystkie pola!';
  18. }
  19. }

Swoją drogą tematów na ten temat na forum.php.pl było sporo.

Co do drugiego problemu, to użytkownik raczej nie powinien mieć aż tak szerokich możliwości, a jednostka powinna być odgórnie określona. Jeśli jednak użytkownik ma taką możliwość, to wyrażenia regularne mogą się tutaj sprawdzić wyśmienicie:
  1. $temperature = !empty($_POST['temperature']) ? $_POST['temperature'] : false;
  2. if($temperature) {
  3. $pattern = '#^([-|0-9][0-9]+).*?#si';
  4. $matched = preg_match($pattern, $temperature, $matches);
  5. $temperatureValue = $matches[1];
  6. }

Jeśli tylko użytkownik nie wpisze czegoś innego, co oczywiście można kontrolować za pomocą zmiennej $matched.
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 04:57