Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] jaki warunek zeby po kolei sprawdzilo?
Forum PHP.pl > Forum > Przedszkole
lnn
mam problem poniewaz chce zeby sprawdzalo po kolei kazde pole czy zostalo wypelnione zanim wysle formularz i tak oto chce zeby najpierw sprawdzalo czy wszystkie zostaly wypelnione, nastepnie chce kazde po kolei sprawdzic czy jest wypelnione a jak nie to zeby wyswietlalo "pole imie i nazwisko nie jest wypelnione", ale jak zrobilem w taki sposob jak ponizej to jak nieuzupelnie jakiegos pola to wyskakuje ze wszystkie nieuzupelnione ;/ dzialalo mi to przy 2 polach a przy 3 i wiecej juz nie chce

  1. <?php
  2. $recipient="adres@nadawcy.ch"; //adres odbiorcy
  3. $subject= "wiadomosc ze strony www"; //temat wiadomosci
  4. $msg= $_POST["msg"]; //tresc wiadomosci
  5. $sender= 'From:' .$_POST["name"]. '<' .$_POST["from"]. '>'; //nadawca
  6.  
  7. if ($name=="" && $from=="" && $tel=="" && $msg=="") {
  8.    echo "Wszystkie pola nie zostaly wypelnione!<br />";  
  9.    echo "<a href=java script:history.back()>&laquo;wróć i popraw</a>";
  10.    }
  11. elseif ($name<"") {
  12.        echo "Pole \"imie i nazwisko\" nie zostalo wypelnione!<br />";
  13.        echo "<a href=java script:history.back()>&laquo;wróć i popraw</a>";
  14.    }
  15.    elseif ($from<"") {
  16.        echo "Pole \"e-mail nadawcy\" nie zostało wypełnione!<br />";
  17.        echo "<a href=java script:history.back()>&laquo;wróć i popraw</a>";
  18.    }
  19.    elseif ($tel<"") {
  20.        echo "Pole \"telefon kontaktowy\" nie zostało wypełnione! <br />";
  21.        echo "<a href=java script:history.back()>&laquo;wróć i popraw</a>";
  22.    }
  23.    elseif ($msg<"") {
  24.        echo "Pole \"tresc wiadomosci\" nie zostało wypełnione! <br />";
  25.        echo "<a href=java script:history.back()>&laquo;wróć i popraw</a>";
  26.    }
  27.    elseif ($name>"" && $from>"" && $tel>"" && $msg>"") {
  28.        mail($recipient, $subject, $msg, $sender);
  29.        echo "Wiadomosc zostala wyslana!";
  30.        echo "<a href=java script:history.back()>Zamknij okno [domyslnie narazie back]</a>";
  31.    }
  32. ?>

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  3.  
  4. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  5. <title>Formularz kontaktowy</title>
  6. </head>
  7.  
  8. <form action="email.php" method="post">
  9. imię i nazwisko:<br />
  10. <input type="text" name="name" /><br />
  11. e-mail nadawcy:<br />
  12. <input type="text" name="from" /><br />
  13. telefon kontaktowy:<br />
  14. <input type="text" name="tel" /><br />
  15. treść wiadomości:<br />
  16. <textarea rows="5" name="msg" cols="20"></textarea><br />
  17. <input type="submit" value="dodaj" />
  18. </form>
  19. </body>
  20. </html>
KCG
Jakoś dziwnie to sprawdzasz, może spróbuj z empty() lub strlen() smile.gif
lnn
Cytat(KCG @ 22.03.2009, 15:23:34 ) *
Jakoś dziwnie to sprawdzasz, może spróbuj z empty() lub strlen() smile.gif

ok poczytam manuala moze dojde do czegos ;-)
bazowalem na jakims przykladzie z ksiazki co do sprawdzania czegos podobnego winksmiley.jpg)
thomson89
w jakiej książcę pamietam była funkcja która sprawdzała całą tablice post i porównywała za pomocą while z kluczem

zamiast < dawaj <= lub po prostu ==, bo nie sądzę pustka była mniejsza od pustki - jak jest pusta to pusta
lnn
Cytat(thomson89 @ 22.03.2009, 15:32:16 ) *
w jakiej książcę pamietam była funkcja która sprawdzała całą tablice post i porównywała za pomocą while z kluczem

zamiast < dawaj <= lub po prostu ==, bo nie sądzę pustka była mniejsza od pustki - jak jest pusta to pusta


ksiazka chyba to byla PHP5, Apache i MySQL. Od podstaw .. ale calej jeszcze nie przejrzalem, bo ma chyba z 800 stron ;D zatem moglem cos przeoczyc zwlaszcza ze mam ja od 2 dni ;-)) i jestem poczatkujacy...

jeszcze jedno.. empty() - sprawdza czy np zmienna nie jest pusta a strlen() - sprawdza dlugosc zmiennej?
czyli ze np jakbym zadeklarowal sobie ze np.
  1. <?php
  2. if (strlen($jakasZmienna) >=2)
  3. ?>

to mi zwroci false jesli bedzie mniejsze i nie wykona polecenia zadeklarowanego w warunku? tak to dziala? dobrze mysle? winksmiley.jpg
thomson89
Źle myślisz. If, nie da ci false. Strlen da ci false jak $zmienna = '';. Ale w tym wypadku osiagniesz zamierzony efekt.

U ciebie: jak strlen zwróci wynik mniejszy lub równy 2, wykonaj to co następuje {...}

Można też ewentualnie dać:
  1. <?php
  2. if (empty($jakaszmienna) || strlen($jakaszmienna) >=2 ){ ... }
  3. ?>
decha-design
Cytat(thomson89 @ 22.03.2009, 15:51:13 ) *
U ciebie: jak strlen zwróci wynik mniejszy lub równy 2, wykonaj to co następuje {...}


większy lub równy o.O'
lnn
Cytat(thomson89 @ 22.03.2009, 15:51:13 ) *
Źle myślisz. If, nie da ci false. Strlen da ci false jak $zmienna = '';. Ale w tym wypadku osiagniesz zamierzony efekt.

U ciebie: jak strlen zwróci wynik mniejszy lub równy 2, wykonaj to co następuje {...}

Można też ewentualnie dać:
  1. <?php
  2. if (empty($jakaszmienna) || strlen($jakaszmienna) >=2 ){ ... }
  3. ?>


tzn mniej wiecej o to pytalem tylko sie zle wyrazilem winksmiley.jpg ale dzieki smile.gif

a jeszcze jedno pytanie czy moge podac kilka argumentow zeby mi sprawdzalo na raz np:
strlen($pierwszazmienna, $drugazmienna, $trzeciazmienna)>=1 (to samo w przypadku empty() )
bo cos w ten sposob nie dziala ;/ jakich operatorow uzyc: srednik, przecinek, a moze &&

z gory dzieki za wskazowki i zapodam caly kod do oceny jak juz wyjdzie winksmiley.jpg bo moze cos nadmiernie robie co moznaby skrocic jakos winksmiley.jpg
lnn
czy za pomoca strl() oraz empty() mozna sprawdzac kilka zmiennych??
a jesli tak to w jakiej postaci zapisywac czy srednik, przecinek czy moze && a moze jakos inaczej? bo cos mi nie smiga winksmiley.jpg
do tej pory robilem cos takiego:
if (strlen($zmienna)>=2 && strlen($zmienna2)>=2) {}

ale moze da sie to jakos uproscic?
wookieb
Cytat(lnn @ 22.03.2009, 16:55:29 ) *
ale moze da sie to jakos uproscic?

Nie. Ale ja ci mogę uprościć wszystkie odpowiedzi które możliwie pojawią się w tym temacie.
http://pl.php.net/empty Wszystko pisze co chcesz wiedziec.
lnn
kurde, no wlasnie czytalem manuala i sie zastanawialem czy jest mozliwe sprawdzenie kilku na raz winksmiley.jpg ale dzieki!
Pilsener
Bo dziś używa się na szeroką skalę tablic - zmienne trzymaj w tablicy, wtedy możesz wykonać daną funkcję na wszystkich elementach tablicy, na części tablicy lub elementach spełniających określone kryteria.
lnn
Cytat(Pilsener @ 22.03.2009, 17:09:39 ) *
Bo dziś używa się na szeroką skalę tablic - zmienne trzymaj w tablicy, wtedy możesz wykonać daną funkcję na wszystkich elementach tablicy, na części tablicy lub elementach spełniających określone kryteria.

ok poczytam o tym bo jestem poczatkujacy winksmiley.jpg narazie proboje zrobic prosty formularz email z walidacja winksmiley.jpg
KCG
Nie, w tej funkcji nie możesz podać tak argumentów.
Musisz pisać strlen($zm1) > 1) || strlen($zm2) > 1 itd.
lnn
zrobilem cos takiego i poki cos dziala, chcialbym jeszcze dodac walidacje mejla i nr tel winksmiley.jpg
  1. <?php
  2. $recipient=&#092;"imejl@odb.pl\";
  3. $subject= &#092;"wiadomosc ze strony www\";
  4. $msg= $_POST[&#092;"msg\"];
  5. $name= $_POST[&#092;"name\"];
  6. $from= $_POST[&#092;"from\"];
  7. $tel= $_POST[&#092;"tel\"];
  8. $sender= 'From:' .$_POST[&#092;"name\"]. '<' .$_POST[\"from\"]. '>';  
  9.  
  10.  
  11. if (empty($name) || strlen($name)<=2) {
  12.    echo &#092;"pole name jest puste lub zbyt krotkie\";
  13. } elseif (empty($from) || strlen($from)<=2) {
  14.    echo &#092;"pole od jest puste lub zbyt krotkie\";
  15. } elseif (empty($tel) || strlen($tel)<=2) {
  16.    echo &#092;"pole tel jest puste lub za krotkie\";
  17. } elseif (empty($msg) || strlen($msg)<=2) {
  18.    echo &#092;"pole wiadomosci jest puste lub za krotkie\";
  19. } elseif (strlen($name)>=3 && strlen($from)>=3 && strlen ($tel)>=3 && strlen($msg)>=3) {
  20.    echo &#092;"mail zostal wyslany\";
  21.    mail($recipient, $subject, $msg, $sender);
  22.     }
  23. ?>
decha-design
A po co piszesz to samo w dwóch tematach? To nazywa się cross-posting ... =s
cojack
Żeby sprawdzić parę zmiennych trzeba wiedzieć co się chce uzyskać.

Czyli:

&& - koniunkcja, i
|| - alternatywa, lub

np if($a>2 && $b<3 && ... itd itp)
I czasami nie warto używać empty czy isset, ponieważ się psują, wystarczy czasami rzucić okiem na bugliste z php.net i od razu widzimy że lepiej sprawdzać to w sposób if($a == '')... tarata smile.gif
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.