Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> walidacja formularza
bogostradamus
post
Post #1





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

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


Witam.
Próbuje zrobić qiuz w php by zliczał mi wyniki i podawał je na drugiej stronie metodą $_POST. Nawet mi się udało. Tylko, że jak się nie zaznaczy żadnej odpowiedzi z możliwej grupy radio, wyskakuje error log undefined index. Toteż pytalem w dziale przedszkole http://forum.php.pl/index.php?showtopic=140730&hl= jak to zrobic w php i powiedzieli ze moge to zrobic jako form validation w javascript.
No i to kolejny problem bo nie wiem jak sobie z tym poradzic. Wkleję kod a może ktoś mi doradzi co robię nie tak:

<script type="text/javascript">

function przetwarzaj_dane() {
var brakuje_danych=false;
var napis="";
if (document.forms.formularz.p1.value == "!isset"){
napis += "Pytanie 1\n"
brakuje_danych=true;
}
if (!brakuje_danych)
return true;
else {
alert ("Prosze odpowiedzieć na następujące pytania:\n" + napis);
return false;
}
}
</script>

<form name"formularz" action="wynik.php" method="post" onsubmit="return przetwarzaj_dane();">
<p class="space"></p>
1. What do you ..................... in your spare time?<BR>
<input TYPE="radio" name="p1" value="0"> like do<BR>
<input TYPE="radio" name="p1" value="1"> like doing<BR>
<input TYPE="radio" name="p1" value="2"> like to doing<BR>
<input TYPE="radio" name="p1" value="3"> doing<BR>
<input type="submit" name="wyslij" class="przycisk" value=" Oblicz Wynik! " onclick="przetwarzaj_dane()">
</form>

Pytań w formularzu mam 20, ale skróciłem do przykładowego jednego
czy to problem że źle odnosze sie do pustej wartości radio button?
Jak się do niej odnieść?
document.forms.formularz.p1.value == "!isset"? albo document.forms.formularz.p1.!isset; lub document.forms.formularz.p1.value == "" (IMG:style_emoticons/default/questionmark.gif)
Próbowałem rożnych możliwości i brakuje mi pomysłów
A moze mam cos w kodzie walnięte i nie moge tego dostrzec
Go to the top of the page
+Quote Post
rytek
post
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 14
Dołączył: 21.01.2009
Skąd: Mszczonów

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


Proszę, wrzucaj kod w znaczniki odpowiednie.

Co do walidacji:

[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2.  
  3. function przetwarzaj_dane() {
  4. var brakuje_danych=false;
  5. var napis="";
  6. if (!document.forms.formularz.p1.[0].checked AND !document.forms.formularz.p1.[1].checked AND !document.forms.formularz.p1.[2].checked AND !document.forms.formularz.p1.[3].checked){
  7. napis += "Pytanie 1\n";
  8. brakuje_danych=true;
  9. }
  10.  
  11. if (!document.forms.formularz.p2.[0].checked AND !document.forms.formularz.p2.[1].checked AND !document.forms.formularz.p2.[2].checked AND !document.forms.formularz.p2.[3].checked){
  12. napis += "Pytanie 2\n";
  13. brakuje_danych=true;
  14. }
  15.  
  16. ... i tak dalej
  17.  
  18.  
  19. if (!brakuje_danych)
  20. return true;
  21. else {
  22. alert ("Prosze odpowiedzieć na następujące pytania:\n" + napis);
  23. return false;
  24. }
  25. }
  26. </script>
[JAVASCRIPT] pobierz, plaintext


Nie wiem czy to będzie działać dobrze, ale wydaje mi się, że tak.

Ten post edytował rytek 24.01.2010, 16:16:34
Go to the top of the page
+Quote Post
bogostradamus
post
Post #3





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

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


Niestety nie działa. Przeskakuje na inną stronę z error logiem i zliczaniem wyników
Go to the top of the page
+Quote Post
rytek
post
Post #4





Grupa: Zarejestrowani
Postów: 63
Pomógł: 14
Dołączył: 21.01.2009
Skąd: Mszczonów

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


Mam nadzieję, że nie skopiowałeś bezmyślnie, tylko zrobiłeś dla całości?

//EDYTKA:

Mój błąd.
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2.  
  3. function przetwarzaj_dane() {
  4. var brakuje_danych=false;
  5. var napis="";
  6. if (!document.forms.formularz.p1[0].checked && !document.forms.formularz.p1[1].checked && !document.forms.formularz.p1[2].checked && !document.forms.formularz.p1[3].checked){
  7. napis += "Pytanie 1\n";
  8. brakuje_danych=true;
  9. }
  10.  
  11. if (!document.forms.formularz.p2[0].checked && !document.forms.formularz.p2[1].checked && !document.forms.formularz.p2[2].checked && !document.forms.formularz.p2[3].checked){
  12. napis += "Pytanie 2\n";
  13. brakuje_danych=true;
  14. }
  15.  
  16.  
  17. if (!brakuje_danych)
  18. return true;
  19. else {
  20. alert ("Prosze odpowiedzieć na następujące pytania:\n" + napis);
  21. return false;
  22. }
  23. }
  24. </script>
[JAVASCRIPT] pobierz, plaintext


Teraz powinno być ok.

Ten post edytował rytek 24.01.2010, 16:40:01
Go to the top of the page
+Quote Post
bogostradamus
post
Post #5





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

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


Niestety nie działa w dalszym ciągu. Nie wklejałem bezmyślnie. Zanim poprawiłeś również próbowałem z && zamiast AND, i p1.[0] zamieniałem na p1[0], próbowałem również p1.item(0) i nic...
Go to the top of the page
+Quote Post
rytek
post
Post #6





Grupa: Zarejestrowani
Postów: 63
Pomógł: 14
Dołączył: 21.01.2009
Skąd: Mszczonów

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


Heh, nie zauważyłem, że nie do końca dobrze zrobiłeś początek (IMG:style_emoticons/default/smile.gif)
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2.  
  3. function przetwarzaj_dane() {
  4. var brakuje_danych=false;
  5. var formularz=document.forms[0];
  6. var napis="";
  7. if (!formularz.p1[0].checked && !formularz.p1[1].checked && !formularz.p1[2].checked && !formularz.p1[3].checked){
  8. napis += "Pytanie 1\n";
  9. brakuje_danych=true;
  10. }
  11.  
  12. if (!formularz.p2[0].checked && !formularz.p2[1].checked && !formularz.p2[2].checked && !document.forms.formularz.p2[3].checked){
  13. napis += "Pytanie 2\n";
  14. brakuje_danych=true;
  15. }
  16.  
  17.  
  18. if (!brakuje_danych)
  19. return true;
  20. else {
  21. alert ("Prosze odpowiedzieć na następujące pytania:\n" + napis);
  22. return false;
  23. }
  24. }
  25. </script>
[JAVASCRIPT] pobierz, plaintext



I w formularzu zmień z:
  1. <input type="submit" name="wyslij" class="przycisk" value=" Oblicz Wynik! " onclick="przetwarzaj_dane()">

na:
  1. <input type="submit" name="wyslij" class="przycisk" value=" Oblicz Wynik! ">


Bo będzie 2 razy walidowało.
Go to the top of the page
+Quote Post
bogostradamus
post
Post #7





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

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


No i pięknie działa (IMG:style_emoticons/default/exclamation.gif) !
Wielkie dzięki za pomoc i za cierpliwość.
Pozdrawiam
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: 8.10.2025 - 00:47