Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Problem ze zliczaniem poprawnych odpowiedzi w formularzu
ZbigniewN
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.09.2012

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


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. ?>


Ten post edytował ZbigniewN 6.09.2012, 22:29:33
Go to the top of the page
+Quote Post
Pawel_W
post
Post #2





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


zapewne ten warunek nie zostaje spełniony, nie wiem po co go dajesz (IMG:style_emoticons/default/smile.gif)
  1. if (count($_POST)==2)
Go to the top of the page
+Quote Post
ZbigniewN
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.09.2012

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


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 to the top of the page
+Quote Post
-Gość-
post
Post #4





Goście







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. }
Go to the top of the page
+Quote Post
Pawel_W
post
Post #5





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


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. }
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: 16.09.2025 - 11:13