2010-11-22 2 views
1

Ich mache eine Umfrage/Multiple-Choice-Sache in PHP + MySQL. Ich habe bisher zwei Tabellen erstellt: Fragen und Auswahlmöglichkeiten. Jede Frage hat einen eindeutigen Primärschlüssel question_id, und jede Auswahl hat einen Fremdschlüssel question_id.Abfragen zum Drucken von Fragen und deren Auswahl

Ich möchte eine Liste aller Fragen mit ihren entsprechenden Auswahlmöglichkeiten drucken. Mein PHP ist ein wenig eingerostet, daher kann ich mich nicht an den richtigen Weg erinnern. Führe ich einfach eine Abfrage aus, um alle Fragen auszuwählen, und führe eine Abfrage aus, um die Auswahlmöglichkeiten für jede Frage auszuwählen, wenn sie ausgewählt ist? Oder kann es mit einer Abfrage gemacht werden?

Antwort

2

Sie müssen eine JOIN durchführen.

Einige psuedo SQL:

select * from 
(Select question_id, question_text from table_questions) questions 
join 
(Select parent_question_id, choice_text from table_choices) choices 
on 
questions.question_id=choices.parent_question_id 

Sie die oben je nach Setup- zu ändern haben, können Sie benötigen auch eine andere JOIN type

Einmal in PHP zu Ihrer Datenbank verbunden sind, können Sie durchlaufen die Ergebnisse als so:

$sql="select * from 
(Select question_id, question_text from table_questions) questions 
join 
(Select parent_question_id, choice_text from table_choices) choices 
on 
questions.question_id=choices.parent_question_id"; 

$result=mysql_query($sql); 

while ($db_field = mysql_fetch_assoc($result)) { 
    $question_and_answers[$db_field['question_text']][]=$db_field['choice_text']; 
} 

print_r($question_and_answers); 

Dies wird Ausgabe/erstellen ein Array von Fragen, mit Sub-Array-Auswahlmöglichkeiten.

+0

Was ist los mit Antworten? Ich möchte nur, dass es die möglichen Fragen der Fragen ausdruckt, da es sich um eine Multiple-Choice-Sache handelt. – Matt

+0

Antworten = Entscheidungen, ich werde ein komplexeres Beispiel hinzufügen ... – SW4

+0

@Matt, siehe die Revision – SW4

0

Die folgende Abfrage sollte alle Fragen zurück:

SELECT Fragen * Auswahl * von Fragen kommen Auswahl mit (question_id);..

Dann iteriere durch die Ergebnisse, z. Kopieren aller notwendigen Daten über die Auswahlmöglichkeiten in ein Array, das durch die Frage-ID eingegeben wird; Verwenden Sie dann diese Datenstruktur, um die Formular-Widgets usw. zu erstellen.

Nicht sicher, ob das das ist, was Sie suchen - schwer, eine hilfreichere Antwort zu bieten, ohne zu wissen, wo Sie stecken bleiben.