Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQLite][PHP]problem z sondą
shreker
post 8.03.2011, 01:20:34
Post #1





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


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!

Ten post edytował shreker 8.03.2011, 01:25:44
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
ciekawskiii
post 8.03.2011, 07:32:39
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


Nie znam sie na sqlite ale czy nie powinno byc RAND() zamiast RANDOM() ?


--------------------
Go to the top of the page
+Quote Post
shreker
post 8.03.2011, 09:32:26
Post #3





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post 8.03.2011, 09:36:04
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
shreker
post 9.03.2011, 12:32:20
Post #5





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 21.05.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 20:02