CS1109 Lab 18

Read all these instructions first. Yes, I know they're longer than anything you've ever read before in your whole life. But try to read them anyway. Say the words out loud if it helps.

This final lab sheet, lab 18, is a 'project' that will last until the end of term.

By now, you should have decided on a scenario where you would want to maintain a database and to update and query the database from your web browser. For example, a club or society may wish to keep membership records; a social network will want to store its members, their connections, and so on; a bookshop may wish to keep track of its stock; a busy house-husband may wish to keep a diary of dental appointments, birthdays, and Pilates lessons; a quiz program may need to store questions, answers, and the scores of its users in a database; a computer game will need to keep track of players and high scores; ... Your chosen scenario can be real (e.g. an actual UCC society) or fictitious (e.g. a shop you've made up). If you are doing something for real, make sure that no issues arise from the fact that your system will be available on the cs1 server for all-and-sundry to view.

Examples from previous students include: database-driven quiz programs, CD/DVD shops, libraries, social networking sites, bulletin boards,...

Bear in mind that we will have/have had lectures on PHP for cookies, sessions (including shopping carts), and user authentication (i.e. user registration and user login).

By now, you should have checked your scenario with me: check it with me now, if you haven't already done so. I will want to be convinced that your chosen scenario is ambitious enough to warrant a 'project' that will last until the end of term. (E.g. a database with just one table, a form for insertion and a form for retrieval is almost certainly not challenging enough.) Remember, this is the equivalent of four weeks of labs. In the final calculation of your mark for continuous assessment, it will count several times more than other lab sheets.

Once I have agreed it, you can start designing your database, your forms and your scripts. (Note: your 'start' page should be called either index.html or index.php.)

Use everything you've learned about writing well-formed HTML, about stylesheets, about usability, about accessibility, about images, as well as about PHP (including data validation, self-processing pages, sticky forms, cookies and sessions) and SQL.

One tip is to put your database creation commands into a file, like I did with eurovision.sql for lab 17. Then, if you ever need to create the database again from scratch, you can easily do so from the file (again like you did for lab 17), rather than by typing in all the commands again.

The work should, of course, be your own. Do not submit the work of others (e.g. taken from the Web or from another person) as if it were your own. If you do use anything from the Web, give proper credit to the original source. If you're in doubt, ask me. Moreover, since in past classes some students had some of their programs wholly or partly written for them by people outside the class, I reserve the option of asking students to come to my office to explain their code in order to convince me that what they submit is their own work.

You will be tempted to depart from labs before the full two hours are up (if you do, I will mark you absent), or to stop attending labs because the deadline seems so remote. Do not do so. Start designing and programming NOW.

Bear in mind that access to the labs might be reduced in the penultimate week of term due to the public holiday on the Monday and due to Year 4 students holding their Project Open Day.

Deadline: 11am, Thursday 28th March. (Not our usual Tuesday deadline.)

Put the work for this lab into a new folder public_html\cs1109\lab18. Make sure that all files (including files such as output_functions.php, etc.) are in this folder, or subfolders of this folder. If you have named your folder correctly, your work will be collected automatically at that time by my software.

After submission, do NOT alter your database in any way. If you do, then your software may not run when I come to grade it.

If you think I will need instructions or passwords to run certain parts of your system, then put these details into PHP comments in a file called readme.php. E.g. the file might contain:

    My system has two kinds of user: regular ones, and administrators.
    Choose Sign Up on the main page in order to register as a regular user.
    But to login as an administrator, the user name is admin and the password is atotpanvg12&

Similarly, if there's anything you want to tell me, e.g. you might want to point out a special feature that you're particularly proud of and that you fear I might overlook when grading the work, then mention it in this file.