Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Formularz a instrukcja switch
Forum PHP.pl > Forum > Przedszkole
dj-radioactive
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 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.
potreb
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. ?>
Ociu
Proszę dodać tag do tematu.
dj-radioactive
"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
potreb
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"
dj-radioactive
Wyswietla mi takie cos: "Array ( [opcja] => dodaj [liczba1] => [liczba2] => )"
Nie mogę sie dostac do "liczba1" i "liczba2"
ayeo
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!
potreb
Skoro masz [liczba1] => [liczba2] => puste to nie masz co wyświetlać??
Bardzo proste??
dj-radioactive
teoretycznie w formularzu wysyłam dane do tej tablicy, tylko dlaczego ich tam nie ma??
potreb
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 tongue.gif )



Wygrałem 2 miliony więc niech dziś znają moją litość ;p
dj-radioactive
to pozostałości po pascalu i c++, jeszcze się nie przyzwyczaiłem do składni 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
ayeo
Prawdopodobnie masz inputy o tych samych nazwach i sobie nadpisujesz.
dj-radioactive
Muszą być takie same żeby wogóle switch działał. "name" jest wszędzie ustawione na "opcja" a różne są tylko wartości.
ayeo
Wydaje mi się, że nie do końca rozumiesz co robisz. Przeczytaj jakiś kurs na początek.
dj-radioactive
inputy mają unikatowe nazwy a w switch'u umiesciłem złożony warunek. Instrukcja działa, a zmienne nadal puste
ayeo
Pokaż pełny kod formularza. Jeżeli jest zbyt obszerny wrzuć na snippie.net
dj-radioactive
  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 smile.gif
ayeo
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 -->
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.