Forum
Tipps
News
Menu-Icon

Fragen per Zufall aus Datenbak auswählen

Hi,
ich bin gerade dabei meinen IQ-Test zu programmieren. Dafür habe ich viele Fragen in einer Datenbank gespeichert. Ich möchte nun immer einen Teil der Fragen per Zufall aus der Datenbank auswählen und in meinen Test integrieren. Die simpelste Möglichkeit wäre wohl es so zu machen:
 


SELECT Frage
FROM tabelle
ORDER BY RAND()
LIMIT 10;
Das Problem ist, dass ich dann zwar die Fragen habe, ich sie aber einzeln in meine HTML-Maske schreiben muss:
<tr><td>Frage1:</td></tr>
<tr><td>    Hier kommt die Frage hin.      </td>
<td> <input name="F1" type="text" size="4" ></td></tr>

 Frage8:   Hier kommt wieder eine Frage hin.     <br>

<input name="F8" type="radio" value="2" >        Und hier die Antworoptionen bei Multiple choice.         <br>
<input name="F8" type="radio" value="5" >   <br>
<input name="F8" type="radio" value="3" >   <br>
<input name="F8" type="radio" value="4" >   <br>
<input name="F8" type="radio" value="1" >   <br><br>

Ich habe in meiner Datenbank die Fragen mit nur einer Antwortoption logischerweise  in einer anderen Tabelle gespeichert als die mit Multiple Choice.
Problem Nummer1 ist, wie kriege ich jetzt die per Zufall ausgewählten Fragen samt Antwortoptionen in meine Maske?
Problem Nummer 2 ist wie erkenne ich bei der Auswertung der Antworten welche Frage eigentlich gestellt wurde und was somit die richtige Antwort ist?

Antworten zu Fragen per Zufall aus Datenbak auswählen:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Also zunächst einmal hätte ich eine Frage: Hast du deinen IQ-Fragen (und Antworten) jeweils eindeutige IDs zugeteilt? Das wäre nämlich elementar notwendig wenn du solche Auswertungen vornehmen wolltest.

Das wäre auchs chon ein großer Schritt in Richtung der Lösung deines Problems.

Dann würde deine Abfrage in etwa so lauten:

SELECT `ID`, `Frage`
FROM `tabelle`
ORDER BY RAND()
LIMIT 10;

Die ID schreibst du dann in ein Hidden-Input Feld

<input type="hidden" name="frage_id" value="ID">

Und das ganze schreibst du dann mit der richtig angekreuzten Frage in eine andere Tabelle und wertest das ganze dann am Ende aus.

Ich weiß jetzt nicht wie weit deine PHP- und SQL-Kenntnisse (ich nehme mal an, du willst PHP verwenden) reichen, aber ein wenig Erfahrung solltest du dabei mitbringen und dann stellt die Umsetzung der o.g. Ansätze auch kein Problem dar.

Aus der Fragestellung heraus würde ich jedoch annehmen dass deine Erfahrungen noch nicht so weitreichend sind?

Na ja, um ehrlich zu sein sind meine Kentnisse sehr beschränkt. Danke schon mal für deinen Vorschlag.
Meine Datenbank ist ja wie gesagt in zwei Tabellen unterteilt, nämlich die mit den fragen mit einer Antwort und denen, wo die Testperson mehrere Antworten zu Auswahl hat.Das mit den Fragen mit nur einer möglichen Anwort ist nicht wirklich schwer. Aber das andere schon. Da sieht meine Tabelle so aus. In jeder Reihe sind enthalten: ID, Frage, Antwort1, Antwort2,... .
Wie bekomme ich das jetzt hin das ich zu den ausgewählten Fragen immer die jeweils dazugehröigen Antwortoptionen in mein HTML-Skript kriege?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Wie wär's, wenn du dein Datenmodell über den Haufen wirfst und nochmal logisch rangehst?

Fragen alle in eine Tabelle und Antworten in eine andere. Diese per 1:n-Verknüpfung verbinden, damit bist du flexibel in Sachen Anzahl der Antworten.

Zur Ausgabe dann beispielsweise per SQL-Query alle Antworten holen, zugehörige Fragen per JOIN ranhängen und dann den HTML-Code erzeugen, indem du entspannt durch das Resultset iterierst. ;)

greez 8)
JoSsiF

Sorry, aber ich hab wie gesagt herzlich wenig ahnung vom Programmieren. Deshalb hab ich kaum was von dem verstanden was du geschrieben hast. Ich soll also 2 tabellen machen,eine mit fragen und eine mit Antworten. Der Index der Reihen mit Fragen hat immer den dazugehörigen index bei der Tabell mit Antworten. Mit Join verknüpfe ich die Tabellen dann quasi zu einer.
Ich hoffe ich habe wenigstens das richtig verstanden.
Aber wie mache ich das dann mit der zufälligen Auswahl der Fragen und wie kriege ich diese in mein Skript? 


« DB abgleichen od. aussortierenkomischer anhang »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Datenbank
Eine Datenbank (DBS), im englischen database, ist eine strukturierte Datensammlung und fungiert wie ein "digitales Archiv". Datenbanken dienen der effizienten Aufbewahrun...

Testimonial
Der Begriff Testimonial hat auf deutsch eine etwas andere Bedeutung als auf englisch: Im Englischen bezeichnet Testimonial eine "Empfehlung" oder "Referenz", meist bekann...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...