[Zope] Advice needed: converting a PHP3 project to Zope.

Tony McDonald tony.mcdonald@ncl.ac.uk
Wed, 2 Feb 2000 16:23:53 +0000


Hi all,  (this is longish, so feel free to 'd')

I need the lists' wisdom here. I'm considering changing a PHP3 based 
multiple choice question (MCQ) engine to be zope based. At the 
moment, I have urls to the PHP server within my Zope system that load 
the MCQs into a separate frame for display, but would really like the 
MCQs to be 'inline' along with all my other Zopish content.

My MCQs are read from MySQL and displayed on the page, and this means 
that there may be more than one on a page. I also have up to five 
responses (stems) where the student can answer true/false/don't know. 
This means that there are fifteen radio buttons for each MCQ 
question. Currently, to identify each group of radio buttons uniquely 
I do this;
I name each radio button with a name of the form 'q_n_stem_m', where;
n = number of the MCQ on the page (starting from zero, so if there's 
10 questions on a page, the last variable will be q_9_stem_m).
m = the stem counter, again based from 0, so that if there are 5 
stems to a question, the counter goes from 0..4.

All the radio buttons for a group need to be named the same so that 
the browser can automatically turn them on and off.

eg...for one MCQ.

<INPUT TYPE=RADIO NAME=q_0_stem_0 VALUE="1"> == True selection
<INPUT TYPE=RADIO NAME=q_0_stem_0 VALUE="0"> == False selection
<INPUT TYPE=RADIO NAME=q_0_stem_0 VALUE="DK"> == Don't Know selection

<INPUT TYPE=RADIO NAME=q_0_stem_1 VALUE="1">
<INPUT TYPE=RADIO NAME=q_0_stem_1 VALUE="0">
<INPUT TYPE=RADIO NAME=q_0_stem_1 VALUE="DK">

<INPUT TYPE=RADIO NAME=q_0_stem_2 VALUE="1">
<INPUT TYPE=RADIO NAME=q_0_stem_2 VALUE="0">
<INPUT TYPE=RADIO NAME=q_0_stem_2 VALUE="DK">

(repeated for q_0_stem_3 and q_0_stem_4).

Essentially a radio button group has to be uniquely named on the 
page, and as we allow students to see the full 142 MCQs at once, that 
means 710 unique variable names... (ie q_0_stem_0 ... q_141_stem_4).

When it comes to marking the questions, I create a variable name in 
PHP through concatenation and use that as a lookup to get the value 
of the stem as entered by the student. It's then a relatively simple 
matter to check whether the student has a stem correct and then add 
the attempt to a database table.

So, having described the problem, what do people think? Is my method 
of naming stems too complex and unwieldy? Should I stick with PHP 
(for the time being...)

Storing the MCQs in the ZODB isn't really on, as the SQL method has 
proved very useful and is very heavily used.
I can see that I'm in for a forest of DTML here (I've already tried a 
demo, but doing the 'concatenated' lookup got too complex!), a Python 
External method looks best (a PythonMethod looks better but I'm not 
up to speed on that yet!)

Any thoughts would be appreciated.
Tone.
------
Dr Tony McDonald,  FMCC, Networked Learning Environments Project 
http://nle.ncl.ac.uk/
The Medical School, Newcastle University Tel: +44 191 222 5888
Fingerprint: 3450 876D FA41 B926 D3DD  F8C3 F2D0 C3B9 8B38 18A2