webForumDet fria alternativet

Dynamiska frågeformulär

2 svar · 550 visningar · startad av Peeer

PeeerMedlem sedan mars 20025 907 inlägg
#1

Hej!
Håller på att bygga upp ett dynamiskt frågeformulär. Beroende på vad användaren svarar på en fråga så ska hon komma till olika följdfrågor. Ex


Har du husdjur?
  * Ja - Gå till "har du katt"
  * nej - Gå till "är du gift"

Har du katt?
  * Ja - Gå till "Fäller den mycket hår"
  * Nej - Gå till "har du hund"

Fäller den mycket hår
  * Ja - Gå till "är du gift"
  * Nej - Gå till "är du gift"
 
Har du hund?
  * Ja - Gå till "har du barn"
  * Nej - Gå till "är du gift"

Är du gift?
  * Ja - Gå till "har du barn"
  * Nej - Gå till "har du barn"

Har du barn?
  * Ja
  * Nej

Lite otydligt, men ni förstår säkert hur jag menar. Frågan är hur man gör det här bäst/mest logiskt? För tillfället så skickar jag in följdfrågorna i varje fråga och när man svarar på en fråga så skickar den vidare användaren till nästa fråga.

Question haveChildren = new Question(null, null);
Question married = new Question(haveChildren, haveChildren);
Question haveDog = new Question(haveChildren, married);
Question dropsHairEverywhere = new Question(married, married);
Question haveCat = new Question(dropsHairEverywhere, haveDog);
Question havePet = new Question(haveCat, married);

havePet.ask();

Men det känns inte helt logiskt. Finns det något snyggare sätt att lösa det på?

Mvh Per

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Vilket språk/miljö? Jag skulle nog ha lagrat frågorna i en databas (eller liknande) och lagrat ett attribut som talar om vilken nästa fråga ska vara för varje svar. Typ:

[b]questions[/b]
questionId     (id)
questionString (Frågan)

[b]answers[/b]
answerId       (id)
questionId     (Vilken fråga svaret tillhör)
answerString   (Ett svar)
nextQuestionId (Nästa fråga)

Sedan gör du något i stil med:

SELECT q.questionString, a.* FROM questions q
JOIN answers a ON a.questionId = q.questionId

Sedan följer du nextQuestionId för varje svar.
(Sensmoralen är att skilja på kod och data)

PeeerMedlem sedan mars 20025 907 inlägg
#3

C# är det som används. Har dessvärre ingen möjlighet att lägga till tabeller i databasen, utan det får väl bli xml-filer. Tack för inputen!

/r Det blev faktiskt riktigt bra med xml-filer. :)

122 ms totalt · 3 externa anrop · v20260731065814-full.cf67ef55
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
119 ms — hämta tråd, inlägg och bilagor (db)