Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Problem z walidacja formularza
MatBlo
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Zacznę od początku. Niedawno rozpocząłem swoja przygodę z PHP i język sprawa mi sporo problemu. Jestem w trakcje tworzenia strony www z elementami PHP. Struktura strony wygląda następująco menu poziome wraz z grafiką znajdującą się po prawej stronie jest statyczne natomiast treść znajdująca się po lewej dynamiczna. Problem ten rozwiązałem za pomocą instrukcji include_once(), jednak nie na tym problem polega jedna z podstron kontakt.php posiada następujący kod:
  1.  
  2. <h3>Formularz kontaktowy:</h3>
  3.  
  4. <form method="post" action="index.php?id=8">
  5. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  6. <div class="tabelaTresc"><input type="text" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  7. <div class="clear" style="height: 5px;"></div>
  8. <div class="tabelaNazwa"><label for="email">E-mail:</label></div>
  9. <div class="tabelaTresc"><input type="text" id="email" name="email" style="width:290px;" /><br /></div>
  10. <div class="clear" style="height: 5px;"></div>
  11. <div class="tabelaNazwa"><label for="phone">Telefon:</label></div>
  12. <div class="tabelaTresc"><input type="text" id="phone" name="phone" style="width:290px;" /><br /></div>
  13. <div class="clear" style="height: 5px;"></div>
  14. <div class="tabelaNazwa"><label for="theme">Temat*:</label></div>
  15. <div class="tabelaTresc"><input type="text" id="theme" name="theme" style="width:290px;" /><br /></div>
  16. <div class="clear" style="height: 5px;"></div>
  17. <div class="tabelaNazwa"><label for="other">Wiadomość:</label></div>
  18. <div class="tabelaTresc"><textarea id="other" name="other" rows="7" cols="50"></textarea><br /></div>
  19. <div class="clear" style="height: 10px;"></div>
  20. <div class="tabelaTresc"><input type="submit" value="Wyślij" name="Wyślij" /></div>
  21. </form>


natomiast skrypt odpowiedzialny za wysyłanie wygląda następująco:
  1. <?php
  2. $imie = $_POST['firstname'];
  3. $email = $_POST['email'];
  4. $tel = $_POST['phone'];
  5. $temat = $_POST['theme'];
  6. $wiadomosc = $_POST['other'];
  7. $to = '...@gmail.com';
  8. $subject = "$temat";
  9. $msg = "Imię: $imie\n" .
  10. "Telefon: $tel\n" .
  11. "Treść wiadomości: $wiadomosc";
  12. mail($to, $subject, $msg, 'From:'.$email);
  13. ?>
  14.  
  15. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  16. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  17. <head>
  18. <title>Salon Dom</title>
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  20. <link rel="stylesheet" href="styl.css" type="text/css" />
  21.  
  22. </head>
  23.  
  24. <body>
  25.  
  26. <p>Dziękuję za przesłanie formularza</p>
  27.  
  28. </body>
  29. </html>


W takim wypadku formularz działa, wysyła maila odraz w miejscu formularza wyświetlany jest komunikat dziękujący za wysłanie maila. W momencie gry zamiast fragmentu napisanego w html użyć echo nie wyświetla mi się podziękowanie. I nie bardzo wiem dlaczego ;/ Chciałem również dokonać sprawdzenia dwóch pól imię i temat napisałem taki kawałek kodu:
  1. <?php
  2. if (isset($_POST['submit'])) {
  3. $imie = $_POST['firstname'];
  4. $email = $_POST['email'];
  5. $tel = $_POST['phone'];
  6. $temat = $_POST['theme'];
  7. $wiadomosc = $_POST['other'];
  8. if(empty($imie) && empty($temat)) {
  9. echo'Nie podałeś imienia i tematu wiadomości.<br />';
  10. }
  11. if(empty($imie) && (!empty($temat))) {
  12. echo'Nie podałeś imienia.<br />';
  13. }
  14. if((!empty($imie)) && empty($temat)) {
  15. echo'Nie podałeś tematu.<br />';
  16. }
  17. if((!empty($imie)) && (empty($temat))) {
  18. $to = '...@gmail.com';
  19. $subject = "$temat";
  20. $msg = "Imię: $imie\n" .
  21. "Telefon: $tel\n" .
  22. "Treść wiadomości: $wiadomosc";
  23. mail($to, $subject, $msg, 'From:'.$email);
  24. echo 'Dziękuję za przesłanie formularza';
  25. }
  26. }
  27. ?>


po wrzuceniu tego kodu na serwer ani nie wyświetla się żaden komunikat anie mail nie zostaje wysłany. Tematy na formum przeglądałem jednak nie znalazłem odp na mój problem - być może źle szukałem .

Ten post edytował MatBlo 2.06.2010, 10:57:21
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 30)
zend
post
Post #2





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


  1. //to
  2. if (isset($_POST['submit'])) {
  3. //zastąp
  4. if(count($_POST)) {

Pobieważ przycisku submit nie uświadczysz w formularzu i trzymaj kod w
  1.  
  2. </body>


Ten post edytował zend 2.06.2010, 10:06:58
Go to the top of the page
+Quote Post
MatBlo
post
Post #3





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Wstawiłem formularz do body, if zamieniłem i pomogło. Wiadomość jest wysyłana, podziękowanie również otrzymuję z tym, że nawet gdy wyślę pusty formularz. Czyli nadal instrukcja if nie dział (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
zend
post
Post #4





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


  1. $submit = true;
  2.  
  3. if(empty($imie))
  4. {
  5. echo 'CO jest? Nie masz imienia?';
  6. $submit = false;
  7. }
  8.  
  9. if($submit)
  10. {
  11. //mail
  12. echo 'Thanks';
  13. }

Dostosuj sobie do własnych potrzeb
Go to the top of the page
+Quote Post
MatBlo
post
Post #5





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Coś mi nie wychodzi - muszę chyba być prowadzonym jak dziecko za rękę. Wykorzystałem Twój skrypt jednak nie działa do końca prawidłowo. Co prawda jeśli nie wpiszę imienia to mail nie zostanie wysłany jednak nie otrzymuje również informacji o braku imienia. W przypadku podania imienia nie mam wiadomości o wysłaniu :?
  1. <?php
  2. if(count($_POST)) {
  3. $imie = $_POST['firstname'];
  4. $email = $_POST['email'];
  5. $tel = $_POST['phone'];
  6. $temat = $_POST['theme'];
  7. $wiadomosc = $_POST['other'];
  8. $submit = true;
  9. if(empty($imie))
  10. {
  11. echo'Nie podałeś imienia i tematu wiadomości.<br />';
  12. $submit = false;
  13. }
  14. if($submit)
  15. {
  16. $to = '...@gmail.com';
  17. $subject = "$temat";
  18. $msg = "Imię: $imie\n" .
  19. "Telefon: $tel\n" .
  20. "Treść wiadomości: $wiadomosc";
  21. mail($to, $subject, $msg, 'From:'.$email);
  22. echo 'Dziękuję za przesłanie formularza';
  23. }
  24. }
  25. ?>


Ten post edytował MatBlo 2.06.2010, 10:56:16
Go to the top of the page
+Quote Post
zend
post
Post #6





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


  1. ini_set('display_errors' , 'On'); //daj to na początku pliku


Ps Trochę to niemądre tak na forum swój email podawać (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
MatBlo
post
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Niestety nie ma żadnych zmian. Tak wyglądała cała moja nauka z PHP co coś wymyśle albo ktoś mi zaproponuje jakieś rozwiązanie czy też gdzieś przeczytam to nie działa:/ Co do maila jest to mój któryś mail taki zapasowy, ale zgadza się nie jest to zbyt inteligentne więc go usunąłem.
Go to the top of the page
+Quote Post
zend
post
Post #8





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Dorzuć do każdego warunku if warunek else z inną wiadomością, może wtedy Ci się wyjaśni
Go to the top of the page
+Quote Post
Damiian
post
Post #9





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Powinno być ok..

  1. <?php
  2.  
  3. if (empty($_POST['firstname']))
  4. {
  5. echo 'Uzupelnij nick!<br/>';
  6.  
  7. }
  8.  
  9. if (empty($_POST['email']))
  10. {
  11. echo 'Uzupelnij mail!<br/>';
  12.  
  13. }
  14.  
  15.  
  16. if (empty($_POST['tel']))
  17.  
  18. {
  19.  
  20. echo 'Uzupelnij telefon!<br/>';
  21.  
  22. }
  23.  
  24. if (empty($_POST['theme']))
  25.  
  26. {
  27.  
  28. echo 'Uzupelnij temat!<br/>';
  29.  
  30. }
  31.  
  32. if (empty($_POST['other']))
  33.  
  34. {
  35.  
  36. echo 'Uzupelnij Wiadomość!<br/>';
  37.  
  38. }
  39.  
  40.  
  41.  
  42. if(!empty($_POST['firstname']) && !empty($_POST['email']) && !empty($_POST['tel']) && !empty($_POST['theme']) && !empty($_POST['other']) &&))
  43. {
  44.  
  45.  
  46. // Co ma robic jak wszystko bedzie ok
  47.  
  48.  
  49. }
  50. ?>


Ten post edytował Damiian 2.06.2010, 11:27:04
Go to the top of the page
+Quote Post
MatBlo
post
Post #10





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Po drobnych przeróbkach działa (IMG:style_emoticons/default/biggrin.gif)
  1. <?php
  2. if (empty($_POST['firstname']))
  3. {
  4. echo 'Uzupelnij nick!<br />';
  5. }
  6. if (empty($_POST['email']))
  7. {
  8. echo 'Uzupelnij mail!<br />';
  9. }
  10. if (empty($_POST['phone']))
  11. {
  12. echo 'Uzupelnij telefon!<br />';
  13. }
  14. if (empty($_POST['theme']))
  15. {
  16. echo 'Uzupelnij temat!<br />';
  17. }
  18. if (empty($_POST['other']))
  19. {
  20. echo 'Uzupelnij Wiadomość!<br />';
  21. }
  22. if (!empty($_POST['firstname']) && !empty($_POST['email']) && !empty($_POST['phone']) && !empty($_POST['theme']) && !empty($_POST['other']))
  23. {
  24. $to = '...@gmail.com';
  25. $email = $_POST['email'];
  26. $subject = $_POST['theme'];
  27. $imie = $_POST['firstname'];
  28. $tel = $_POST['phone'];
  29. $wiadomosc = $_POST['other'];
  30. $msg = "Imię: $imie\n" .
  31. "Telefon: $tel\n" .
  32. "Treść wiadomości: $wiadomosc";
  33. mail($to, $subject, $msg, 'From:'.$email);
  34. echo 'Dziękuję za przesłanie formularza';
  35. }
  36. ?>


Mam jeszcze jedno pytanie co musiałbym zrobić, aby komunikaty u uzupełnieniu pojawiały mi się obok tego pola, a nie na nowej stronie?

Ten post edytował MatBlo 2.06.2010, 12:34:27
Go to the top of the page
+Quote Post
gigzorr
post
Post #11





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


Pewnie masz dwa pliki czyli formularz i action="link do skryptu" a jak chcesz zeby na tej samej sie pojawialy to zostaw action puste i formularz wklej do tego samego skryptu z plikiem.

Ten post edytował gigzorr 2.06.2010, 12:08:35
Go to the top of the page
+Quote Post
Damiian
post
Post #12





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Tak jak kolega wyżej powiedział
Stare action zamieniasz na:
  1. <form method="post" action="">


I pod formularzem dajesz:
  1. <?php
  2. if(count($_POST)) {
  3.  
  4. if (empty($_POST['firstname']))
  5. {
  6. echo 'Uzupelnij nick!<br/>';
  7. }
  8. }
  9. ?>

Dalej analogicznie.

Ten post edytował Damiian 2.06.2010, 12:19:20
Go to the top of the page
+Quote Post
MatBlo
post
Post #13





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Sprawa nie wygląda tak łatwo, a to dlatego że jeśli zrobię tak jak mówicie to od razu po załadowaniu strony dostaje komunikat, że nie mam wypełnionego takiego i takiego pola, wiec brakuje fragment, który by aktywował sprawdzenie po naciśnięciu przycisku wyślij.
Go to the top of the page
+Quote Post
Damiian
post
Post #14





Grupa: Zarejestrowani
Postów: 38
Pomógł: 4
Dołączył: 30.05.2010
Skąd: Gdynia

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


Dlatego że pisujesz samo:

  1. <?php
  2. if (empty($_POST['firstname']))
  3.  
  4. {
  5.  
  6. echo 'Uzupelnij nick!<br/>';
  7.  
  8. }
  9. ?>


I skrypt odrazu po wejściu na stronę sprawdza czy są wypełnione pola, wiadomo że pokaże, iż nie są...



Wklej to w formularz, tak jak tu jest:

  1. <h3>Formularz kontaktowy:</h3>
  2.  
  3. <form method="post" action="">
  4. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  5. <div class="tabelaTresc"><input type="text" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  6. <div class="clear" style="height: 5px;"></div>
  7. <div class="tabelaNazwa"><label for="email">E-mail:</label></div>
  8. <div class="tabelaTresc"><input type="text" id="email" name="email" style="width:290px;" /><br /></div>
  9. <div class="clear" style="height: 5px;"></div>
  10. <div class="tabelaNazwa"><label for="phone">Telefon:</label></div>
  11. <div class="tabelaTresc"><input type="text" id="phone" name="phone" style="width:290px;" /><br /></div>
  12. <div class="clear" style="height: 5px;"></div>
  13. <div class="tabelaNazwa"><label for="theme">Temat*:</label></div>
  14. <div class="tabelaTresc"><input type="text" id="theme" name="theme" style="width:290px;" /><br /></div>
  15. <div class="clear" style="height: 5px;"></div>
  16. <div class="tabelaNazwa"><label for="other">Wiadomość:</label></div>
  17. <div class="tabelaTresc"><textarea id="other" name="other" rows="7" cols="50"></textarea><br /></div>
  18. <div class="clear" style="height: 10px;"></div>
  19. <div class="tabelaTresc"><input type="submit" value="Wyślij" name="Wyślij" /></div>
  20. </form>
  21.  
  22.  
  23. <?php
  24.  
  25. if(count($_POST)) {
  26.  
  27. if (empty($_POST['firstname']))
  28.  
  29. {
  30.  
  31. echo 'Uzupelnij nick!<br/>';
  32.  
  33. }
  34.  
  35. }
  36.  
  37. ?>


To jest samo sprawdzenie first name, pododawaj potem wszystkie pola...
Go to the top of the page
+Quote Post
MatBlo
post
Post #15





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Wkleiłem tak jak podaliście i nadal to samo.
Go to the top of the page
+Quote Post
bastard13
post
Post #16





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


  1. if($_POST)
  2. { //instrukcje z tego bloku wykonają się tylko jeśli przesłano posta
  3. if(!isset($_POST['imie']))
  4. echo 'Nie wypełniłeś pola imię!!!'
  5. //dodaj resztę walidaji
  6. }
  7. else
  8. {
  9. //wyświetlanie formularza
  10. }
Go to the top of the page
+Quote Post
MatBlo
post
Post #17





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


  1. <h3>
  2. Formularz kontaktowy:
  3. </h3>
  4. <form method="post" action="">
  5. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  6. <div class="tabelaTresc"><input type="text" value="<? echo htmlspecialchars($_POST['firstname']); ?>" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  7. <div class="clear" style="height: 5px;"></div>
  8. <div class="tabelaNazwa"><label for="email">E-mail*:</label></div>
  9. <div class="tabelaTresc"><input type="text" value="<? echo htmlspecialchars($_POST['email']); ?>" id="email" name="email" style="width:290px;" /><br /></div>
  10. <div class="clear" style="height: 5px;"></div>
  11. <div class="tabelaNazwa"><label for="phone">Telefon*:</label></div>
  12. <div class="tabelaTresc"><input type="text" value="<? echo htmlspecialchars($_POST['phone']); ?>" id="phone" name="phone" style="width:290px;" /><br /></div>
  13. <div class="clear" style="height: 5px;"></div>
  14. <div class="tabelaNazwa"><label for="theme">Temat*:</label></div>
  15. <div class="tabelaTresc"><input type="text" value="<? echo htmlspecialchars($_POST['theme']); ?>" id="theme" name="theme" style="width:290px;" /><br /></div>
  16. <div class="clear" style="height: 5px;"></div>
  17. <div class="tabelaNazwa"><label for="other">Wiadomość*:</label></div>
  18. <div class="tabelaTresc"><textarea id="other" name="other" rows="7" cols="50"><? echo htmlspecialchars($_POST['other']); ?></textarea><br /></div>
  19. <div class="clear" style="height: 10px;"></div>
  20. <div class="tabelaTresc"><input type="submit" value="Wyślij" name="submit" /></div>
  21. </form>


  1. <?php
  2. if($_POST)
  3. {
  4. if (empty($_POST['firstname']))
  5. {
  6. echo '<br />Uzupełnij imię!';
  7. }
  8. if (empty($_POST['email']))
  9. {
  10. echo '<br />Uzupełnij mail!';
  11. }
  12. elseif(!eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']))
  13. {
  14. echo '<br />Podano błędny email!';
  15. }
  16. if (empty($_POST['phone']))
  17. {
  18. echo '<br />Uzupełnij telefon!';
  19. }
  20. if (empty($_POST['theme']))
  21. {
  22. echo '<br />Uzupełnij temat!';
  23. }
  24. if (empty($_POST['other']))
  25. {
  26. echo '<br />Uzupełnij wiadomość!';
  27. }
  28. if (!empty($_POST['firstname']) && !empty($_POST['email']) && eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']) && !empty($_POST['phone']) && !empty($_POST['theme']) && !empty($_POST['other']))
  29. {
  30. $to = 'xxx@gmail.com';
  31. $subject = $_POST['theme'];
  32. $message = "Imię: $_POST[firstname]\n
  33. Telefon: $_POST[phone]\n
  34. Treść wiadomości:\n $_POST[other]";
  35. $header = "From: $_POST[email]";
  36. $header .= "\r\n";
  37. $header .= 'Content-type: text/plain; charset=utf-8'."\r\n";
  38. mail($to, $subject, $message, $header);
  39. echo '<br/>Dziękuję za przesłanie formularza';
  40. }
  41. }
  42. ?>


Wszystkim, którzy pomogli oczywiście bardzo dziękuję. Odświeżam temat ponieważ, mam jeszcze jeden problem w jaki sposób wyświetlić komunikaty o błędach, aby nie wyświetlały się pod formularzem tylko obok konkretnego pola? Np komunikat o braku wpisania imienia, obok pola z imieniem?
Go to the top of the page
+Quote Post
gigzorr
post
Post #18





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


marginesami to ustaw .
Go to the top of the page
+Quote Post
MatBlo
post
Post #19





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Możesz trochę rozwinąć swoją wypowiedź.
Go to the top of the page
+Quote Post
Ruio
post
Post #20





Grupa: Zarejestrowani
Postów: 147
Pomógł: 9
Dołączył: 20.02.2009

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


Zrób coś alla to :

  1. <span style="margin-left:15px; margin-top:20px">tu co ma się pokazać</span>


Marginesy ustaw jak chcesz (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
MatBlo
post
Post #21





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Nie o to mi chodzi - pytam jak za pomocą jakiś instrukcji przy nie wpisaniu imienia mam otrzymać komunikat. np w tym span.
Go to the top of the page
+Quote Post
Ruio
post
Post #22





Grupa: Zarejestrowani
Postów: 147
Pomógł: 9
Dołączył: 20.02.2009

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


Ustaw sobie do każdego inną zmienną np:

  1. if (empty($_POST['firstname']))
  2. {
  3. $name = '<br />Uzupełnij imię!';
  4. }


i póxniej tam gdzie chcesz daj
  1. echo $name;


PS. Nie koniecznie do każdego inną możesz tą samą ale pamietaj o kropce po =

tzn
  1. if (empty($_POST['firstname']))
  2. {
  3. $name =. '<br />Uzupełnij imię!';
  4. }


Ten post edytował Ruio 6.07.2010, 11:38:46
Go to the top of the page
+Quote Post
MatBlo
post
Post #23





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


coś mi nie działa ;/

mam tak
  1. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  2. <div class="tabelaTresc"><input type="text" value="<? echo htmlspecialchars($_POST['firstname']); ?>" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  3. <span style="margin-left:350px; margin-top:50px"><? echo $test; ?></span>

w php
  1. if (empty($_POST['firstname']))
  2. {
  3. $test = 'Uzupełnij imię!';
  4. }

to nie otrzymuje żądnego komunikatu, natomiast jeśli w if zapiszę tak:
  1. if (empty($_POST['firstname']))
  2. {
  3. echo $test = 'Uzupełnij imię!';
  4. }

to wówczas komunikat znów otrzymuje pod spodem.

Ten post edytował MatBlo 6.07.2010, 12:07:47
Go to the top of the page
+Quote Post
Ruio
post
Post #24





Grupa: Zarejestrowani
Postów: 147
Pomógł: 9
Dołączył: 20.02.2009

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


Nie widzę błędu w tym co ci podałem ani w twoim.

To raczej nie to ale popraw na długie znaczniki:
  1. <?php echo $test; ?>
Go to the top of the page
+Quote Post
MatBlo
post
Post #25





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Niestety nie pomogło to.
Go to the top of the page
+Quote Post
Ruio
post
Post #26





Grupa: Zarejestrowani
Postów: 147
Pomógł: 9
Dołączył: 20.02.2009

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


Pokaż cały kod php który tyczy się tych ifów po poprawkach bo tu błedu nie ma
Go to the top of the page
+Quote Post
MatBlo
post
Post #27





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Najpierw chciałem sprawdzić z jednym błędem czy jest ok, wiec te zmiany były wprowadzone tylko w jednej instrukcji.
  1. <h3>
  2. Formularz kontaktowy:
  3. </h3>
  4. <form method="post" action="">
  5. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  6. <span style="margin-left:10px; margin-top:5px"><?php echo $test; ?></span>
  7. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['firstname']); ?>" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  8. <div class="clear" style="height: 5px;"></div>
  9. <div class="tabelaNazwa"><label for="email">E-mail*:</label></div>
  10. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['email']); ?>" id="email" name="email" style="width:290px;" /><br /></div>
  11. <div class="clear" style="height: 5px;"></div>
  12. <div class="tabelaNazwa"><label for="phone">Telefon*:</label></div>
  13. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['phone']); ?>" id="phone" name="phone" style="width:290px;" /><br /></div>
  14. <div class="clear" style="height: 5px;"></div>
  15. <div class="tabelaNazwa"><label for="theme">Temat*:</label></div>
  16. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['theme']); ?>" id="theme" name="theme" style="width:290px;" /><br /></div>
  17. <div class="clear" style="height: 5px;"></div>
  18. <div class="tabelaNazwa"><label for="other">Wiadomość*:</label></div>
  19. <div class="tabelaTresc"><textarea id="other" name="other" rows="7" cols="50"><?php echo htmlspecialchars($_POST['other']); ?></textarea><br /></div>
  20. <div class="clear" style="height: 10px;"></div>
  21. <div class="tabelaTresc"><input type="submit" value="Wyślij" name="submit" /></div>
  22. </form>


  1. <?php
  2. if($_POST)
  3. {
  4. if (empty($_POST['firstname']))
  5. {
  6. $test = '<br />Uzupełnij imię!';
  7. }
  8. if (empty($_POST['email']))
  9. {
  10. echo '<br />Uzupełnij mail!';
  11. }
  12. elseif(!eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']))
  13. {
  14. echo '<br />Podano błędny email!';
  15. }
  16. if (empty($_POST['phone']))
  17. {
  18. echo '<br />Uzupełnij telefon!';
  19. }
  20. if (empty($_POST['theme']))
  21. {
  22. echo '<br />Uzupełnij temat!';
  23. }
  24. if (empty($_POST['other']))
  25. {
  26. echo '<br />Uzupełnij wiadomość!';
  27. }
  28. if (!empty($_POST['firstname']) && !empty($_POST['email']) && eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']) && !empty($_POST['phone']) && !empty($_POST['theme']) && !empty($_POST['other']))
  29. {
  30. $to = 'xxx@gmail.com';
  31. $subject = $_POST['theme'];
  32. $message = "Imię: $_POST[firstname]\nTelefon: $_POST[phone]\nTreść wiadomości:\n$_POST[other]";
  33. $header = "From: $_POST[email]";
  34. $header .= "\r\n";
  35. $header .= 'Content-type: text/plain; charset=utf-8'."\r\n";
  36. mail($to, $subject, $message, $header);
  37. echo '<br/>Dziękuję za przesłanie formularza';
  38. }
  39. }
  40. ?>
Instrukcja wyświetla wszystkie komunikaty o błędach za wyjątkiem imienia.

Ten post edytował MatBlo 6.07.2010, 12:29:16
Go to the top of the page
+Quote Post
Ruio
post
Post #28





Grupa: Zarejestrowani
Postów: 147
Pomógł: 9
Dołączył: 20.02.2009

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


  1. <?php
  2. if($_POST)
  3. {
  4. if (empty($_POST['firstname']))
  5. {
  6. $test = '<br />Uzupełnij imię!';
  7. }
  8. if (empty($_POST['email']))
  9. {
  10. $test .= '<br />Uzupełnij mail!';
  11. }
  12. elseif(!eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']))
  13. {
  14. $test .= '<br />Podano błędny email!';
  15. }
  16. if (empty($_POST['phone']))
  17. {
  18. $test .= '<br />Uzupełnij telefon!';
  19. }
  20. if (empty($_POST['theme']))
  21. {
  22. $test .= '<br />Uzupełnij temat!';
  23. }
  24. if (empty($_POST['other']))
  25. {
  26. $test .= '<br />Uzupełnij wiadomość!';
  27. }
  28. if (!empty($_POST['firstname']) && !empty($_POST['email']) && eregi('^[a-zA-z0-9_\-\.]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $_POST['email']) && !empty($_POST['phone']) && !empty($_POST['theme']) && !empty($_POST['other']))
  29. {
  30. $to = 'xxx@gmail.com';
  31. $subject = $_POST['theme'];
  32. $message = "Imię: $_POST[firstname]\nTelefon: $_POST[phone]\nTreść wiadomości:\n$_POST[other]";
  33. $header = "From: $_POST[email]";
  34. $header .= "\r\n";
  35. $header .= 'Content-type: text/plain; charset=utf-8'."\r\n";
  36. mail($to, $subject, $message, $header);
  37. echo '<br/>Dziękuję za przesłanie formularza';
  38. }
  39. }
  40. ?>
  41.  
  42. <h3>
  43. Formularz kontaktowy:
  44. </h3>
  45. <form method="post" action="">
  46. <div class="tabelaNazwa"><label for="firstname">Imię*:</label></div>
  47.  
  48. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['firstname']); ?>" id="firstname" name="firstname" style="width:290px;" /><br /></div>
  49. <span style="margin-left:10px; margin-top:5px"><?php echo $test; ?></span> <div class="clear" style="height: 5px;"></div>
  50. <div class="tabelaNazwa"><label for="email">E-mail*:</label></div>
  51. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['email']); ?>" id="email" name="email" style="width:290px;" /><br /></div>
  52. <div class="clear" style="height: 5px;"></div>
  53. <div class="tabelaNazwa"><label for="phone">Telefon*:</label></div>
  54. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['phone']); ?>" id="phone" name="phone" style="width:290px;" /><br /></div>
  55. <div class="clear" style="height: 5px;"></div>
  56. <div class="tabelaNazwa"><label for="theme">Temat*:</label></div>
  57. <div class="tabelaTresc"><input type="text" value="<?php echo htmlspecialchars($_POST['theme']); ?>" id="theme" name="theme" style="width:290px;" /><br /></div>
  58. <div class="clear" style="height: 5px;"></div>
  59. <div class="tabelaNazwa"><label for="other">Wiadomość*:</label></div>
  60. <div class="tabelaTresc"><textarea id="other" name="other" rows="7" cols="50"><?php echo htmlspecialchars($_POST['other']); ?></textarea><br /></div>
  61. <div class="clear" style="height: 10px;"></div>
  62. <div class="tabelaTresc"><input type="submit" value="Wyślij" name="submit" /></div>
  63.  
  64. </form>


Działa bo sprawdzałem ;]

PS. Połaczyłem ci wszystkie komunikaty w jednej zmiennej ale chyba dasz sobie rade zmienić je na pojedyńcze (IMG:style_emoticons/default/smile.gif)

Ten post edytował Ruio 6.07.2010, 12:43:20
Go to the top of the page
+Quote Post
MatBlo
post
Post #29





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Wielkie dzięki (IMG:style_emoticons/default/smile.gif) (ofc za pomoc podziekowałem) nie wiedziałem, że wstawienie kodu php nad cześć html będzie miało znaczenie.
Go to the top of the page
+Quote Post
thek
post
Post #30





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Kolejność ma znaczenie. Przecież nie możesz wywołać zmiennej, której jeszcze nie ma (IMG:style_emoticons/default/winksmiley.jpg) Normalnie interpreter rzuca w takich sytuacjach ostrzeżeniem a zmienna, w zależności od kontekstu, przyjmuje wartość 0, false lub ciąg pusty. Jeśli chcesz zobaczyć jak może wyglądać wariacja na temat formularza to obejrzyj kod poglądowy w innym temacie, też tyczącym formularza i jego walidacji -> http://forum.php.pl/index.php?showtopic=15...st&p=762498 Może to podejście podsunie Ci jakieś pomysły dla własnego forma. Nie ma on co prawda wysyłki maila, ale to już drobiazg dla copy-paste (IMG:style_emoticons/default/winksmiley.jpg) Zwróć w nim uwagę na obsługę komunikatów błędów i walidację, bo to chyba najbardziej interesujący Cię fragment. Korzystaj jeśli rozumiesz i Ci się spodoba takie podejście. Przypatrz się co robię ze zmienną $errors zarówno w części walidującej, jak i samym wyświetlaniu formularza oraz poczytaj moje wyjaśniające posty poniżej tego posta, a powinieneś złapać co się dzieje i dlaczego oraz jak w kodzie. Nie jest to pełny gotowiec, ale daje pewne pobieżne pojęcie jak powinno się pewne rzeczy rozdzielać i stosować. Ciężko w polskim necie znaleźć dobrze opisany schemat tego pokroju. Zazwyczaj dostajesz mnóstwo kodu i minimum komentarzy. Tutaj starałem jak krowie na rowie niemal. Zwłaszcza dalszy post z opisem części dla $_GET.
Go to the top of the page
+Quote Post
MatBlo
post
Post #31





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 27.05.2010

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


Dzięki na pewno skorzystam.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 25.12.2025 - 17:14