Salut,
de curand am inceput sa lucrez la un test online . Problema a aparut atunci cand am vrut sa afisez intreabrile si raspunsurile aleatoriu din baza de date . Are cineva vreo idee ?
Test online - afisare aleator
-
- Mesaje:11
Test online - afisare aleator
ripe12
Mesaje:12
Incearca cu functia "rand(min,max)". Unde min,max e intervalul din care iti va genera un numar intreg aleatoriu. Iar la max poti pune ca valoare folosind functia "mysql_num_rows($interogare)" unde $interogare=mysql_query("SELECT * FROM `tabelul_tau`"). Apoi cu "mysql_data_seek()" accesezi direct randul dorit...
Codul ar fi cam asa:
Si asa $rand['intrebare'] contine o intrebare aleatorie... Sper ca nu am uitat vreo virgula sau vreo litera ca e destul de tarziu si sunt destul de obosit. Oricum vezi curs marplo: https://marplo.net/php-mysql/mysql3.html
Spor.
Codul ar fi cam asa:
Cod: Selectaţi tot
$interogare=mysql_query("SELECT `intrebare` FROM `tabelul_tau`");
$nr_randuri=mysql_num_rows($interogare);
$nr_aleatoriu=rand(0,$nr_randuri);
if (mysql_data_seek($interogare, $nr_aleatoriu)) $rand = mysql_fetch_assoc($interogare);
Spor.
iuly
Mesaje:11
in primul rand mersi frumos ca mi-ai raspuns ,
acest lucru despre care vorbesti l-am facut si eu .. am pus totul intr-un for si imi afisez cate intrebari vreau eu.. problema intervine atunci cand vreau sa fac acelasi lucru cu raspunsurile , raspunsurile sunt introduse in baza de date avand un camp unde scrie "nu" si "da" pt raspuns corect sau incorect . In concluzie la o intrebare am 4 raspunsuri 3 cu nu si unu cu da , cum fac sa schimb locul raspunsurilor , dar sa il stiu care e corect pentru a verifica testul ?
tabelul intrebari contine : id , id_intrebare , intrebare
tabelul raspunsuri contine : id, id_intrebare , raspuns , raspuns_corect
am atasat ce am facut pana acum http://www.filehost.ro/932533/test_rar" target="_blank
daca mai ajuta raman profund indatorat ca mi-am tocit creierii
http://img6.imageshack.us/img6/1443/bazadedate.png" target="_blank
acest lucru despre care vorbesti l-am facut si eu .. am pus totul intr-un for si imi afisez cate intrebari vreau eu.. problema intervine atunci cand vreau sa fac acelasi lucru cu raspunsurile , raspunsurile sunt introduse in baza de date avand un camp unde scrie "nu" si "da" pt raspuns corect sau incorect . In concluzie la o intrebare am 4 raspunsuri 3 cu nu si unu cu da , cum fac sa schimb locul raspunsurilor , dar sa il stiu care e corect pentru a verifica testul ?
tabelul intrebari contine : id , id_intrebare , intrebare
tabelul raspunsuri contine : id, id_intrebare , raspuns , raspuns_corect
am atasat ce am facut pana acum http://www.filehost.ro/932533/test_rar" target="_blank
daca mai ajuta raman profund indatorat ca mi-am tocit creierii
http://img6.imageshack.us/img6/1443/bazadedate.png" target="_blank
MarPlo
Mesaje:4343
Incearca sa te folosesti (inspiri) din urmatorul exemplu. Ideea e sa ai raspunsurile de pe un rand intr-un array. Mai mult ..., studiaza exemplul:
Cod: Selectaţi tot
<?php
// Randul cu raspunsurile
$row = array('inc1'=>'x', 'inc2'=>'x2', 'cor'=>'corect', 'inc4'=>'x4');
$re = array_rand($row, count($row)); // Amesteca ordinea cheilor
// Afiseaza valorile, in ordinea amestecata
for($i=0; $i<count($re); $i++) {
$key = $re[$i];
echo $row[$key]. '<br />';
}
// Stii ca unde $key = 'cor', e raspunsul corect
?>
iuly
Mesaje:11
ms .. pare buna ideea incerc si am sa revin cu rezultatele
iuly
Mesaje:11
Nu merge .. nu le schimba (
scuze pentru dublu post
scuze pentru dublu post
MarPlo
Mesaje:4343
Eu am testat modeul de mai sus si le schimba ordinea. Mai mult nu stiu ce trebuie.
iuly
Mesaje:11
exact modeulul de mai sus l-am incercat si eu si imi pastreaza aceeasi ordine ?
MarPlo
Mesaje:4343
Nu stiu ce sau cum e la tine ori de ce nu afiseaza aleator.
Scriptul, asa cum e, pe localhost mi-a dat acum urmatorul rezultat:
Prima data mi-a afisat :
x2
x4
x
corect
A doua oara, la refresh, mi-a afisat :
corect
x4
x2
x
Scriptul, asa cum e, pe localhost mi-a dat acum urmatorul rezultat:
Prima data mi-a afisat :
x2
x4
x
corect
A doua oara, la refresh, mi-a afisat :
corect
x4
x2
x
iuly
Mesaje:11
http:// lvais.com/test2/test.php" target="_blank atunci nu mai inteleg nimic )
MarPlo
Mesaje:4343
Asa este, se poate sa fie ceva diferit la versiunile PHP.
Pe localhost amesteca, dar cand am testat acum si pe acest server e la fel ca la tine. Dar daca in loc de "count($row)" pui 3, da 3 rezultate amestecate.
Incearca urmatorul exemplu, cu "shuffle()"
Pe localhost amesteca, dar cand am testat acum si pe acest server e la fel ca la tine. Dar daca in loc de "count($row)" pui 3, da 3 rezultate amestecate.
Incearca urmatorul exemplu, cu "shuffle()"
Cod: Selectaţi tot
<?php
// Randul cu raspunsurile
$row = array('inc1'=>'x', 'inc2'=>'x2', 'cor'=>'corect', 'inc4'=>'x4');
$corect = $row['cor']; // Retii valoarea corecta
shuffle($row); // Amesteca valorile
// Afiseaza valorile, in ordinea amestecata
for($i=0; $i<count($row); $i++) {
// Identifici cand a ajuns la raspunsul corect
if($corect==$row[$i]) {
echo "Raspunsul nr. $i e corect <br />";
}
echo $row[$i]. '<br />'; // Afiseaza valorile
}
?>
iuly
Mesaje:11
am aplicat scriptul mai sus mentionat si functioneaza perfect insa am intampinat o problema atunci cand incerc sa contorizez cumva raspunsurile , am incercat cu variabile da nu-mi ies . Am atasat documentul http://www.filehost.ro/938143/test_online_php" target="_blankMarPlo scrie:Asa este, se poate sa fie ceva diferit la versiunile PHP.
Pe localhost amesteca, dar cand am testat acum si pe acest server e la fel ca la tine. Dar daca in loc de "count($row)" pui 3, da 3 rezultate amestecate.
Incearca urmatorul exemplu, cu "shuffle()"Cod: Selectaţi tot
<?php // Randul cu raspunsurile $row = array('inc1'=>'x', 'inc2'=>'x2', 'cor'=>'corect', 'inc4'=>'x4'); $corect = $row['cor']; // Retii valoarea corecta shuffle($row); // Amesteca valorile // Afiseaza valorile, in ordinea amestecata for($i=0; $i<count($row); $i++) { // Identifici cand a ajuns la raspunsul corect if($corect==$row[$i]) { echo "Raspunsul nr. $i e corect <br />"; } echo $row[$i]. '<br />'; // Afiseaza valorile } ?>
Daca reusesc sa trec si de chestia asta.. postez scriptul in semn de recunostinta
Subiecte similare
- Afisare numar cel mai mare dintr o coloana
PHP - MySQL - XML Primul mesaj
Bună MarploUltimul mesaj
Vreau să extrag din coloan pret cel mai mare numar ca de exemplu 4444.
Mie imi afisează 54 în loc de 4444, dacă în loc de 4444 modific...
Am schimbat `pret` varchar(20) DEFAULT NULL in `pret` int(11) NOT NULL ca la tine si merge.
Multumesc