test - nahodne otazky
4 příspěvky
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Dobry den. Mám rozdělaný test který náhodně vybírá otázky pomoci funkce (id vybraných otázek se zapisuje do pole)otázky z databáze a vypisuje je.. potřeboval bych poradit jak vyhodnotit test nevím jak mam předat to pole s téma náhodně vybranýma id.. nebo jestli je nějaké jiné řešení... mnohokrát děkuji za pomoc
-
ja bych to delal asi takto... tab 'otazky' v DB 3 atributy - id, otazka, odpoved , treba 10 otazek a odpovedi kod: -------------------------------------------- if($odeslano) // vetveni programu - kdyz je odeslan form s odpovedi { if($id==$odpoved) { echo "Spravne!"; } else { echo "Spatne!"; $nacteni=mysql_query("SELECT * FROM otazky WHERE id='$id'"); whille($zaznam=mysql_fetch_array($nacteni)) { echo "Spravna odpoved: ".$zaznam["odpoved"]; } } } else // prvni nacteni (neodeslana odpoved) { $id=rand(1,10); // nahodny vyber otazky $nacteni=mysql_query("SELECT * FROM otazky WHERE id='$id'"); whille($zaznam=mysql_fetch_array($nacteni)) { echo "Nahodna otazka: ".$zaznam["otazka"]."<br>"; } //nacteni 3 nahodne vybranych odpovedi, mezi kterymi je i ta spravna $ok=false; while(!$ok) { $nacteni=mysql_query("SELECT * FROM otazky ORDER BY RAND() LIMIT 3"); whille($zaznam=mysql_fetch_array($nacteni)) { if($id==$zaznam["id"]) { $ok=true; } } } //vypis odpovedi echo "Mozne odpovedi: <br>"; echo "<form method=\"get\">"; whille($zaznam=mysql_fetch_array($nacteni)) { echo "<input type=\"radio\" name=\"odpoved\" value=\"".$zaznam["id"]."\">".$zaznam["odpoved"]."<br>"; } echo "<input type=\"submit\" value=\"odeslat odpoved\">"; echo "<input type=\"hidden\" name=\"odeslano\" value=true>"; echo "<input type=\"hidden\" name=\"id\" value=\"".$id."\">"; echo "</form>"; } ------------------------------------------------------------- jeste to nejak naformatovat, psal jsem to jen tak nacisto - takze opravit chyby, ale jinak myslim, ze by to mohlo fungovat
-
Dekuji ale toto jsem nepotreboval. Mozna jsem spatne vysvetlil svuj problem. Zkusim to teda rozepsat. pokud si zvolim test tak se z databaze (obsahuje tyto sloupce: id, 1moznost, 2moznost, 3moznost, spravnaOdpoved) zjisti pocet zaznamu; ve funkci se vybere nahodne ID otazky a zapise se to $poleNahodnychCisel; potom si z databaze vyberu prislusne otazky a moznosti (pomoci ID) a vypisu je takto: po sem me to funguje jak ma ale neumim udelat vyhodnoceniu tohoto testu... myslim ze by stacila nejak predat promena $poleNahodnychCisel a zbytek je uz jednoduchy..... kdyz jsem zkousel tuto provenou predat na vyhodnoceni bylo v promenne jen vyraz "Array".... Dekuji moc za nejake napady....
-
rozumim tomu spravne, ze nechces jen jednu otazku, ale chces jich tam mit tolik, kolik je jich ulozeno v DB? jen nevis, jak prenest pole s ulozenymi nahodne vybranymi idecky. No myslim, ze ten muj priklad by se dal nejak modifikovat, aby ti to slo jak chces, ale chces to mit v poli, tak budiz... ted se divam na jeden muj starej skript, kde jsem pole prenasel... zkus to udelat takto: nactes vsechny zaznamy z tab, kde mas ulozeny ty moznosti odpovedi a tak(nevim proc tam nemas i tu otazku, bylo by to schudnejsi...mozna si ji tam zapomel napsat, budu delat jako ze tam je) tedy tu tvoji tab upravim: id - otazka - 1moznost - 2moznost - 3moznost - spravnaOdpoved (ve spravnych odpovedich budes mit ulozeno jen cislo moznosti) $nacteni=mysql_query("SELECT * FROM tab ORDER BY RAND()"); pak to vypis a idecka otazek a odpovedi si ukladej do poli - otazka[i] a odpoved[i]: $i=1; echo "<form>"; while($zaznam=mysql_fetch_array($nacteni)) { echo $zaznam["otazka"]; echo "<input type=\"hidden\" name=\"otazka[".$i."]\" value=\"".$zaznam["id"]."\">"; echo "<br><input type=\"radio\" name=\"odpoved[".$i."]\" value=\"1\">".$zaznam["1moznost"]; echo "<br><input type=\"radio\" name=\"odpoved[".$i."]\" value=\"2\">".$zaznam["2moznost"]; echo "<br><input type=\"radio\" name=\"odpoved[".$i."]\" value=\"3\">".$zaznam["3moznost"]; $i++; } echo "<input type=\"hidden\" name=\"odeslano\" value=true>"; echo "<input type=\"submit\" value=\"odeslat odpovedi\">"; echo "</form>"; pak po odeslani: $nacteni=mysql_query("SELECT * FROM tab"); $pocet_otazek=mysql_num_rows($nacteni); for($i=1;$i<=$pocet_otazek;$i++) { $otazka_pom=$otazka[$i]; $nacteni_odp=mysql_query("SELECT * FROM tab WHERE id='$otazka_pom'"); while($zaznam=mysql_fetch_array($nacteni_odp)) { echo "Otazka: ".$zaznam["otazka"]."<br>"; echo "Spravna odpoved: ".$zaznam["odpoved"]."<br>"; echo "Vase odpoved: ".$odpoved[$i]."<br>"; if($odpoved[$i]==$zaznam["odpoved"]) { echo "Spravne!<br>"; } else { echo "Spatne!<br>"; } } echo "<br><br>"; } ------------------------------------------------------------- Tak co lepsi? Jen jeste takovou malou poznamku - ten kdo si ten test pusti 3x, 4x, tak brzo prokoukne spravny odpovedi, protoze moznosti jsou stale stejne.