Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Sprawdzanie prawidłowości pól w teście
misiol
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.03.2008

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


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





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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?
Go to the top of the page
+Quote Post
misiol
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.03.2008

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


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





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.03.2008

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


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


Ten post edytował misiol 29.03.2008, 18:27:31
Go to the top of the page
+Quote Post
pyro
post
Post #6





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ?
Go to the top of the page
+Quote Post
misiol
post
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.03.2008

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


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
Go to the top of the page
+Quote Post
remik09
post
Post #8





Grupa: Zarejestrowani
Postów: 102
Pomógł: 10
Dołączył: 25.12.2005
Skąd: Ruda Śląska

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


@pyro - czemu tak dziwnie robisz inkrementacje ?

przeciez

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


to to samo co

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


Ten post edytował remik09 30.03.2008, 00:47:56
Go to the top of the page
+Quote Post
plurr
post
Post #9





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

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


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.
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: 23.12.2025 - 18:04