Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja empty
Forum PHP.pl > Forum > PHP
wiktor1984
Mam mały problem ze sprawdzaniem czy pola zostały wypełnione w formularzu
Otóż formularz posiada dwa pola przed dodaniem skrypt ma sprawdzać czy zostały wypełnione.
gdy nie wypełnimy obydwu jest ok wyskakuje 'Wypelnij wszystkie pola'
ale wystarczy że wypełnie jedno pole a drugie będzie puste rekord się dodaje.
Jak połączyć te dwa warunki?

  1. if (!empty($_POST['title']) || !empty($_POST['contents']))
  2.  
  3. {
  4. $sql="INSERT INTO article (title, contents) VALUES ('$_POST[title]','$_POST[contents]')";
  5. if (!mysql_query($sql,$connection))
  6. {
  7. die('Błąd: ' . mysql_error());
  8. }
  9. echo 'Artykuł został dodany';
  10. }
  11.  
  12. else
  13.  
  14. {
  15. echo 'Wypelnij wszystkie pola';
  16. }


i jeszcze jedno pytanie skrypt jak i formularz jest na jednej stronie
po wejściu na strone od razu wyskakuje błąd 'Wypelnij wszystkie pola'

Mógłby mnie ktoś nakierować jakiego warunku if należało by użyć
aby dodawanie wykonywało się dopiero po wciśnięciu dodaj w formularzu
johny_s
  1. if (!empty($_POST['title']) && !empty($_POST['contents']))


Cytat
Mógłby mnie ktoś nakierować jakiego warunku if należało by użyć

sprawdź czy były wysłany post i wtedy rozpoczynaj walidacje
Michael2318
Cytat(wiktor1984 @ 12.06.2014, 23:28:10 ) *
ale wystarczy że wypełnie jedno pole a drugie będzie puste rekord się dodaje.
Jak połączyć te dwa warunki?



  1. if (!empty($_POST['title']) || !empty($_POST['contents']))


W warunku zdefiniowałeś operator OR, czyli: Jeśli pole title lub pole contents nie jest puste to [coś tam].
W Twoim przypadku powinno to wyglądać tak:

Jeśli pole title i pole contents nie jest puste to [coś tam].

Tak więc zamień operator OR ( || ) na AND ( && ) i po problemie.

Co do drugiego pytania to sprawdzaj czy wciśnięty został submit:

  1. if ( isset($_POST['submit']) )
  2. {
  3. // walidacja danych wpisanych do formularza i dalsze instrukcje...
  4. }
  5. else
  6. {
  7. // jeśli submit nie został wciśnięty to wyświetlasz po prostu czysty formularz do wypełnieniea
  8. }
wiktor1984
Michael2318
Wielkie dzięki za szczegółowe wytłumaczenie
TwojPan
isset i empty to nie to samo. Przy proble wpisania 'spacji' lub jakiegos 'bialego znaku' przy EMPTY skrypt przejdzie.

Najlepiej stosowac:

if(isset(chop($_POST['zmienna']))) // chop usuwa biale znaje z prawej i lewej strony. do dyspozycji ltrim() i rtrim() / lewo / prawo /
{
//jesli zawiera wartosc
}else{

// jesli nie wpisano nic

}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.