Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Sprawdzanie prawidłowości pól w teście
Forum PHP.pl > Forum > Przedszkole
misiol
Witam.
Mam taki oto prosty skrypt generujący pytania i możliwe do wyboru odpowiedzi w teście.
  1. <?
  2.  
  3. $pytania=array('Pytanie1', 'Pytanie2', 'Pytanie3');
  4. $odpowiedzi=array('tak//nie//nie wiem', 'wczoraj//jutro//costam', '3//2//1');
  5. $prawidlowe=array(0, 0, 2);
  6.  
  7. for($i=0;$i<count($pytania);++$i)
  8. {
  9. echo '<tr><td><p ...>'.$pytania[$i].'</p></td></tr>';
  10.  
  11. foreach(explode('//', $odpowiedzi[$i]) as $odp)
  12. {
  13. echo '<tr> <input type="radio" name="odp['.$i.'][]" />'.$odp.'</tr>';
  14. }
  15. }
  16.  
  17. ?>


Problem jest tego typu, że nie mogę wymyśleć warunku sprawdzającego poprawność wybranych odpowiedzi. Byłbym wdzięczny gdyby ktokolwiek mógł mi podsunąć rozwiązanie, albo chociaż podpowiedzieć jak się do tego zabrać. pozdrawiam.
pyro
Cytat(misiol @ 29.03.2008, 17:13:34 ) *
Witam.
Mam taki oto prosty skrypt generujący pytania i możliwe do wyboru odpowiedzi w teście.
  1. <?php
  2. $pytania=array('Pytanie1', 'Pytanie2', 'Pytanie3');
  3. $odpowiedzi=array('tak//nie//nie wiem', 'wczoraj//jutro//costam', '3//2//1');
  4. $prawidlowe=array(0, 0, 2);
  5.  
  6. for($i=0;$i
  7. {
  8. echo '
  9.  
  10. '.$pytania[$i].'</p ...>
  11.  
  12. ';
  13.  
  14. foreach(explode('//', $odpowiedzi[$i]) as $odp)
  15. {
  16. echo ' '.$odp.'';
  17. }
  18. }
  19.  
  20. ?>


Problem jest tego typu, że nie mogę wymyśleć warunku sprawdzającego poprawność wybranych odpowiedzi. Byłbym wdzięczny gdyby ktokolwiek mógł mi podsunąć rozwiązanie, albo chociaż podpowiedzieć jak się do tego zabrać. pozdrawiam.


a nei wystarcza same if'y?
misiol
Prawdopodobnie wystarczą, problem jest taki, że nie wiem jak je sformułować. Próbowałem coś takiego:
  1. <?php
  2. $wynik = 0;
  3. if ($_POST[$odp0] == $prawidlowe[0]) {
  4. $wynik++;
  5. }
  6. ?>


Ale musi być z tym if-em coś nie tak, bo nie działa.
pyro
Cytat(misiol @ 29.03.2008, 17:39:04 ) *
Prawdopodobnie wystarczą, problem jest taki, że nie wiem jak je sformułować. Próbowałem coś takiego:
  1. <?php
  2. $wynik = 0;
  3. if ($_POST[$odp0] == $prawidlowe[0]) {
  4. $wynik++;
  5. }
  6. ?>


Ale musi być z tym if-em coś nie tak, bo nie działa.


powinno byc:

  1. <?php
  2. $wynik = 0;
  3. if ($_POST[$odp0] == $prawidlowe[0]) {
  4. $wynik = $wynik++;
  5. }
  6. ?>


chyba ze chciales wyswietlic to:

  1. <?php
  2. $wynik = 0;
  3. if ($_POST[$odp0] == $prawidlowe[0]) {
  4. echo $wynik++;
  5. }
  6. ?>
misiol
No więc doszedłem do czegoś takiego:

  1. <?php
  2. $p1 = $_POST[$odp[0]];
  3.  $p2 = $_POST[$odp[1]];
  4.  $p3 = $_POST[$odp[2]];
  5.  
  6. $odpowiedzi_zle = array();
  7.  $odpowiedzi_dobre = array();
  8.  
  9.  if( $p1=='' || $p2=='' || $p3=='')
  10. {
  11.      echo 'Wypełnij cały quiz!';
  12. }
  13. else
  14. {
  15.      $wynik=0;
  16.      if ($_POST[$odp0] == $prawidlowe[0]) {
  17.           $wynik++;
  18.           $odpowiedzi_dobre['p1'] = '1';
  19. }
  20.      else
  21.      {
  22.           $odpowiedzi_zle['p1'] = '1';
  23.       }
  24.       if($_POST[$odp1] == $prawidlowe[1])
  25.       {
  26.           $wynik++;
  27.           $odpowiedzi_dobre['p2'] = '2';
  28.       }
  29.      else
  30.      {
  31.           $odpowiedzi_zle['p2'] = '2';
  32.      }
  33.      if($_POST[$odp2] == $prawidlowe[2])
  34.      {
  35.           $wynik++;
  36.           $odpowiedzi_dobre['p3'] = '3';
  37.      else
  38.      {
  39.           $odpowiedzi_zle['p3'] = '3';
  40.      }
  41. $wynik = ($wynik /* 100) + 0.;
  42. $ilosc_odp_dobrych = count($odpowiedzi_dobre);
  43.  
  44. if($wynik <= 50.) {
  45.      echo 'nie udalo ci sie osiagnac wymaganej liczby prawidlowych odpowiedzi';
  46. }
  47. else {
  48.     echo 'brawo, zaliczyles test';
  49.     echo 'odpowiedizales poprawnie na '.$ilosc_odp_dobrych.' pytan';
  50. }
  51. ?>
pyro
Cytat(misiol @ 29.03.2008, 18:21:42 ) *
No więc doszedłem do czegoś takiego:

[php]
<?php
$p1 = $_POST[$odp[0]];
$p2 = $_POST[$odp[1]];
$p3 = $_POST[$odp[2]];

$odpowiedzi_zle = array();
$odpowiedzi_dobre = array();

if( $p1=='' || $p2=='' || $p3=='')
{
echo 'Wypełnij cały quiz!';
}
else
{
$wynik=0;
if ($_POST[$odp0] == $prawidlowe[0]) {
$wynik++;
$odpowiedzi_dobre['p1'] = '1';
}
else
{
$odpowiedzi_zle['p1'] = '1';
}
if($_POST[$odp1] == $prawidlowe[1])
{
$wynik++;
$odpowiedzi_dobre['p2'] = '2';
}
else
{
$odpowiedzi_zle['p2'] = '2';
}
if($_POST[$odp2] == $prawidlowe[2])
{
$wynik++;
$odpowiedzi_dobre['p3'] = '3';
else
{
$odpowiedzi_zle['p3'] = '3';
}
$wynik = ($wynik / 3 * 100) + 0.1 ;
$ilosc_odp_dobrych = count($odpowiedzi_dobre);

if($wynik <= 50.1 ) {
echo 'nie udalo ci sie osiagnac wymaganej liczby prawidlowych odpowiedzi';
}
else {
echo 'brawo, zaliczyles test';
echo 'odpowiedizales poprawnie na '.$ilosc_odp_dobrych.' pytan';
}


i? jakis problem tongue.gif?
misiol
No problem jest taki, że to sprawdzanie odpowiedzi nie działa. Wybieram odpowiedzi i nic się nie dzieje. Można to przetestować tutaj - http://www.amigoksg.ovh.org/test/testing.php
remik09
@pyro - czemu tak dziwnie robisz inkrementacje ?

przeciez

  1. <?php
  2. $wynik = $wynik++;
  3. ?>


to to samo co

  1. <?php
  2. $wynik++;
  3. ?>
plurr
pracuje nad pewnymi ankietami dla pewnej firmy, mam w nich pewna gigantyczna tablice ktora wyglada nastepujaco:

array('1' => array('pytanie', 'warunek poprawnosci'), '2' => array('pytanie2', 'warunek poprawnosci2'));

warunek poprawnosci to funkcje napisane, do ktorych wchodza odpowiedzi z sesji i wyrzucaja wartosc logiczna.

Po tablicy leci jakis foreach, jest to lepsze rozwiazanie od 50 if'ów, poniewaz kiedy chcemy dodac pytanie, to dodajemy tylko do konfiga testu - czyli do tej wielkiet tablicy z pytaniami, a reszte zostawiamy bez zmian.
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.