Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Losowe wyświetlanie pytań.
blade-mrn
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

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


Witam,
Mam w bazie danych w jednej tabeli zapisane pytania i w drugiej przypisane im odpowiedzi. Pytania są wyświetlane na stronie pojedynczo za pomocą stronicowania.
Chciałbym aby te pytania za każdym razem wyświetlane były w innej kolejności (bez powtórzeń) tyle że nie wiem jak można taki efekt uzyskać. Ma ktoś jakąś radę??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
blade-mrn
post
Post #2





Grupa: Zarejestrowani
Postów: 113
Pomógł: 11
Dołączył: 20.10.2009

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


Przede wszystkim dzięki za pomoc.
Nie jako odpowiadając na pytania.
Teoretycznie ilość pytań można sprawdzić bo są one zapisane w bazie i podczas przeprowadzania testu ich ilość się nie zmienia.
Udzielone odpowiedzi są zapisywane w bazie ale pomysł ze wykorzystaniem tego do wyłączenia wyświetlonych już pytań z zapytania jest nie bardzo, bo co w tedy gdy użytkownik nie udzieli odpowiedzi na jakieś pytanie (taka możliwość istnieje)- to pytanie będzie się mu wyświetlać do puki na nie nie odpowie.
Select distinct() też raczej się tu nie sprawdzi bo pytania odczytywane są pojedynczo za pomocą LIMIT.

Ja za Waszą radą kombinowałem tak... Po wyświetleniu pytania zapisuje jego Id do tablicy zapisanej w sesji w celu późniejszego stworzenia ciągu liczb i przecinków np. 42,43,54. Ciąg ten następnie wstawiam do zapytania, na początku to działa bo wyświetla losowo pytania tyle że test ma 5 pytań a wyświetlają się tylko 3, na pozostałych dwóch stronach pytania się nie wyświetlają.
Tak wygląda fragment kodu o którym pisałem.
  1. $result = $db->query("SELECT * FROM pytania WHERE id_test = ".$rek_test['id_test']." AND id_pytania NOT IN (".$_SESSION['oo'].") ORDER BY RAND() LIMIT $start, 1");
  2. echo '<form action="index.php?id=7" method="POST" id="form" onSubmit="zap_czas(c)">';
  3. echo '<table border="0">';
  4. for ($i=1;$i<=$result->num_rows;$i++)
  5. {
  6. $rek_pyt = $result->fetch_assoc();
  7. $_SESSION['tablica'][]=$rek_pyt['id_pytania'];
  8. for ($t=0;$t<=count($_SESSION['tablica']);$t++)
  9. {
  10. if ($t == 0) {$_SESSION['oo'] = $_SESSION['tablica'][$t];}
  11. if (($t > 0) && ($t < count($_SESSION['tablica']))){$_SESSION['oo'] = $_SESSION['oo'].','.$_SESSION['tablica'][$t];}
  12. }
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 21.12.2025 - 22:17