Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Przekazywanie zmiennej POSTem.
Forum PHP.pl > Forum > Przedszkole
audiodesign10
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! wink.gif
bobek358
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
audiodesign10
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.  
bobek358
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.
audiodesign10
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.
bobek358
W sposobie pierwszym nigdy Ci to nie zadziała ponieważ jeśli pierwszy warunek został spełniony to nie są wykonywane kolejne instrukcje.
audiodesign10
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?
bobek358
Działający tak, ale czy optymalny to już inna historia. Ale działać będzie ok.
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.