Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQLite][PHP]problem z sondą
Forum PHP.pl > Forum > Przedszkole
shreker
mam problem ze zliczaniem poprawnych odpowiedzi w poniższym skrypcie (przerobiłem z wersji mysql).
w przypadku zapytania z limitem działa bez problemu:
  1. $display = sqlite_query($db, "SELECT * FROM tabela ORDER BY id LIMIT 4");

ale przy losowych pytaniach nie liczy poprawnie:
  1. $display = sqlite_query($db, "SELECT * FROM tabela ORDER BY RANDOM() LIMIT 4");


  1. $db = sqlite_open('quiz.db');
  2. //$display = sqlite_query($db, "SELECT * FROM tabela ORDER BY id LIMIT 4"); // okreslone rekordy z limitem
  3. $display = sqlite_query($db, "SELECT * FROM tabela ORDER BY RANDOM() LIMIT 4"); // losowe rekordy
  4. if (!@$_POST['submit'])
  5. {
  6. echo "<form method=post action=''>";
  7. echo "<table border=0>";
  8. while ($row = sqlite_fetch_array($display))
  9. {
  10. $id = $row["id"];
  11. $question = $row["question"];
  12. $opt1 = $row["opt1"];
  13. $opt2 = $row["opt2"];
  14. $opt3 = $row["opt3"];
  15. $answer = $row["answer"];
  16. echo "<tr><td colspan=3><br><b>$question</b></td></tr>";
  17. echo "<tr><td><input type=radio name='q$id' value=\"$opt1\"> $opt1</td></tr><tr><td><input type=radio name='q$id' value=\"$opt2\"> $opt2</td></tr><tr><td><input type=radio name='q$id' value=\"$opt3\"> $opt3</td></tr>";
  18. }
  19. echo "</table>";
  20. echo "<input type='submit' value='See how you did' name='submit'>";
  21. echo "</form>";
  22. }
  23. elseif ($_POST['submit'])
  24. {
  25. $score = 0;
  26. $total = sqlite_num_rows($display);
  27. while ($result = sqlite_fetch_array($display))
  28. {
  29. $answer = $result['answer'];
  30. $q = "q$result[id]";
  31. $q = trim($q);
  32. if (@$_POST[$q] == $answer)
  33. {
  34. $score++;
  35. }
  36. }
  37. echo "<p align=center><b>You scored $score out of $total</b></p>";
  38. echo "<p>";
  39. }


w czym tkwi problem, nie mam już pomysłu, help exclamation.gif!
ciekawskiii
Nie znam sie na sqlite ale czy nie powinno byc RAND() zamiast RANDOM() ?
shreker
Cytat(ciekawskiii @ 8.03.2011, 07:32:39 ) *
Nie znam sie na sqlite ale czy nie powinno byc RAND() zamiast RANDOM() ?


RAND() - w przypadku mysql
RANDOM() - jest to odpowiednik dla sqlite

Ale tak jak napisałem nie chodzi o losowanie - bo to działa, źle natomiast działa zliczanie odpowiedzi w przypadku pytań losowanych.
nospor
Przecież generując formularz losujesz. Po wysłaniu formularza znowu losujesz. Nic wiec dziwnego ze w wyniku dwóch losowan masz rożne wyniki smile.gif
shreker
rzeczywiście nospor masz rację. tylko nie znam się na tyle na php żeby to samemu zmienić, więc wszystkim będę wdzięczny za pomoc i stawiam dobrego browara za poprawnie działający kod :-)

nieaktualne, problem rozwiązany
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.