Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Problem ze zliczaniem poprawnych odpowiedzi w formularzu
Forum PHP.pl > Forum > Przedszkole
ZbigniewN
Zaczynam zabawę z pisaniem w PHP, proszę o wyrozumiałość. Muszę zrobić kilka formularzy i na tym się zatrzymałem. Po wypełnieniu formularza miały się zliczać poprawne odpowiedzi i na końcu chciałem dostać informację o ich ilości. Myślałem też by dodać coś, by ilość poprawnych odpowiedzi pokazała się dopiero po naciśnięciu przycisku ale nad tym się jeszcze nie zastanawiałam. Problem mam taki, że nie zliczają mi się te dobre odpowiedzi.

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  4. </head>
  5. <body>
  6. <form action="i.php" method="post">
  7. Pyt. 1: Jakiś tekst<br />
  8. A. <input type="radio" name="pyt1" id="odp_a" value="a"><label for="odp_a">jakaś odpowiedź</label><br />
  9. B. <input type="radio" name="pyt1" value="b"><br />
  10. C. <input type="radio" name="pyt1" value="c"><br />
  11. D. <input type="radio" name="pyt1" value="d"><br />
  12. Pyt. 2: Jakiś tekst<br />
  13. A. <input type="radio" name="pyt2" value="a"><br />
  14. B. <input type="radio" name="pyt2" value="b"><br />
  15. C. <input type="radio" name="pyt2" value="c"><br />
  16. D. <input type="radio" name="pyt2" value="d"><br />
  17. <input type="reset" value="Usuń informacje"><br /><br />
  18. <input type="button" value="Zakończ test"><br />
  19. </form>
  20. </body>
  21. </html>
  22. <?php
  23. $pkt = 0;
  24. $pkt = $pkt + 1;
  25. if (count($_POST)==2)
  26. {
  27. if ($_POST["pyt1"] =="a") {$pkt = $pkt + 1;}
  28. if ($_POST["pyt2"] =="b") {$pkt = $pkt + 1;}
  29. }
  30. {
  31. echo "Otrzymałeś punktów "; echo $pkt;
  32. }
  33. ?>
Pawel_W
zapewne ten warunek nie zostaje spełniony, nie wiem po co go dajesz smile.gif
  1. if (count($_POST)==2)
ZbigniewN
Linię dodałem, by sprawdzić, czy zliczne są punkty i jest one zbędna

  1. $pkt = $pkt + 1;


Bez lini

  1. if (count($_POST)==2)


pokazuje mi błędy w liniach

  1. if ($_POST["pyt1"] =="a") {$pkt = $pkt + 1;}
  2. if ($_POST["pyt2"] =="b") {$pkt = $pkt + 1;}
Gość
zamień od wiersza 23.
  1. $pkt = 0;
  2. if (strcasecmp($_SERVER['REQUEST_METHOD'], 'POST') == 0) {
  3. if (isset($_POST['pyt1']) && ($_POST['pyt1'] == 'a')) {
  4. $pkt = $pkt + 1;
  5. }
  6. if (isset($_POST['pyt2']) && ($_POST['pyt2'] == 'b')) {
  7. $pkt = $pkt + 1;
  8. }
  9. echo 'Otrzymałeś punktów: ' . $pkt;
  10. }
Pawel_W
strcasecmp jest w tym momencie zbędne bo w manualu jest wyraźnie pokazane, że $_SERVER['REQUEST_METHOD'] zwraca wartości uppercase (GET, HEAD, POST, PUT)

co do reszty, zakładam, że pytań będzie więcej, prościej by Ci było zrobić to tak:

  1. if($_SERVER['REQUEST_METHOD'] == 'POST'){
  2. $answers = array('a', 'b', ...); // odpowiedzi na kolejne pytania
  3. $pts = 0;
  4. for($i=0,$c=count($answers);$i<$c;$i++){
  5. if(isset($_POST['pyt'.($i+1)]) && $_POST['pyt'.($i+1)] == $answers[$i]) $pts++;
  6. }
  7. echo 'Otrzymałeś punktów: ' . $pts;
  8. }
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.