Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML] Problem z validacją danych w formularzu, Mijają trzy dni i nadal żadnych postępów....
horn31
post
Post #1





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

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


Witam,
Od trzech dni próbuję wstawić validację do formularza z mizernym skutkiem.
Chciałbym aby trzeba było podać poprawnego maila, i checkbox (zgoda na wysyłąnie sybskrypcji) aby był wymagany zaznaczony.
Starałem się kombinować z JavaScript i nie działało, php nie może być, zresztą strona jest w html i nie ma możliwości jego zmiany :-(

Kod daję czysty bo walidację jakich nie wstawiałem to nie było najmniejszej różnicy, nie wiem może użyć całkiem innego formularza?

  1. <p align="center"><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><center>Zapisz się by otrzymywać informację ...... </center></font></b><br>
  2.  
  3. </p><center>
  4. <form method=POST action=form2mail.php>
  5. <table width="500" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#000000">
  6. <tr>
  7. <td><table width="600" border="0" align="center" cellpadding="3" cellspacing="1">
  8. <tr bgcolor="#000000">
  9. </tr>
  10. <tr bgcolor="#000000">
  11. <td align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br> Imię<font color="green" >*</font>: </font></td>
  12. <td align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
  13. <br> <input name="name" type="text" id="name">
  14. </font></td>
  15. </tr>
  16. <tr bgcolor="#000000">
  17. <td align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br>Nazwisko<font color="green" >*</font>: </font></td>
  18. <td align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
  19. <br> <input name="nazwisko" type="text" id="nazwisko">
  20. </font></td>
  21. </tr>
  22. <tr bgcolor="#000000">
  23. <td align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br> Adres e-mail<font color="green" >*</font>: </font></td>
  24. <td align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
  25. <br> <input name="email" type="text" id="email">
  26. </font></td>
  27. </tr>
  28. <tr bgcolor="#000000">
  29. <td align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br> Zgadzam się na otrzymywanie <br>drogą e-mail informacji o nowościach <br> i promocjach w ofercie. </font></td>
  30. <td align="center">
  31. <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
  32. <br> <input name="zgoda" type="checkbox" id="zgoda" value="Tak">
  33. TAK<font color="green" >*</font></td>
  34. </tr>
  35. <tr bgcolor="#000000">
  36. <td align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">dodatkowe:</font></td>
  37. <td align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
  38. <textarea name="motocykl" cols="40" rows="6" id="motocykl"></textarea>
  39. </font></td>
  40. </tr>
  41. <tr bgcolor="#000000">
  42. <br> <br> <td colspan="2" align="center"><center><br><input type="submit" name="Submit" value="Wyślij"></td>
  43. </tr> <br> <br> <br>
  44.  
  45. </table>

Go to the top of the page
+Quote Post
amii
post
Post #2





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Formularz nie ma nic do tego. Czemu tu nie wrzucasz ciapków -> <form method="POST" action="form2mail.php">
Jak chcesz robić walidację w JS to napisz sobie funkcję a następnie ją podepnij pod zdarzenie onsubmit formularza jeśli dane są ok to zwracasz true w przeciwnym wypadku false
Go to the top of the page
+Quote Post
horn31
post
Post #3





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

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


Wstawiłem w HEAD:
  1. <script type="text/javascript">
  2. <!--
  3.  
  4.  
  5. function email_validate(src)
  6. {
  7. var reg = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
  8. return reg.test(src);
  9. }
  10.  
  11. // -->
  12. </script>



Następnie:
  1. <form method=POST action=form2mail.php onsubmit="if(email_validate('mail@mail.pl')){submit();}">

  1. <td colspan="2" align="center"><center><br><input type="button" name="Submit" value="Wyślij">
  2. <input type="submit" id="sprawdz" onclick="if(email_validate('mail@mail.pl')){submit();}">


Wstawiłem nawet dwa przyciski aby sprawdzić i nich z tego, wklejałem to wszędzie i pisałem onclick oraz onsubmit różne kombinacje :-(
Go to the top of the page
+Quote Post
amii
post
Post #4





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Co to za dziwne kombinacje. Dajesz:
onsubmit="email_validate(document.getElementById('email').value)"
Go to the top of the page
+Quote Post
horn31
post
Post #5





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

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


Dobra zmieniłem na to co podałeś :-)
Poniżej jak to wygląda w sekcji head:
  1. <script type="text/javascript">
  2. <!--
  3. function email_validate(src)
  4. {
  5. var reg = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
  6. return reg.test(src);
  7. }
  8.  
  9. // -->
  10. </script>


Oraz poniżej (niestety nic się nie dzieje jak jest type: button i onclick a gdy jest submit i onsubmit to poprostu wysyla maila nawet puste pole):
  1. <form method=POST action=form2mail.php onclick="email_validate(document.getElementById('email').value)">
  2. <table width="500" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#000000">
  3. <tr>
  4. <td><table width="600" border="0" align="center" cellpadding="3" cellspacing="1">
  5. <tr bgcolor="#000000">
  6. <center>
  7. </tr>
  8. <tr bgcolor="#000000">
  9. <td align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br> Imię<font color="green" >*</font>: </font></td>
  10. <td align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
  11. <br> <input name="name" type="text" id="name">
  12. </font></td>
  13. </tr>
  14. <tr bgcolor="#000000">
  15. <td align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br>Nazwisko<font color="green" >*</font>: </font></td>
  16. <td align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
  17. <br> <input name="nazwisko" type="text" id="nazwisko">
  18. </font></td>
  19. </tr>
  20. <tr bgcolor="#000000">
  21. <td align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br> Adres e-mail<font color="green" >*</font>: </font></td>
  22. <td align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
  23. <br> <input name="email" type="text" id="email">
  24. </font></td>
  25. </tr>
  26. <tr bgcolor="#000000">
  27. <td align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br> Zgadzam się na otrzymywanie <br>drogą e-mail informacji. </font></td>
  28. <td align="center">
  29. <font size="2" face="Verdana, Arial, Helvetica, sans-serif">
  30. <br> <input name="zgoda" type="checkbox" id="zgoda" value="Tak">
  31. TAK<font color="green" >*</font></td>
  32. </tr>
  33. <tr bgcolor="#000000">
  34. <td align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Inne:</font></td>
  35. <td align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
  36. <textarea name="inne" cols="40" rows="6" id="inne"></textarea>
  37. </font></td>
  38. </tr>
  39. <tr bgcolor="#000000">
  40. <br> <br> <td colspan="2" align="center"><center><br><input type="button" name="button" value="Wyślij">
  41.  
  42. </td>
  43. </tr> <br> <br> <br>
  44.  
  45. </table>
Go to the top of the page
+Quote Post
amii
post
Post #6





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Spróbuj:
[JAVASCRIPT] pobierz, plaintext
  1. <form method="POST" action="form2mail.php" onsubmit="return email_validate(document.getElementById('email').value);"
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
DiH
post
Post #7





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Sprawdzanie jakichkolwiek danych wyłącznie przy pomocy JS i poleganie na ich prawidłowości, to delikatnie umując naiwność. Stwórz sobie nowy prosty formularz, bez setek zbędnych tagów, zwykły input i jeden checkbox zamknięte w form z action="post" i na tym próbuj.

Sprawdzić, czy adres e-mail jest poprawny powinieneś funkcją:
preg_match

Sprawdzenie, czy checkbox jest zaznaczony:
isset

np. if(isset($_POST['checkbox_name']) { //do... }

Go to the top of the page
+Quote Post
kudlatypawelek
post
Post #8





Grupa: Zarejestrowani
Postów: 46
Pomógł: 5
Dołączył: 30.06.2011

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


Do validatcji po stronie klienta proponuję używać jquery.validate. Dodatkowo wypadałoby zaimplementować sprawdzanie pól po stronie serwera - tak jak radzi mój przedmówca.
Go to the top of the page
+Quote Post
horn31
post
Post #9





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

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


Nie zajmuję się pisaniem witryn dlatego też niewiele rozumiem z poprzednich postów, zadowolę się komunikatem przy źle wypełnionym polu na maila oraz przy braku zaznaczenia checkboxa.
Działa już to że bez wpisanego poprawnie maila nie działa poprostu przycisk wyślij, można klikać i nic się nie dzieje ale gdy wpiszemy maila poprawnie to wysyła.
Prosiłbym o pomoc we wstawieniu alertu, tzn co dopisac w headzie, próbowałem coś wyszukać ale źle wstawiam to na pewno.
Oraz o pomoc gdzie wstawić if(isset($_POST['checkbox_name']) { //do... }
Wstawiłem już:
  1. <script type="text/javascript">
  2. <!--
  3.  
  4.  
  5. function email_validate(src)
  6. {
  7. var reg = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
  8. return reg.test(src);
  9. }
  10.  
  11. // -->
  12. </script>

oraz:
  1. <form method="POST" action="form2mail.php" onsubmit="return email_validate(document.getElementById('email').value);"


P.S. Jestem wdzięczny że jeszcze nikt mnie nie "zmasakrował" za stan wiedzy....
Pozdrawiam, i dziękuję bo jest już krok do przodu, dzięki Wam
Go to the top of the page
+Quote Post
DiH
post
Post #10





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Tyle, że ja pisałem o PHP, a ty piszesz w JavaScripcie. Kolega powyżej dobrze doradził Ci jQuery, bo po prostu oszczędzi ci to wiele pracy i frustracji. Jak nie teraz, to kiedyś. Jeżeli w head dodasz:
<script src="http://code.jquery.com/jquery-1.6.1.min.js" type="text/javascript"></script>
to spradzenie checkboxa będzie mogło wyglądać np. tak:
Kod
var isChecked = $('#checkBox').attr('checked');
if(isChecked != 'checked') {
  // do...
}

Alert możesz stosować dla siebie, przy testowaniu, natomiast publikując już stronę lepiej byłoby ten komunikat wyświetlić nad formularzem. Przed twoim <form> dodaj np. <div id="msg"></div> a wtedy //do... zamień na:
Kod
$("#msg").text("Proszę zaznaczyć... bla bla");


Ten post edytował DiH 25.07.2011, 11:57:34
Go to the top of the page
+Quote Post
horn31
post
Post #11





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

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


Niestety wstawiłem ale nic się nie dzieje, przypuszczam że sporo błędów ma sam szablon strony. Problem w tym że niewiele można w nim zmienić czy go też pokazać na forum, nie należy do mnie....
Wstawiłem też to do heada: <script src="http://code.jquery.com/jquery-1.6.1.min.js" type="text/javascript"></script>
Wstawiłem do head:
  1. var isChecked = $('#checkBox').attr('checked');
  2. if(isChecked != 'checked') {
  3. $("#msg").text("Proszę zaznaczyć... bla bla");
  4. }
  5.  

I przed form jest:
<div id="msg"></div>
Niestety nic sie nie dzieje jak jest email to wysyła wiadomość a jak nie ma to nic sie nie dzieje

Co dopisać do kodu z emaila aby pojawial sie nad komentarzem napis, coś jak do checkboxa, rzeczywiście jest to ciekawe rozwiązanie.
Niestety jestem zbyt toporny jak widac nie jestem w stanie samemu tego zrobic.
Go to the top of the page
+Quote Post
DiH
post
Post #12





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Kod, który ja napisałem to JS, a więc musisz go wrzucić pomiędzy <script type="text/javascript"></script>
Go to the top of the page
+Quote Post
Rid
post
Post #13





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Cytat
Wstawiłem też to do heada: <script src="http://code.jquery.com/jquery-1.6.1.min.js" type="text/javascript"></script>

Niech Pan ściągnie tą bibliotekę ze strony http://code.jquery.com/jquery-1.6.1.min.js i wklei
do folderu gdzie znajduje się Pana stronka/projekt.
Następnie :
<script src="http://code.jquery.com/jquery-1.6.1.min.js" type="text/javascript">
zmienić na:
<script src="c:/mójFolderStrony/jquery-1.6.1.min.js" type="text/javascript">
Go to the top of the page
+Quote Post
DiH
post
Post #14





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

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


Jeżeli testuje to będąc podłączonym do internetu, to co za różnica? Jedynie w czasie dostępu.
Go to the top of the page
+Quote Post

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.08.2025 - 13:11