Where's the logic for processing the form? Note, if you've got multiple
forms on the same page, they each need a unique name -- see
http://web2py.com/books/default/chapter/29/7#Multiple-forms-per-page.
Anthony
On Monday, May 14, 2012 10:12:30 AM UTC-4, lucas wrote:
>
> hello one and all,
>
> i am trying to create a form to takes people's opinion within each section
> contained by a DIV. so my html page might have one or ten sections, each
> one containing a loop created form. so here is some pseudo code:
>
> first the table structure:
> db.define_table('lecture_item_opinions',
> Field('lecture_id', db.lectures, requires=IS_IN_DB(db, db.lectures.id,
> '%(title)s (%(id)s)'), writable=False, readable=False),
> Field('lecture_item_id', db.lecture_items, requires=IS_IN_DB(db,
> db.lecture_items.id, '%(title)s (%(id)s)'), writable=False,
> readable=False),
> Field('survey_datetime', 'datetime', comment="format YYYY-MM-DD
> HH:MM:SS.milliseconds", requires=IS_NOT_EMPTY(),
> default=datetime.datetime.today(), writable=False, readable=False),
> Field('user_id', db.auth_user, requires=IS_IN_DB(db, '%s.id' %
> db.auth_user, '%(last_name)s, %(first_name)s (%(id)s)'), writable=False,
> readable=False),
> Field('opinion', 'text', requires=IS_NOT_EMPTY(), comment='Please give
> your honest opinion and constructive criticism of this segment. This will
> help the instructor improve the content and presentation of his/her
> lectures and it is readable and private to the instructor\'s eyes only.'),
> format = '%(id)s')
>
> and here is the pseudo code:
>
> qry = (t.lecture_id==lecture.id)
> items = db(qry).select(orderby=t.order_by | t.title)
> for i in items:
> d = DIV()
> d.append(H3(i.title))
> d.append(P(XML(i.text_before)))
> if auth.is_logged_in():
> x = DIV(_class="body_news")
> o = db.lecture_item_opinions
> if (i.user_id==auth.user_id):
> opinions = db(o.lecture_item_id==i.id
> ).select(orderby=o.survey_datetime)
> for o in opinions:
> x.append(P(o.opinion))
> d.append(x)
> elif (len(usr.create_lecture_foldername)==0):
> f = SQLFORM(o, formstyle='table2cols')
> f.vars.lecture_id=lecture.id
> f.vars.lecture_item_id=i.id
> f.vars.user_id=auth.user_id
> x.append(CAT(H4('Please give your Opinion of this
> Section'), f))
> d.append(x)
> body.append(d)
>
> and i have noticed with say two DIV opinion forms that web2py is giving
> different values for the _formkey. good. so why is it when a user enters
> in their opinion and pushes submit, it does not enter the opinion in the
> database? is there a better way to structure this so that the function
> accepts the processed form? what is the best method of creating forms via
> a loop or on the fly based on database records?
>
> thanx in advance, lucas
>