Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML] Formularz a instrukcja switch
dj-radioactive
post
Post #1





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

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


Mam problem z przekazaniem zmiennych z formularza do "instrukcji switch". Mój formularz działa w taki sposób, że jak ktos kliknie odpowiednie pole "checkbox" (wszystkich pól jest 4) pojawiaja sie dwa pola na wpisanie liczb i standardowe przyciski "Wyslij" i "Reset" Dane z tych pól są przesyłane do skryptu php, do instrukcji switch. Poniżej zamieszczam fragmenty obu skryptów:



formularz.html

  1. <form action=http://localhost/kalk.php method=POST />
  2. <input type="checkbox" name="opcja" value="dodaj" onclick="document.getElementById('identyfikator1').style.display = this.checked ? 'block' : 'none'; this.form.elements['liczba1'].disabled = this.form.elements['liczba2'].disabled = !this.checked" />Dodawanie<br />
  3. <div id="identyfikator1" style="display: none">
  4. Liczba 1:
  5. <input type="integer" name="liczba1" /><br />
  6. Liczba 2:
  7. <input type="integer" name="liczba2" /><br />
  8. <input type=submit value=Wykonaj>
  9. <input type=reset value=Wyczy?>
  10. </div>



kalk.php


  1. <?
  2.  
  3.      switch ($_POST['opcja']){      
  4.  
  5.             case "dodaj":
  6.                echo "$_POST['liczba1']";     //to jest właśnie linia 16 w moim skrypcie
  7.                break;
  8.         }
  9.    ?>




cały "switch"ogólnie działa tylko nie wyswietla mi sie ta zmienna. Pewnie zrobiłem jakis głupi błąd, ale sam nie moge sobie z tym poradzić. Dlatego oddaje w ręce fachowców (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Wynikiem skryptu jest błąd: "Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in H:\htdocs\kalk.php on line 16" a jeśli usunę cydzysłowy przy "liczba1" skrypt nie zwraca nic.

Ten post edytował dj-radioactive 25.07.2009, 12:31:43
Go to the top of the page
+Quote Post
potreb
post
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Jak masz problemy z postem to print_r($_POST):
  1. <?php
  2. case 'dodaj':
  3.               echo $_POST['liczba1'];     //to jest właśnie linia 16 w moim skrypcie
  4.               break;
  5. ?>


Ten post edytował potreb 25.07.2009, 12:04:19
Go to the top of the page
+Quote Post
Ociu
post
Post #3





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Proszę dodać tag do tematu.
Go to the top of the page
+Quote Post
dj-radioactive
post
Post #4





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

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


"print_r($_POST)" pomogło na tyle że nie wyswietla się juz błąd lecz pusty ekran
btw. czemu słuzy to print_r??


// chyba sobie jaja robisz!
// od tego jest dokumentacja!
// ayeo
Go to the top of the page
+Quote Post
potreb
post
Post #5





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Wyświetla ci całą tablicę $_POST, czyli te dane, które przesyłasz np z formularza.
  1. <?php
  2. print("<pre>");
  3. print_r($_POST)
  4. print("</pre>");
  5. ?>


Tablica preformatowana
Jeżeli wiesz, że dane z formularza są przesyłane to już jesteś na półmetku stwierdzenia "what the hell"

Ten post edytował potreb 25.07.2009, 12:40:35
Go to the top of the page
+Quote Post
dj-radioactive
post
Post #6





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

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


Wyswietla mi takie cos: "Array ( [opcja] => dodaj [liczba1] => [liczba2] => )"
Nie mogę sie dostac do "liczba1" i "liczba2"
Go to the top of the page
+Quote Post
ayeo
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Cytat
"print_r($_POST)" pomogło na tyle że nie wyswietla się juz błąd lecz pusty ekran
btw. czemu słuzy to print_r??


To już jest przesada! Forum to nie jest interaktywny kurs programowania! Tak trudno zobaczyć w dokumentacji co robi dana funkcja? Na forum znajdziesz porady i wskazówki jednak nic Ci one nie pomogą jeśli będziesz je stosował na ślepo nie mając pojęcia co robisz. Następnym razem po takim pytaniu zamknę temat (tym razem przymknę oko bo jesteś tu nowy).

Pozdrawiam!
Go to the top of the page
+Quote Post
potreb
post
Post #8





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Skoro masz [liczba1] => [liczba2] => puste to nie masz co wyświetlać??
Bardzo proste??

Ten post edytował potreb 25.07.2009, 13:09:02
Go to the top of the page
+Quote Post
dj-radioactive
post
Post #9





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

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


teoretycznie w formularzu wysyłam dane do tej tablicy, tylko dlaczego ich tam nie ma??
Go to the top of the page
+Quote Post
potreb
post
Post #10





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Teoretycznie powinno działać, w formularzu masz typ pole integer. Chyba taki nie istnieje.
http://www.w3schools.com/tags/att_input_type.asp

  1. <form action="index.php" method="post" />
  2. <input type="checkbox" name="opcja" value="dodaj" onclick="document.getElementById('identyfikator1').style.display = this.checked ? 'block' : 'none'; this.form.elements['liczba1'].disabled = this.form.elements['liczba2'].disabled = !this.checked" />Dodawanie<br />
  3. <div id="identyfikator1" style="display: none">
  4. Liczba 1:
  5. <input type="text" name="liczba1" /><br />
  6. Liczba 2:
  7. <input type="text" name="liczba2" /><br />
  8. <input type="submit" value="Wykonaj">
  9. <input type="reset" value="Wyczyść">
  10. </div>

  1. <?php
  2. print_r($_POST);
  3.     switch ($_POST['opcja']){      
  4.  
  5.            case 'dodaj':
  6.               echo $_POST['liczba1'];     //to jest wlasnie linia 16 w moim skrypcie
  7.               break;
  8.        }
  9. ?>



// Pomógł++
// ayeo (przeciwnik gotowców (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) )



Wygrałem 2 miliony więc niech dziś znają moją litość ;p


Ten post edytował potreb 25.07.2009, 14:40:51
Go to the top of the page
+Quote Post
dj-radioactive
post
Post #11





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

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


to pozostałości po pascalu i c++, jeszcze się nie przyzwyczaiłem do składni (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ale nawet jesli zmienie na text to nic to nie daje.
Zacznijmy od tego że mam 4 takie checkbox'y i gdy trzy z nich ująłem w komentarz cały skrypt działa. Gdy usune komentarz znowu zmienne "liczba1" i "liczba2" są puste
Go to the top of the page
+Quote Post
ayeo
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Prawdopodobnie masz inputy o tych samych nazwach i sobie nadpisujesz.
Go to the top of the page
+Quote Post
dj-radioactive
post
Post #13





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

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


Muszą być takie same żeby wogóle switch działał. "name" jest wszędzie ustawione na "opcja" a różne są tylko wartości.
Go to the top of the page
+Quote Post
ayeo
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Wydaje mi się, że nie do końca rozumiesz co robisz. Przeczytaj jakiś kurs na początek.
Go to the top of the page
+Quote Post
dj-radioactive
post
Post #15





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

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


inputy mają unikatowe nazwy a w switch'u umiesciłem złożony warunek. Instrukcja działa, a zmienne nadal puste
Go to the top of the page
+Quote Post
ayeo
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Pokaż pełny kod formularza. Jeżeli jest zbyt obszerny wrzuć na snippie.net
Go to the top of the page
+Quote Post
dj-radioactive
post
Post #17





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

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


  1. <title>Formularz kalkulatora</title>
  2. </head>
  3.  
  4. <body bgcolor=#FFFF83/>
  5. <form action=http://localhost/kalk.php method=POST />
  6. <p>Wybierz rodzaj dziaania matematycznego:</p>
  7. <input type="checkbox" name="opcja1" value="dodaj" onclick="document.getElementById('identyfikator1').style.display = this.checked ? 'block' : 'none'; this.form.elements['liczba1'].disabled = this.form.elements['liczba2'].disabled = !this.checked" />Dodawanie<br />
  8. <div id="identyfikator1" style="display: none">
  9. Liczba 1:
  10. <input type="integer" name="liczba1" /><br />
  11. Liczba 2:
  12. <input type="integer" name="liczba2" /><br />
  13. <input type=submit value=Wykonaj>
  14. <input type=reset value=Wyczy?>
  15. </div>
  16.  
  17.  
  18. <input type="checkbox" name="opcja2" value="odejmij" onclick="document.getElementById('identyfikator2').style.display = this.checked ? 'block' : 'none'; this.form.elements['liczba1'].disabled = this.form.elements['liczba2'].disabled = !this.checked" />Odejmowanie<br />
  19. <div id="identyfikator2" style="display: none">
  20. Liczba 1:
  21. <input type="integer" name="liczba1" /><br />
  22. Liczba 2:
  23. <input type="text" name="liczba2" /><br />
  24. <input type=submit value=Wykonaj>
  25. <input type=reset value=Wyczy?>
  26. </div>
  27.  
  28. <input type="checkbox" name="opcja3" value="mnoz" onclick="document.getElementById('identyfikator3').style.display = this.checked ? 'block' : 'none'; this.form.elements['liczba1'].disabled = this.form.elements['liczba2'].disabled = !this.checked" />Mnoenie<br />
  29. <div id="identyfikator3" style="display: none">
  30. Liczba 1:
  31. <input type="text" name="liczba1" /><br />
  32. Liczba 2:
  33. <input type="text" name="liczba2" /><br />
  34. <input type=submit value=Wykonaj>
  35. <input type=reset value=Wyczy?>
  36. </div>
  37.  
  38. <input type="checkbox" name="opcja4" value="dziel" onclick="document.getElementById('identyfikator4').style.display = this.checked ? 'block' : 'none'; this.form.elements['liczba1'].disabled = this.form.elements['liczba2'].disabled = !this.checked" />Dzielenie<br />
  39. <div id="identyfikator4" style="display: none">
  40. Liczba 1:
  41. <input type="text" name=liczba1 /><br />
  42. Liczba 2:
  43. <input type="text" name="liczba2" /><br />
  44. <input type=submit value=Wykonaj>
  45. <input type=reset value=Wyczy?>
  46. </div>
  47.  
  48. </font>
  49. </form>
  50.  
  51.  
  52.  
  53.  
  54.  
  55. </body>
  56. </html>


A co do kursów php to nie spotkałem się jeszcze z takim zastosowaniem formularza. Pewnie dlatego że za bardzo kombinuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
ayeo
post
Post #18





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Nie mam pojęcia co chcesz osiągnąć. Jednak jak zrób to jako osobne formularze:
  1. <body bgcolor=#FFFF83/>
  2. <form action=http://localhost/kalk.php method=POST />
  3. <p>Wybierz rodzaj dziaania matematycznego:</p>
  4. <input type="checkbox" name="opcja1" value="dodaj" onclick="document.getElementById('identyfikator1').style.display = this.checked ? 'block' : 'none'; this.form.elements['liczba1'].disabled = this.form.elements['liczba2'].disabled = !this.checked" />Dodawanie<br />
  5. <div id="identyfikator1" style="display: none">
  6. Liczba 1:
  7. <input type="integer" name="liczba1" /><br />
  8. Liczba 2:
  9. <input type="integer" name="liczba2" /><br />
  10. <input type=submit value=Wykonaj>
  11. <input type=reset value=Wyczy?>
  12. </form> <!-- zamiana div na form -->
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: 24.08.2025 - 04:04