I need a PHP/MySQL front-end and back-end. The front-end will be a single entry where a person can enter a unique key (like X2M6DHAY) to gain access ONCE to a survey before the survey's expiration date. This key should be linked to only one survey and should not work once the survey has expired and not be associated with future surveys. The keys should not be easily guessable, nor be sequential for a particular survey. The back-end is a way to add/edit clients and their sub-groups, add/edit pool of questions, create new surveys for a specific client with a selection of questions from the pool, print all keys for a specific survey (one per person in each group within a client) and create reports on the answers (all answers are ratings 1-10).
This system should create professional online surveys. The front-end should be accessible on our Apache server with no more than a "Enter you key: " form. Once the key is entered, it should display the survey it is linked to, one question at a time with the options "Completely disagree" on the left and "Completely agree" on the right. The person should have 10 options (non-numbered) between them, as radio buttons. Only one option must be selected at a time, and you shouldn't be able to continue to the next question without an answer. The answers should be interpreted as (or saved as) 10, 20, up to 100, but the person should never see the numbers. 10 would be "completely disagree" and 100 "completely agree". On the last question, the person should not be able to submit "finished" until the last question is answered. Ideally, each answer would be recorded to the database as they are entered, not waiting until the last question to input it all. (That way we know if somebody gave up mid-survey). The back-end should consist of 4 tabs: Clients, Questions, Surveys and Reports. Under client there should be a unique ID (generated), client name, contact person, phone number, email and last_modified (generated by the system on creation/modification) fields. Also in the client section should be a sub-section to enter groups within the company with a unique ID, a two letter code we give each group, name, size of group (people in it) and last_modified. The idea is a single client will have many groups in their organization. One should be able to add/delete/edit clients and groups within it. Under questions, one should be able to add/remove/edit questions to the pool. There should be a "factor" field for each question too, so that we can categorize/group the questions. A factors would be entered for each question. Under surveys, one should be able to add/edit/remove surveys with a unique ID, client (generated dropdown list), expiration date, last_modified, creation time/date, completion time/date (when last key was entered, if it was before the expiration date) and a list of questions out of the pool that will be used for this survey. When creating adding/modifying a survey, one should be able to see a list of all questions in the pool and put a check on those that will appear in the survey. I've been thinking a blob could be used to keep track of questions with a string like 0100011000... Meaning Don't use question 1, use 2, don't use 3, 4 or 5, ue 6 and 7.. etc. The pool may be as large as 200 questions. Some may be deleted forever, though. Or an entirely separate table. That's up to you. From the surveys tab one should be able to print a list of all keys generated for a survey, separated by group. Each key should be tied to a group within a client, so that we can track which group within a client a key belongs to. A client might have several surveys, and the keys should not be repeated or at least not without a whole lot of luck). Under reports, one should be able to chose a survey and view various types of reports from it: -Show all questions with the average answer per question, taking in consideration all groups (entire client). This is basicaly "what everybody in the organization thinks". -Show all questions with the average answer per question, taking in consideration only answers from a group within that client (field to enter two-letter codes). -Show the ten questions with the highest averages (and their numeric average), and the ten lowest. Taking into consideration answers for all groups (entire client) -Show all questions with the average answer per question, taking into consideration a combination of group, using the two-letter codes. For example, one could enter: IT+AC+SA to view the average answers of the IT, accounting and sales departments all combined. -Show all questions but under each question instead of having one average, you will see two, one for each of two groups. You should have two fields to enter two-letter codes into when creating this report. The idea is to create a comparisson between the average answer of two groups. -A report of all the keys in a survey, which ones have been used, which ones have not been used and whether the survey is still open (not expired). The keys should be separated by group, just like when printing them. I expect all the php files required to be included. It does not need to be "installed" on my server, but I do require a .sql file to be able to import all tables into MySQL. I am placing a "suggested tables" files attached. However, I am not a DB programmer, it is only a suggestion, and not a guideline. I expect the English language to be used in any comments, and even variable names. The code should be easy to understand, not using cryptic function names. Due date is April 4th. 1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition 3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
This will run on a Linux server running Apache 2, MySQL 4. It should use php and html only as languages. Please don't use java or java script to make "behaviors" in the pages. When it comes to compatible HTML, Mozilla or Firefox is more important than Internet Explorer. Anything that is "IE-only" will not work for me.