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.
$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");
echo '<form action="index.php?id=7" method="POST" id="form" onSubmit="zap_czas(c)">'; echo '<table border="0">'; for ($i=1;$i<=$result->num_rows;$i++)
{
$rek_pyt = $result->fetch_assoc();
$_SESSION['tablica'][]=$rek_pyt['id_pytania'];
for ($t=0;$t<=count($_SESSION['tablica']);$t++) {
if ($t == 0) {$_SESSION['oo'] = $_SESSION['tablica'][$t];}
if (($t > 0
) && ($t < count($_SESSION['tablica']))){$_SESSION['oo'] = $_SESSION['oo'].','.$_SESSION['tablica'][$t];} }