• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP sprawdzenie wielu zmiennych czy istnieją i czy nie są puste

0 głosów
1,632 wizyt
pytanie zadane 18 lipca 2017 w PHP przez chmod96 Obywatel (1,380 p.)

Cześć, robię dość duży formularz w php i muszę sprawdzić czy każde pole w nim istnieje isset() i czy nie jest puste !empty() i nie chcę robić kilometrowego if'a i mam pytanie czy zna ktoś sposób aby to zapisać krócej, nie wiem dać nazwy zmiennych do tablicy array a potem pętlą while ? ale jakoś w inny sposób.

2 odpowiedzi

0 głosów
odpowiedź 18 lipca 2017 przez chmod96 Obywatel (1,380 p.)

Napisałem coś takiego, i póki co działa :D

        $post_values = array(
            'first_name', 
            'last_name', 
            'email', 
            'password', 
            'password_2', 
            'support_questions', 
            'answer'
        );

        for($i = 0; $i < count($post_values); $i++){
            if(isset($_POST[$post_values[$i]]) && !empty($_POST[$post_values[$i]])){
                echo "OK";
            }
        }

 

komentarz 18 lipca 2017 przez Arkadiusz Waluk Ekspert (290,910 p.)
Jak już tak to użyj foreach, jest przystosowany typowo do operacji na tablicach.

Poza tym polecam zainteresować się filter_input() lub filter_input_array(). Przed pobraniem wartości o podanej nazwie automatycznie sprawdzane jest czy istnieje, dodatkowo można dodać potrzebne filtry.
komentarz 18 lipca 2017 przez chmod96 Obywatel (1,380 p.)
Użyłem do tego $_POST[$post_values[$i]] = strip_tags($_POST[$post_values[$i]]);
komentarz 18 lipca 2017 przez Arkadiusz Waluk Ekspert (290,910 p.)
Ale co?

Jeśli chodzi o foreach to proponuję użycie tej pętli zamiast for. Bez sensu jest zliczać ilość elementów w tablicy, deklarować dodatkowe zmienne itd. skoro to jest gotowe w pętli foreach, wystarczy tylko użyć.

A filter_input/filter_input_array proponuję do pobrania danych zamiast ręcznego $_POST[...]. Nie trzeba wtedy sprawdzać isssetem, samo się sprawdza i w razie gdyby nie było nie rzuca żadnych błędów.
komentarz 18 lipca 2017 przez chmod96 Obywatel (1,380 p.)

Ok, foreach zaraz wrzucę a to 2 później ogarnę.

a to co napisałem wcześniej to chodziło mi o filtrowanie znaków.

–2 głosów
odpowiedź 18 lipca 2017 przez piotrsz109 Stary wyjadacz (13,730 p.)

W tablicy post możesz odwoływać się indexem (int) więc napisz pętle np:

for($i=0;$<$_POST.Length;$i++){
if(isset($_POST[i]) && !empty($_POST[i])){
echo $_POST[i];
}
}

 

komentarz 18 lipca 2017 przez Arkadiusz Waluk Ekspert (290,910 p.)
edycja 18 lipca 2017 przez Arkadiusz Waluk
$<$_POST.Length;

Co to? surprise

Edit: jeszcze co to?

$_POST[i]

Chyba języki Ci się ostro mylą.

komentarz 18 lipca 2017 przez chmod96 Obywatel (1,380 p.)
Hahaha, nawet tego nie sprawdzałem bo wiedziałem że coś jest nie OK

Podobne pytania

0 głosów
1 odpowiedź 1,088 wizyt
pytanie zadane 26 lutego 2017 w PHP przez Ozzy Nowicjusz (140 p.)
0 głosów
2 odpowiedzi 433 wizyt
pytanie zadane 26 stycznia 2020 w PHP przez franz Gaduła (4,940 p.)
0 głosów
0 odpowiedzi 575 wizyt
pytanie zadane 26 listopada 2021 w PHP przez Grzegorz Mikina Dyskutant (8,060 p.)

93,604 zapytań

142,529 odpowiedzi

322,995 komentarzy

63,090 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...