I have this function that displays several fields from two databases.
but I couldn't get it to do the following:

1) the "previous question" button actually causes an error. how come
my session.item_id is always zero when I thought I was passing an
incrementing value session.item_id+1 .

2) when i select a value from the dropdown list get an error saying
that I chose the wrong value

3) i am thinking of collecting the answers in an array so i can check
the answers before storing them as a records in a database. how do i
do that?

i look forward to your suggestions to make this move forward.


def quiz():
        item_id =int(request.args(0) or 0)

        if item_id == 0:
False).select(orderby='<random>')
                # Females = db(db.questionnaire.id>0 
).select(orderby='<random>')
                print request.args(0), item_id, 'retrieving'
                query = db(db.questionnaire.id>0).select(orderby='<random>')
                query_t = db(db.questionnaire_fil.id>0).select()

        form = SQLFORM.factory(
                Field('default', 'text', writable=False, default=query[item_id]
['dialog']),
                Field('locale', 'text', writable=False,
default=query_t[int(query[item_id]['dialog_id']-1)]['dialog']),
                Field('answer', 'list:string',
                        
requires=IS_IN_SET(query_t[int(query[item_id]['dialog_id'])-1]
['choices'], zero=None, multiple=True)),
                _style='width:400px'
                )

        form[0][-1][1].append(XML('&nbsp;&nbsp;'))
        form[0][-1][1].append(INPUT (_type='button',_value=T('Previous
question'),
                        
_onclick="window.location='%s';"%URL(r=request,args=(item_id-1) or
0)))

        if form.accepts(request.vars,session):
                if item_id<=len(query):
                        response.flash= request.vars, item_id, request.args(0)
                        URL(r=request,args=(item_id+1))
                else: URL(r=request, f='quiz_check')

        return dict(form=form, item_id=item_id)

Reply via email to