View different links on page depending on user level
Hi, I have very little knowledge of php so please talk to me as if you where talking to a kid
What I want to do is quite complicated, the best way to describe it is something like a game but I am not making a game is actually a website where people can take exams but I want them to view the links depending on their user level, for example:
1st year students on level 1 can view the first exam of the first book, once they take the first exam on book one I want php to automatically boost that person to level 2 of the first year (is not necessary, we can boost them ourselves but it be cool if it was done automatically) but I want the exams to appear as they take the other exams, for example once they take exam 1 and pass it I want the link to exam two appear on their user page automatically and I want that if possible to be all on one page.
I want to put all the links to main.php and I want for php to look in the database that user level, if the user is on year one level 42 (this course takes 4 years to complete and there's over 250 short exams per year) I want them to be able to see on the navigation bar on the left as a drop down menu: year one - book 3 - exam 8 for example. I hope you understand what I am trying to achieve.
I would like it to be all in one page because I don't want to end with 1,000 same pages with different links for the different levels, I know is not so hard to make php redirect the person to a different page depending on their level but I don't want that, I want it to be done in one page (all the links) and php to hide the other links that the student haven't gone to yet.
I know I little bit of php and mysql, I already have the database setup and the users can already register and sign in, that's working fine the only thing I want to learn is how to make php appear the links that the users need depending on their level. How to hide it and how to show it.
I already have it setup that if a user that is not logged in they can't see the page and I am pretty sure that is easy to make it that if they are not on a certain level they won't be able to see the page if someone on a higher level gives them the link. My only problem is to auto hide/show the links automatically.
You create a column in your MySQL user table that contains a level code or number.
Example, all new users might be level 0 ... each level 1,2,3 ... offers different access.
When a user logs in, you create a SESSION variable that contains their access level.
You then have one PHP script that looks at their level and determines what they can
do ... that script is 'included' at the top of any other script you need to test or control.
If your decisions are made in the navigation part of a page, that would be the part
that you 'include', so all pages are using the same script to determine user access.
I got the idea on my head and I know what you mean mlseim what I don't know is the code that I need. How is it that I do it, how do I tell php that second year students on level 90 can see up to book 5 exam 20. Do I need to be specific (tell php one by one what links can be displayed depending on the level because if is like that I'll end up with a huge code because there's like 1,000 links) or there's a mathematical or logical way to tell php to increment the level and show the next link when they pass the exam.
The way I want the links is that students from year two to be able to see all the previous links from all their previous exams, I want it to increment the level once the person passes the exam and if they don't (we decide that manually since most of the exam is fill in the blank) not to boost them to the next level.
I want to write all the links on the pages necessary, not to create a page with link 1, then another with links 1 & 2 and then another with links 1,2 & 3 because if I do that it will be endless.
Let's say that you don't have 1000 pages, but instead you have 1000 files that are
identified by a number. The numbers are incremental, and the user's level simply
is the current file number (exam) they are on. Anything less can be viewed, but they
can't have their level incremented until they finish that exam.
I don't know how your exams are created. If it were me, I would create them as PDF
files that people can actually enter things on (interactive PDF). Once completed, the
PDF copy that the person is using can be saved, or emailed. In any event, the exam
number is the user's level.
My main point is, you don't have 1000 HTML pages. Your exams should not be HTML.
That's my personal opinion.
And another thing, each person could be given the same exam, but the questions
in different order.
I suppose I don't know enough about what your project is. sorry.
What you say sounds pretty good, I didn't know about interactive PDF, we have some exams in pdf files they can download and print and we had it also as a doc file. I was trying to do it as a form, with radio buttons, check boxes, input text and textareas but I'll take a look at interactive PDF it might be easier.
As for the project, all the students are given the same exams I just don't want them to take or see the exams before they get there, of course they can always get around it if someone else show them their copy but that's out of my hands.
This is what I have in mind:
User login page -> student front page where it shows them their year, book they are at and exam number and their current grade. on the left they have the exam nav since we have on the top nav bar the links to the whole website. The nav on the left will only have the links to the exams, something like this:
Book one - title
Book two - title
Book one - title
and so forth.
I want all the students to go to the same page, lets call it main.php but obviously with mysql php will retrieve their info from the database and display it on the page. I want to put all the links for all the exams of all the four years in main.php and that when that user info is retrieve, I want a piece of code to auto hide the links to the exams that they are not at yet, that's the code I am looking for, also I want to know how to link the exam links to the database user level.
As for the exams, like I said before I'll take a look at interactive PDF and if I go with that then the links that I want to show/hide will be the link to those files but I need to put them on a php page so that php can check on the database if that student can access that file. If there's another way it be better, like I said at the beginning, I am new at php and I don't know many options to do what I need, I am pretty sure there are a lot of different ways, I would like to know the best that accommodates to my needs or desires.
I tried to explain my project as best as I can, I know that you'll need as much info as possible to help me so if you have any question, ask freely and thank you very much for helping me.