Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt quizu
Forum PHP.pl > Forum > Gotowe rozwiązania
Ivellios
Przetestowałem już wiele skryptów typu quiz, większość jednak albo była przestarzała i nie działała albo była zintegrowana z CMS'ami.

Czy istnieje jakiś w miarę dobry skrypt do prowadzenia quizów?

Dobrze byłoby, gdyby dało się go zintegrować z phpBB winksmiley.jpg

A może raczej powinienem stworzyć coś swojego?

Co prawda już cośtam zacząłem działać, mam jednak obawy, czy mój skrypt nie zajedzie serwera...
Armstrong
Nie spotkałem się z "dobrym" Quizem
BTW : Skoro stworzyłeś to pokaż, pomożemy w optymalizacji tongue.gif
Ivellios
Ok, być może z takim kodem wstyd się pokazywać, ale dobra, zapodaję biggrin.gif
Uprzedzam, że w kwestii php wciąż jestem "przedszkolakiem" i przeglądanie moich "skryptów" może przyprawić o ciężkie palpitacje serca. winksmiley.jpg

Kod
case 'quizy':
echo '<div class="r1n" align="center"><font class="b-t"><b><a href="index.php?akcja=quizy">QUIZY W PARANORMALIUM</a></b></font></div>
<div class="r1n" align="justify"><font class="c1">A więc powiadasz, że jeste¶ po lekturze setek artykułów na Paranormalium i chcesz sprawdzić swoj± wiedzę z zakresu zjawisk paranormalnych... dobrze! Wybierz kategorię, następnie wybierz quiz i odpowiedz na pytania.</font></div>';

$qa = (isset($_GET['qa'])) ? $_GET['qa'] : '';
switch ($qa)
{
// Pojedyncza kategoria quizów
case 'kat':
$kat = (isset($_GET['kat'])) ? $_GET['kat'] : '';
$sql_query = "SELECT kid, tytul, opis FROM nuke_quizy_kategorie WHERE kid = '$kat'" or die ("Nie można wykonać zapytania");
$result = mysql_query($sql_query) or die ("Nie można wykonać wyniku");
while($rowx = mysql_fetch_array($result))
{
?><div class="r1n" align="center"><font class="b-t"><b><?php echo $rowx['tytul']; ?></b><br><?php echo $rowx['opis']; ?></font></div><?php
}
$sql_query = "SELECT qid, nazwa_quizu, kategoria FROM nuke_quizy_quizy WHERE kategoria = '$kat' ORDER BY qid DESC" or die ("Nie można wykonać zapytania");
$result = mysql_query($sql_query) or die ("Nie można wykonać wyniku");
while($row = mysql_fetch_array($result))
{
$quizid = $row['qid'];
?><div class="r1n"><font class="c1"><a href="index.php?akcja=quizy&qa=quiz&quiz=<?php echo $row['qid']; ?>" title="quiz"><b><?php echo $row['nazwa_quizu']; ?></b></a><br>
Pytań w quizie: <?php $sql_query = "SELECT COUNT(*) as liczba FROM nuke_quizy_pytania WHERE quiz_id = '$quizid'" or die ("Nie można wykonać zapytania");
$result = mysql_query($sql_query) or die ("Nie można wykonać wyniku");
while($row2 = mysql_fetch_array($result))
{
?><?php echo $row2['liczba']; ?><?php
} ?></font></div><?php
}
break;


// QUIZ
case 'quiz':
$quiz = (isset($_GET['quiz'])) ? $_GET['quiz'] : '';
$sprawdz = (isset($_GET['sprawdz'])) ? $_GET['sprawdz'] : '';
$punkty = 0;
$pkt2 = 0;
switch($sprawdz)
{ case 'tak':
break;

default:
echo '<form method="post" action="index.php?akcja=quizy&qa=quiz&quiz='.$quiz.'&sprawdz=tak">';
break; }


$sql_query = "SELECT quiz_id, pid, pytanie FROM nuke_quizy_pytania WHERE quiz_id = '$quiz'" or die ("Nie można wykonać zapytania");
$result = mysql_query($sql_query) or die ("Nie można wykonać wyniku");
while($row2 = mysql_fetch_array($result))
{
$pytanieid = $row2['pid'];
?><div class="r1n"><font class="c1"><b><?php echo $row2['pytanie']; ++$pkt2; ?></b><br>

<?php $sql_query2 = "SELECT * FROM nuke_quizy_odpowiedzi WHERE pid = '$pytanieid'" or die ("Nie można wykonać zapytania");
$result2 = mysql_query($sql_query2) or die ("Nie można wykonać wyniku");
while($rowodp = mysql_fetch_array($result2))
{
$rpid = $rowodp['pid'];
$oid = $rowodp['oid'];
?><input type="radio" name="<?php echo $rpid; ?>" value="<?php echo $oid; ?>"> <?php echo $rowodp['odp']; ?><br>
<?php } ?>

<?php
switch($sprawdz)
{ case 'tak':
$czydobrze = (isset($_POST[$rpid])) ? $_POST[$rpid] : '';
// echo $czydobrze;

$sql_query22 = "SELECT * FROM nuke_quizy_odpowiedzi WHERE oid = '$czydobrze'" or die ("Nie można wykonać zapytania");
$result22 = mysql_query($sql_query22) or die ("Nie można wykonać wyniku");
while($rowodp2 = mysql_fetch_array($result22))
{
$rpid = $rowodp2['pid'];
$oid = $rowodp2['oid'];
$czyd = $rowodp2['czydobra'];
?><?php if($czyd == '1') { echo '<b>BRAWO!!! :D</b>'; ++$punkty; } else { echo '<b>¬LE! :-(</b>'; } ?><br>
<?php }
break; }
?>
</font></div><?php
}

switch($sprawdz)
{ case 'tak':
echo '<div class="r1n" align="center"><font class="c1">Otrzymałe¶ <b>'.$punkty.'</b> punktów na <b>'.$pkt2.'</b> możliwych</font></div>';
break;

default:
echo '<br><div class="r1n" align="center"><input type="submit" name="ok" value="SPRAWD¬ WYNIK"><input type="hidden" name="cmd" value="update"></div></form>';
break; }

break;

// Strona główna quizowni i spis kategorii
default:
$sql_query = "SELECT kid, tytul, opis FROM nuke_quizy_kategorie ORDER BY tytul DESC" or die ("Nie można wykonać zapytania");
$result = mysql_query($sql_query) or die ("Nie można wykonać wyniku");
// kolorujemy tabelki;-)
while($row = mysql_fetch_array($result))
{
?><div class="r1n"><font class="c1"><a href="index.php?akcja=quizy&qa=kat&kat=<?php echo $row['kid']; ?>" title="quiz"><?php echo $row['tytul']; ?></a></font><br><font class="content2"><?php echo $row['opis']; ?></font></div><?php
}
break;
}

break;
Pawel_W
przepraszam, że kopiuję, ale wg mnie w bbcode przeznaczonym dla php będzie to lepiej wyglądało winksmiley.jpg

  1. case 'quizy':
  2. echo '<div class="r1n" align="center"><font class="b-t"><b><a href="index.php?akcja=quizy">QUIZY W PARANORMALIUM</a></b></font></div>
  3. <div class="r1n" align="justify"><font class="c1">A więc powiadasz, że jeste po lekturze setek artykułów na Paranormalium i chcesz sprawdzić swoją wiedzę z zakresu zjawisk paranormalnych... dobrze! Wybierz kategorię, następnie wybierz quiz i odpowiedz na pytania.</font></div>';
  4.  
  5. $qa = (isset($_GET['qa'])) ? $_GET['qa'] : '';
  6. switch ($qa)
  7. {
  8. // Pojedyncza kategoria quizów
  9. case 'kat':
  10. $kat = (isset($_GET['kat'])) ? $_GET['kat'] : '';
  11. $sql_query = "SELECT kid, tytul, opis FROM nuke_quizy_kategorie WHERE kid = '$kat'" or die ("Nie można wykonać zapytania");
  12. $result = mysql_query($sql_query) or die ("Nie można wykonać wyniku");
  13. while($rowx = mysql_fetch_array($result))
  14. {
  15. ?><div class="r1n" align="center"><font class="b-t"><b><?php echo $rowx['tytul']; ?></b><br><?php echo $rowx['opis']; ?></font></div><?php
  16. }
  17. $sql_query = "SELECT qid, nazwa_quizu, kategoria FROM nuke_quizy_quizy WHERE kategoria = '$kat' ORDER BY qid DESC" or die ("Nie można wykonać zapytania");
  18. $result = mysql_query($sql_query) or die ("Nie można wykonać wyniku");
  19. while($row = mysql_fetch_array($result))
  20. {
  21. $quizid = $row['qid'];
  22. ?><div class="r1n"><font class="c1"><a href="index.php?akcja=quizy&qa=quiz&quiz=<?php echo $row['qid']; ?>" title="quiz"><b><?php echo $row['nazwa_quizu']; ?></b></a><br>
  23. Pytań w quizie: <?php $sql_query = "SELECT COUNT(*) as liczba FROM nuke_quizy_pytania WHERE quiz_id = '$quizid'" or die ("Nie można wykonać zapytania");
  24. $result = mysql_query($sql_query) or die ("Nie można wykonać wyniku");
  25. while($row2 = mysql_fetch_array($result))
  26. {
  27. ?><?php echo $row2['liczba']; ?><?php
  28. } ?></font></div><?php
  29. }
  30. break;
  31.  
  32.  
  33. // QUIZ
  34. case 'quiz':
  35. $quiz = (isset($_GET['quiz'])) ? $_GET['quiz'] : '';
  36. $sprawdz = (isset($_GET['sprawdz'])) ? $_GET['sprawdz'] : '';
  37. $punkty = 0;
  38. $pkt2 = 0;
  39. switch($sprawdz)
  40. { case 'tak':
  41. break;
  42.  
  43. default:
  44. echo '<form method="post" action="index.php?akcja=quizy&qa=quiz&quiz='.$quiz.'&sprawdz=tak">';
  45. break; }
  46.  
  47.  
  48. $sql_query = "SELECT quiz_id, pid, pytanie FROM nuke_quizy_pytania WHERE quiz_id = '$quiz'" or die ("Nie można wykonać zapytania");
  49. $result = mysql_query($sql_query) or die ("Nie można wykonać wyniku");
  50. while($row2 = mysql_fetch_array($result))
  51. {
  52. $pytanieid = $row2['pid'];
  53. ?><div class="r1n"><font class="c1"><b><?php echo $row2['pytanie']; ++$pkt2; ?></b><br>
  54.  
  55. <?php $sql_query2 = "SELECT * FROM nuke_quizy_odpowiedzi WHERE pid = '$pytanieid'" or die ("Nie można wykonać zapytania");
  56. $result2 = mysql_query($sql_query2) or die ("Nie można wykonać wyniku");
  57. while($rowodp = mysql_fetch_array($result2))
  58. {
  59. $rpid = $rowodp['pid'];
  60. $oid = $rowodp['oid'];
  61. ?><input type="radio" name="<?php echo $rpid; ?>" value="<?php echo $oid; ?>"> <?php echo $rowodp['odp']; ?><br>
  62. <?php } ?>
  63.  
  64. <?php
  65. switch($sprawdz)
  66. { case 'tak':
  67. $czydobrze = (isset($_POST[$rpid])) ? $_POST[$rpid] : '';
  68. // echo $czydobrze;
  69.  
  70. $sql_query22 = "SELECT * FROM nuke_quizy_odpowiedzi WHERE oid = '$czydobrze'" or die ("Nie można wykonać zapytania");
  71. $result22 = mysql_query($sql_query22) or die ("Nie można wykonać wyniku");
  72. while($rowodp2 = mysql_fetch_array($result22))
  73. {
  74. $rpid = $rowodp2['pid'];
  75. $oid = $rowodp2['oid'];
  76. $czyd = $rowodp2['czydobra'];
  77. ?><?php if($czyd == '1') { echo '<b>BRAWO!!! biggrin.gif</b>'; ++$punkty; } else { echo '<b>ŹLE! :-(</b>'; } ?><br>
  78. <?php }
  79. break; }
  80. ?>
  81. </font></div><?php
  82. }
  83.  
  84. switch($sprawdz)
  85. { case 'tak':
  86. echo '<div class="r1n" align="center"><font class="c1">Otrzymałe <b>'.$punkty.'</b> punktów na <b>'.$pkt2.'</b> możliwych</font></div>';
  87. break;
  88.  
  89. default:
  90. echo '<br><div class="r1n" align="center"><input type="submit" name="ok" value="SPRAWDŹ WYNIK"><input type="hidden" name="cmd" value="update"></div></form>';
  91. break; }
  92.  
  93. break;
  94.  
  95. // Strona główna quizowni i spis kategorii
  96. default:
  97. $sql_query = "SELECT kid, tytul, opis FROM nuke_quizy_kategorie ORDER BY tytul DESC" or die ("Nie można wykonać zapytania");
  98. $result = mysql_query($sql_query) or die ("Nie można wykonać wyniku");
  99. // kolorujemy tabelki;-)
  100. while($row = mysql_fetch_array($result))
  101. {
  102. ?><div class="r1n"><font class="c1"><a href="index.php?akcja=quizy&qa=kat&kat=<?php echo $row['kid']; ?>" title="quiz"><?php echo $row['tytul']; ?></a></font><br><font class="content2"><?php echo $row['opis']; ?></font></div><?php
  103. }
  104. break;
  105. }
  106.  
  107. break;


EDIT:
no to teraz moje uwagi winksmiley.jpg
1.
  1. $sql_query = "SELECT kid, tytul, opis FROM nuke_quizy_kategorie WHERE kid = '$kat'" or die ("Nie można wykonać zapytania");

trochę to dziwnie wygląda, nie spotkałem się jeszcze z funkcją die() przy przypisywaniu smile.gif - po co Ci ona? Wystarczy że ją postawisz przy samym mysql_query()
2. Z tego co widzę to te wszystkie kategorie itp. to liczby, dlatego przydałoby się jakieś filtrowanie, np. przez intval, bo inaczej skrypt podatny na SQL injection.

Pozdrawiam, Pawel_W
Ivellios
Ostatecznie die() całkowicie usunąłem - zupełnie zbędna. winksmiley.jpg
darko
- chaos i spagetti
- brak oop
- z góry narzucone klasy css
- z góry narzucona struktura tabeli w bazie

+ próba napisania czegoś własnego
qwerty1440
Cytat(darko @ 2.01.2010, 03:48:39 ) *
- chaos i spagetti
- brak oop
- z góry narzucone klasy css
- z góry narzucona struktura tabeli w bazie

+ próba napisania czegoś własnego


Ja bym mu tego plusa nie dal. Znajdzie sie taki jeden z drugim, co mysla ze umie programowac, pisza kod, ktory nie jest zgodny z zadnym standardem, w ktorym ciezko sie polapac i ktory nawet nie chce dzialac i uwazaja sie za programistow. A pozniej ja musze sie wstydzic swojego zawodu. A WY NA TO WSZYSTKO PRZYZWALACIE!!! Bo jak ktos nie umie programowac, to nie powinien sie w ogole brac za PHP! To chyba najgorszy z mozliwych jezyk dla poczatkujacego. Uczy zlych nawykow i nie rozwija. Co z tego ze jest banalnie prosty? Skoro i tak 99% uzytkownikow nie jest w stanie sobie z nim poradzic? Jak ktos chce nauczyc sie programowac, nie wazne czystrony internetowe, czy ogolnie, to niech sie nauczy najpierw C, pozniej C++ i dopiero wtedy bierze sie za PHP. W przeciwnym wypadku nie ma to sensu. Ze nie wspomne o tym ze 90% uzytkownikow tego forum to dzieci, osoby ktore nie ukonczyly 18 roku zycia i o programowaniu wiedza tyle, co nic. Nawet jesli ktos przyswoi PHP i bedzie pisal w miare "poprawny" i/lub optymalny kod, to i tak bedzie on w wiekszosci przypadko z niczym nie zgodny. Niestety autorom PHP widocznie podoba sie to, ze jezyk znalazl sobie tyle zwolennikow, a to ze sam jezyk, jak i osoby z niego korzystajacy uwlaczaja godnosci programisty, to juz inna bajka...

PANOWIE - ŻAL!!! POWINNIŚCIE SIĘ WSTYDZIĆexclamation.gif!
celbarowicz
Uczono na studiach w latach 70 siątych fortranu, póniej pascala , modny był przez pewien czas delfi,są różne odmiany javy np j2ee jest też chyba kilka odmien C,c..,c.. wszyscy dążą do doskonałości, jak ktoś naprawdę jest dobry w swojej dziedzinie to znajdzie pracę i utrzyma się z niej.
Ktoś kiedyś powiedział 'jak nie masz nic ciekawego do powiedzenia we własnym języku to nie ucz się języków obcych'. Myślę,że ten ktoś nie miał racji i nazywam takie postępowanie zwykłym zamykaniem GĘBY innym ludziom. Wiem,że forum nie jest do wymiany opinii i poglądów ale...
pozdrawiam sympatyków PHP.
qwerty1440
Teraz na studiach takze ucza pascala. Zaden z wymionionych przez nas jezykow nie wybacza takich bledow jak PHP. Aby programowac w PHP trzeba miec o tym jakies pojecie. Gdy czytam posty na tym forum, odnosze wrazenie ze 99% nie wie wogole co to znaczy programowac, a ich tworow ciezko nazwa kodem zrodlowym. Oczywiscie kilka osob zacznie od PHP i odniesie sukces, ale 99% z tych osob polegnie na starcie. Co gorsza takie osoby uwazaja sie za programistow i to takich, ktorzy uwazaja ze skoro radza sobie z PHP, to poradziliby sobie takze z innymi jezykami... I tacy rozwijaja sie miedzy innymi na takich forach jak to. Nie przez to jakie jest PHP, tylko przez innych uzytkowniow forum, ktorzy w ogole na to nie reaguja!
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.