I'm evaluating options for building a complex employee skills survey. The survey has several (~50) questions with three options per question (total of ~150 data elements). Everyone needs to complete the survey. Some people need to see reports of the survey results in a variety of formats.

I'm looking at (a) using Webform to collect the information and then building a custom module to create the reports (since Views doesn't play nicely with Webform data elements if I recall correctly); (b) using a custom CCK-built content type to build the survey form and then using mostly Views to build the reports; (c) using a custom module to build the survey form and using mostly Views to build the reports.

My uncertainly is over which way is "best". I'm defining best as the most efficient in terms of building and maintaining. I'd particularly like to enable dynamic building of the survey form from either a database or csv file. In other words, I would like to easily be able to modify the survey form to include more questions, modify existing questions, or delete questions.

Any thoughts from the community on the approaches I might take, including other options I'm not considering, are appreciated.

Here's an example of a question and the associated options:
Are you a Java programmer?
- Yes/No
- Experience level (Novice, Proficient, Expert)
- Training type (None, Informal, Formal)

FYI: the existing site form is written in HTML/PHP linking to a backend db.


WorldFallz’s picture

Have you considered the http://drupal.org/project/quiz module?

marcvangend’s picture

To be honest: why do you want to use Drupal? IMHO, Drupal is great for a lot of things, but not for serious,large surveys. Both cck and webform lack some features that you will find in dedicated survey packages (like limesurvey) or online services. That said, those non-drupal options also have their weaknesses, but I would definitely consider it.

marcvangend’s picture

thedut’s picture

Your best choice should be a new drupal module integrating the LimeSurvey software :