It's worth learning a bit about database normalisation - sorry can't find my links but try a google search for "third normal form".
Basically, create a table for each type of information.
id | first_name | surname | password | class | etc ..
id | quiz_name | intro_text | questions
id | assignment_name | text
.. and so on.
Notice that every table has an id column: this will be an auto-increment field which creates a unique integer id for every table row. Trust me, you'll need that.
The quiz table I suggested breaks the normalisation paradigm by storing several quiz questions in one column (eg as a serialised array or as space separated values which you can explode later). You don't always have to normalise everything perfectly - that can lead to an increase in the number of queries you have to perform. If you make compromises, be sure you think it through carefully since it will make it harder to extend the functionality of yor program later on.
To normalise the quiz table, you would create another table with a row for each question and a quiz_id column where you store the quiz table row id (the auto-increment column I mentioned). Now, to retrieve a quiz and its questions, you can perform a JOIN query on quiz id.
If you're finding it hard to work out the best structure that's normal: it's an important part of application design which is worth spending time on to save problems later.
The first thing I do when I'm designing a new program is to plan out the browser pages in detail - perhaps making some mock-ups. Once you've got that, you can work out exactly what vars you need to build in your scripts and what tables and columns you'll need in the database.