Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Przekazywanie zmiennej POSTem.
audiodesign10
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.08.2015

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


Witam wszystkich użytkowników,

piszę do Was z pewnym problemem.

Mianowicie poniżej przedstawiam Wam kod, gdzie chcę przekazać zmienną tak, aby przy przeładowaniu strony jej wartość "nie znikała".

Teraz sprawa wygląda tak, że jeśli zaznaczę prawidłową odpowiedź to do zmiennej A przypisuje wartość 1, następnie przy kolejnym pytaniu również zaznaczę prawidłową odpowiedź to wówczas zmienna A przypisuje wartość 0, a B przypisuje wartość 1 itd.

Proszę Was o pomoc jak wykonać tak czynność, aby przy odświeżaniu wartość A miała dalej 1 oraz aby kolejne wartości nie zerowały się.

KOD:

Plik główny - startQuiz.php

  1.  
  2. <?php
  3.  
  4. include_once 'lib/QuestSwitcher.php';
  5.  
  6. $answ1 = $_POST['answer-1'];
  7. $answ2 = $_POST['answer-2'];
  8. $answ3 = $_POST['answer-3'];
  9.  
  10. $a = 0;
  11. $b = 0;
  12. $c = 0;
  13.  
  14. if($answ1 == "A"){
  15. $a = 1;
  16. } elseif ($answ2 == "A") {
  17. $b = 1;
  18. } elseif ($answ3 == "A") {
  19. $c = 1;
  20. }
  21.  
  22. echo "Wartość A: ".$a."<br>";
  23. echo "Wartość B: ".$b."<br>";
  24. echo "Wartość C: ".$c."<br>";
  25.  
  26. ?>
  27.  
  28.  
  29. <!DOCTYPE html>
  30. <html>
  31. <head>
  32. <title>Rozpocznij Quiz</title>
  33. <meta charset="UTF-8">
  34. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  35. <link rel="stylesheet" href="style/theme.css">
  36. </head>
  37. <body lang="pl">
  38.  
  39. <section>
  40.  
  41. <h2>Pytania</h2>
  42.  
  43. </section>
  44.  
  45. <form method="post">
  46. <input type="submit" name="start">
  47. </form>
  48.  
  49. <?php
  50.  
  51. if(isset($_POST['start'])){
  52. echo "Pozostalo 1/3";
  53. QuestSwitcher::quest1();
  54. } elseif(isset($_POST['next-1'])){
  55. echo "Pozostalo 2/3";
  56. QuestSwitcher::quest2();
  57. } elseif (isset($_POST['next-2'])) {
  58. echo "Pozostalo 3/3";
  59. QuestSwitcher::quest3();
  60. }
  61.  
  62. ?>
  63.  
  64. </body>
  65. </html>
  66.  


Plik lib/QuestSwitcher.php

  1.  
  2. <?php
  3.  
  4. class QuestSwitcher {
  5.  
  6.  
  7. static public function quest1() {
  8.  
  9. echo <<<PL
  10.  
  11.   <form method="post" novalidate action="startQuiz.php">
  12.  
  13.   <label>Wybierz jedną odpowiedź.</label>
  14.  
  15.   <div>
  16.  
  17.   <label for="an1">Ta odpowiedź jest poprawna</label>
  18.   <input type="radio" name="answer-1" id="an1" value="A">
  19.  
  20.   </div>
  21.  
  22.   <div>
  23.  
  24.   <label for="an2">Odpowiedz 2 FORM1</label>
  25.   <input type="radio" name="answer-1" id="an2" value="B">
  26.  
  27.   </div>
  28.  
  29.   <div>
  30.  
  31.   <input type="submit" name="next-1" value="Dalej">
  32.  
  33.   </div>
  34.  
  35.  
  36.   </form>
  37.  
  38.  
  39. PL;
  40.  
  41. }
  42.  
  43.  
  44. static public function quest2() {
  45.  
  46. echo <<<PL
  47.  
  48.   <form method="post" novalidate action="startQuiz.php">
  49.  
  50.   <label>Wybierz jedną odpowiedź.</label>
  51.  
  52.   <div>
  53.  
  54.   <label for="an1">Ta odpowiedź jest poprawna</label>
  55.   <input type="radio" name="answer-2" id="an1" value="A">
  56.  
  57.   </div>
  58.  
  59.   <div>
  60.  
  61.   <label for="an2">Odpowiedz 2 FORM2</label>
  62.   <input type="radio" name="answer-2" id="an2" value="B">
  63.  
  64.   </div>
  65.  
  66.   <div>
  67.  
  68.   <input type="submit" name="next-2" value="Dalej">
  69.  
  70.   </div>
  71.  
  72.  
  73.   </form>
  74.  
  75.  
  76. PL;
  77.  
  78. }
  79.  
  80. static public function quest3() {
  81.  
  82. echo <<<PL
  83.  
  84.   <form method="post" novalidate action="startQuiz.php">
  85.  
  86.   <label>Wybierz jedną odpowiedź.</label>
  87.  
  88.   <div>
  89.  
  90.   <label for="an1">Ta odpowiedź jest poprawna</label>
  91.   <input type="radio" name="answer-3" id="an1" value="A">
  92.  
  93.   </div>
  94.  
  95.   <div>
  96.  
  97.   <label for="an2">Odpowiedz 2 FORM2</label>
  98.   <input type="radio" name="answer-3" id="an2" value="B">
  99.  
  100.   </div>
  101.  
  102.   <div>
  103.  
  104.   <input type="submit" name="next-3" value="Dalej">
  105.  
  106.   </div>
  107.  
  108.  
  109.   </form>
  110.  
  111.  
  112. PL;
  113.  
  114. }
  115.  
  116.  
  117.  
  118. }
  119.  


PS. Wybaczcie za bałagan w kodzie.

Pozdrawiam! (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
bobek358
post
Post #2





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


W metodzie quest2() dodaj ukryte pole input o nazwie answer-1 o wartości $_POST['answer-1']
Tak samo w metodzie quest3() dodaj dwa inputy ukryte answer-1 oraz answer-2
Go to the top of the page
+Quote Post
audiodesign10
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.08.2015

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


Cytat(bobek358 @ 3.08.2015, 22:54:24 ) *
W metodzie quest2() dodaj ukryte pole input o nazwie answer-1 o wartości $_POST['answer-1']
Tak samo w metodzie quest3() dodaj dwa inputy ukryte answer-1 oraz answer-2



Witam ponownie,

dziękuję za odpowiedź, aczkolwiek wciąż niestety nie działa jak powinno daje zrzut kodu co dodałem

Plik lib/QuestSwitcher.php

  1.  
  2. <?php
  3.  
  4. class QuestSwitcher {
  5.  
  6.  
  7. static public function quest1() {
  8.  
  9. echo <<<PL
  10.  
  11.   <form method="post" novalidate action="startQuiz.php">
  12.  
  13.   <label>Wybierz jedną odpowiedź.</label>
  14.  
  15.   <div>
  16.  
  17.   <label for="an1">Ta odpowiedź jest poprawna</label>
  18.   <input type="radio" name="answer-1" id="an1" value="A">
  19.  
  20.   </div>
  21.  
  22.   <div>
  23.  
  24.   <label for="an2">Odpowiedz 2 FORM1</label>
  25.   <input type="radio" name="answer-1" id="an2" value="B">
  26.  
  27.   </div>
  28.  
  29.   <div>
  30.  
  31.   <input type="submit" name="next-1" value="Dalej">
  32.  
  33.   </div>
  34.  
  35.  
  36.   </form>
  37.  
  38.  
  39. PL;
  40.  
  41. }
  42.  
  43.  
  44. static public function quest2() {
  45.  
  46. echo <<<PL
  47.  
  48.   <form method="post" novalidate action="startQuiz.php">
  49.  
  50.   <label>Wybierz jedną odpowiedź.</label>
  51.  
  52.   <div>
  53.  
  54.   <label for="an1">Ta odpowiedź jest poprawna</label>
  55.   <input type="radio" name="answer-2" id="an1" value="A">
  56.  
  57.   </div>
  58.  
  59.   <div>
  60.  
  61.   <label for="an2">Odpowiedz 2 FORM2</label>
  62.   <input type="radio" name="answer-2" id="an2" value="B">
  63.  
  64.   </div>
  65. PL;
  66. $zm = $_POST['answer-1'];
  67.  
  68. echo "<input type=\"hidden\" value=\"{$zm}\">";
  69.  
  70.  
  71. echo "<div>".
  72.  
  73. '<input type="submit" name="next-2" value="Dalej">'.
  74.  
  75. "</div>".
  76.  
  77.  
  78. "</form>";
  79. }
  80.  
  81. static public function quest3() {
  82.  
  83. echo <<<PL
  84.  
  85.   <form method="post" novalidate action="startQuiz.php">
  86.  
  87.   <label>Wybierz jedną odpowiedź.</label>
  88.  
  89.   <div>
  90.  
  91.   <label for="an1">Ta odpowiedź jest poprawna</label>
  92.   <input type="radio" name="answer-3" id="an1" value="A">
  93.  
  94.   </div>
  95.  
  96.   <div>
  97.  
  98.   <label for="an2">Odpowiedz 2 FORM2</label>
  99.   <input type="radio" name="answer-3" id="an2" value="B">
  100.  
  101.   </div>
  102. PL;
  103. $zm = $_POST['answer-1'];
  104. $zm1 = $_POST['answer-2'];
  105.  
  106. echo "<input type=\"hidden\" value=\"{$zm}\">";
  107. echo "<input type=\"hidden\" value=\"{$zm1}\">";
  108.  
  109. echo "<div>".
  110.  
  111. '<input type="submit" name="next-3" value="Dalej">'.
  112.  
  113. "</div>".
  114.  
  115.  
  116. "</form>";
  117.  
  118.  
  119.  
  120.  
  121. }
  122.  
  123.  
  124.  
  125. }
  126.  
Go to the top of the page
+Quote Post
bobek358
post
Post #4





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Brakuje nazwy dla tych ukrytych pól:

  1. echo "<input type=\"hidden\" value=\"{$zm}\">";

powinno być
  1. echo "<input type=\"hidden\" value=\"{$zm}\" name=\"answer-1\">";


i tak samo w 3 pytaniu dla obu poprzednich.
Go to the top of the page
+Quote Post
audiodesign10
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.08.2015

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


Cytat(bobek358 @ 4.08.2015, 19:40:57 ) *
Brakuje nazwy dla tych ukrytych pól:

  1. echo "<input type=\"hidden\" value=\"{$zm}\">";

powinno być
  1. echo "<input type=\"hidden\" value=\"{$zm}\" name=\"answer-1\">";


i tak samo w 3 pytaniu dla obu poprzednich.



Dziękuje za odpowiedź.

Mianowicie mam jeszcze jeden problem.

Podczas gdy mam taki kod warunku:

Sposób 1:

  1.  
  2. if($answ1 == "A"){
  3. $a = 1;
  4. } elseif ($answ2 == "A") {
  5. $b = 1;
  6. } elseif ($answ3 == "A") {
  7. $c = 1;
  8. }
  9.  


Wtedy tylko do zmiennej A dopisuje się 1.

Zaś jeśli mam warunki takie:

Sposób 2:

  1.  
  2. if($answ1 == "A"){
  3. $a = 1;
  4. }
  5.  
  6. if($answ2 == "A"){
  7. $b = 1;
  8. }
  9.  
  10. if($answ3 == "A"){
  11. $c = 1;
  12. }
  13.  


Wtedy wszystko działa jak należy.

Tylko z tego co się orientuję sposób 2 nie jest zbyt dobry.
I co należałoby poprawić w sposobie 1, aby funkcjonowało to i dlaczego działa to w taki sposób?

Pozdrawiam.

Ten post edytował audiodesign10 9.08.2015, 01:32:40
Go to the top of the page
+Quote Post
bobek358
post
Post #6





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


W sposobie pierwszym nigdy Ci to nie zadziała ponieważ jeśli pierwszy warunek został spełniony to nie są wykonywane kolejne instrukcje.
Go to the top of the page
+Quote Post
audiodesign10
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 3.08.2015

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


Cytat(bobek358 @ 10.08.2015, 15:17:29 ) *
W sposobie pierwszym nigdy Ci to nie zadziała ponieważ jeśli pierwszy warunek został spełniony to nie są wykonywane kolejne instrukcje.


Ok, dziękuje ponownie za odpowiedź.

Czyli podsumowując podany przeze mnie drugi sposób jest dobry?
Go to the top of the page
+Quote Post
bobek358
post
Post #8





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Działający tak, ale czy optymalny to już inna historia. Ale działać będzie ok.
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: 15.09.2025 - 13:07