Hei!
Kirjoitinpa tässä aikani kuluksi pienen ja yksinkertaisen tietovisan PHP:llä. Visa on hyvin yksinkertainen, ensin arvotaan annettu määrä kysymyksiä, kysymyksiin vastataan neljästä eri vaihtoehdosta valiten, siirrytään seuraavalle sivulle joka tarkastaa vastaukset ja antaa palautetta.
Kysymyksiä voit lisätä tiedostoon questions.php niin paljon kuin vaan haluat, kunhan muistat muuttaa q_amount nimisen muuttujan arvon questions.php nimisestä tiedostosta. Muista myös laittaa oikea vastaus ensimmäiseksi aina. Ko. vastaus tosin ei välttämättä tule esille ensimmäisenä, sillä vastausehdokkaiden järjestys arvotaan aina.
Olen testannut tämän useaan otteeseen, mutta on toki mahdollista, että siitä löytyy vieläkin virheitä.
Käytännössä voit testata tätä osoitteessa:
http://www.the-rm.com/index.php?main=1⊂=1
Tuohon visaan kysymykset ovat tosin hiukan hätiköiden tehtyjä, joten älä välitä jos ne eivät aina tuntuisi kovin mielekkäiltä.
Pahoittelen vielä, että itse visa on englanniksi, tosin ei liene kovinkaan suuri työ kääntää tämä suomeksi. Kommentit tosin ovat nyt suomeksi.
quiz.php
<?php // Sisällytä kysymykset sisältävä php-tiedosto include("questions.php"); $taken = array(); for($x=0;$x<count($questions);$x++) { $taken[$x] = 0; } // Arvo kysymykset for($x=0;$q_amount>$x;$x++) { $e=0; do { $n_q = mt_rand(0, (count($questions)-1)); // Tarkista onko kysymys varattu if ($taken[$n_q]==0) { $taken[$n_q] = 1; if ($x == $q_amount) { $qx[$x] = "q$x=$n_q"; } else { $qx[$x] = "q$x=$n_q&"; } $e=1; $x1=$x+1; $qs[$x] = "<div><b>$x1. $questions[$n_q]</b></div>"; $v = mt_rand(0,3); for($w=0;$w<=3;$w++) { // Arvo vastausehdokkaiden järjestys $a=$answers[$n_q][$v]; $v+=1; if ($v>3) { $v=0; } $aq[$x][$w] = "<input type=\"radio\" name=\"group$x\" value=\"$a\">$a </input>\n"; } } } while ($e==0); } echo "<form action=\"results.php?"; for($x=0;$x<$q_amount;$x++) { echo "$qx[$x]"; } echo "\" method=\"post\">\n"; for($x=0;$x<$q_amount;$x++) { // Tulosta kysymykset echo $qs[$x]; for($y=0;$y<=3;$y++) { // Tulosta vastaukset echo $aq[$x][$y]; } } echo "<br/><br/><input type=\"submit\" value=\"Submit\" />"; echo "</form>"; ?>
results.php
<?php include("questions.php"); // Lasketaan oikeiden vastauksien määrä for($x=0;$x<$q_amount;$x++) { // Tarkistetaan ko. kysymys muuttuja muuttujien avulla $e = "group$x"; $f = "q$x"; // Onko muuttuja muuttuja f oikea vastaus if ($answers[$$f][0] == $$e) { $rans +=1; } } // Suhteellinen tulos $score = ($rans/$q_amount)*100; // Selitykset kullekin pistemäärälle $result = array(1 => "Way below standard.", "Very poor.", "Poor.", "Satisfactory.", "Rather okay.", "Good.", "Very good.", "Impressive.", "Very impressive.", "Excellent!"); // Tarkastetaan pistemäärälle vastaava selitys for($class=0;$class<=100;$class+=10) { if ($score>=$class & $score<$class+10) { if ($class==0) { $r=0; } else { $r=$class/10; } break; } } echo "<h1><b>You got $score% right</b></h1><div>which is $rans out of $q_amount</div>\n"; echo "<div><br/><br/><b>So how did it go actually?</b></div>\n"; echo "<div>$result[$r]</div>"; ?>
questions.php
<?php // Kysymysten määrä $q_amount = 10; // Lisää niin monta kysymystä kuin haluat $questions = array( "What is A?", "What is B?", "What is C?", "What is D?", "What is E?", "What is F?", "What is G?", "What is H?", "What is I?", "What is J?", "What is K?", "What is L?", "What is M?", "What is N?", "What is O?", "What is P?", "What is Q?", "What is R?", "What is S?", "What is T?" ); // Vastaukset $answers = array( 0 => array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer"), array ("Correct answer", "False answer", "False answer", "False answer") ); ?>
kivan epäselvää koodia, tulee ihan mun koodi mieleen :x
ja onko kiva tehdä tollanen kauhee correct answer-false answer-taulukko?
lainaus:
ja onko kiva tehdä tollanen kauhee correct answer-false answer-taulukko?
Muuta keinoa tuon tekemiseksi ei ole, nimittäin tämä ei ole oikein-väärin -taulukko, vaan oikein-väärin-väärin-väärin -taulukko. Tässä nimittäin on neljä eri vastausvaihtoehtoa, joista yksi on oikea ja muut vääriä. Alkuun tein vaan tällaiset yksinkertaiset kysymykset, eikä niitä minun mielestä tarvitse vaihtaa, sillä koodivinkin idea tulee harvinaisen selväksi. Jos tämä jäi vielä epäselväksi, niin katso esimerkkivisa, johon annoinkin linkin aiemmin.
Kieltämättä, koodini on sekavaa, en ole ennen juurikaan koodivinkkejä levitellyt. Toivottavasti seuraavani on sitten selvempi.
ei se esimerkkivisan osote toimi..
ei ni ^
mitä täytyis muokata jotta toimii kahdella tai kolmella vastauksella?
En saa toimimaan tarkistusta vaan ohjelma väittää tuloksien olevan aina sataprosenttisesti oikein vaikka vastaisin väärin!
Mikä tuossa tarkistuksessa voisi olla väärin kun ei nyt oikein minulle aukene?
lainaus:
En saa toimimaan tarkistusta vaan ohjelma väittää tuloksien olevan aina sataprosenttisesti oikein vaikka vastaisin väärin!
Mikä tuossa tarkistuksessa voisi olla väärin kun ei nyt oikein minulle aukene?
Sama ongelma minullakin...
Tästähän puuttuu vaan top- lista :)
saiskohan tästä mitenkään sellasta versiota, että se hakis kysymykset ja vastaukset vaikka näin
jos osoite on
quiz.php?kysely=joku
niin se hakis joku.txt:stä kysymykset ja vastaukset.
joku.txt:
Kysymys|oikein|Väärin|Väärin|Väärin
edit:Taisin saada ideasta kiinni ja kokeilen väsätä sellaisen itse. Voitte kyllä valmiitakin ratkaisuja ehdottaa.
alussa kirjoitti:
En saa toimimaan tarkistusta vaan ohjelma väittää tuloksien olevan aina sataprosenttisesti oikein vaikka vastaisin väärin!
Mikä tuossa tarkistuksessa voisi olla väärin kun ei nyt oikein minulle aukene?
Sama täälä. Voisko joku selittää, tarvitsisin tälläistä sivulleni.
Suomennettu koodi, toivottavasti toimii:
aleboy kirjoitti:
alussa kirjoitti:
En saa toimimaan tarkistusta vaan ohjelma väittää tuloksien olevan aina sataprosenttisesti oikein vaikka vastaisin väärin!
Mikä tuossa tarkistuksessa voisi olla väärin kun ei nyt oikein minulle aukene?
Sama täälä. Voisko joku selittää, tarvitsisin tälläistä sivulleni.
Sama täällä
Aihe on jo aika vanha, joten et voi enää vastata siihen.