@Jan: je hebt deels gelijk ware het niet dat het meerkeuzevragen zijn en er verschillende aantallen antwoorden per vraag kunnen voorkomen, daarom heb ik ervoor gekozen om de antwoorden in een aparte tabel samen met het id van de vraag op te slaan.
@Jan, dat is nu net het probleem, elke vraag die beantwoord wordt, wordt in de tabel quiz_gegevenantwoorden gezet, of het antwoord nu goed of fout is.
het gaat niet over het aantal goede/foute antwoorden dat een vraag kan hebben.
Het gaat mij erom dat er iedere keer random een vraag geselecteerd wordt uit de tabel quizvragen, alleen ik wil dat er aan de hand van de tabel quiz_gegevenantwoorden gezorgd wordt dat een user niet twee keer dezelfde vraag te zien krijgt.
Je zorgt er dus voor dat de vragen die de user al beantwoord heeft niet meer geselecteerd kunnen worden. Dat bedoel je toch eh ?
Het eerste deel selecteert alle vragen die je wil. De tweede select gaat alle ID's zoeken van username stefan. Deze worden niet meer in de selectie opgenomen. Er wordt dan random 1 uitgekozen uit de selectie zonder de ingevulde vragen.
SELECT * from quizvragen
WHERE id NOT IN (
SELECT vraagID FROM quiz_gegevenantwoorden
WHERE username <> 'Stefan'
)
ORDER BY RAND() LIMIT 1";
@Bjorn: een subquery, dat kan natuurlijk ook inderdaad, misschien werkt het wel, maar als ik het probeer krijgt ik de foutmelding:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY RAND()' at line 1
Alleen van regel 24 kan die fout vandaan komen omdat dat de enige query is met rand() die op 1 regel staat.
Ik weet alleen niet waarom hij die fout geeft.
Waarschijnlijk komt het omdat de variabele $row['id'] geen waarde bevat, dat heb ik ook zojuist even getest, en dat blijkt het geval, alleen waarom? Eerst was dit namelijk niet het geval.
@PhpErik: sorry, ik weet het wel hoor, maar ik heb eigenlijk vanavond nodig, als het echt moet gooi ik hem voorlopig zonder die controle online, maar met is natuurlijk wel beter.