Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
In this movie we're going to work on Creating a New Subject in the admin area. That's the first part of our CRUD, the C for Create. We're going to do that by creating a web form, that will then submit to another page for processing the form and actually doing the submission. It's a two part process. The first page is going to be, new underscore subject dot php, that's where the web form will live, and it will submit to create underscore subject dot php. That's where we'll do the form processing. We'll look at the form processing in just a moment.
Let's start by looking at that New Subject Form. So I'm going to open up managedcontent.php, and I'm going to just make a New file here in TextMate. And I'm going to Copy everything that we had for manage_content over to this new file because that's going to be our starting place. Let's go ahead and just save that, Save As and it's going to be inside widget_corp, inside public and then we want to call it new_subject.php. Now we're going to want our database connection we're going to want all our functions.
We're going to want our header. We're even going to want to have find selected page because we're still going to have the navigation over on the left side throughout this process. If we didn't want the navigation there we could leave that off. And then of course we'll want our navigation here and then everything that's below this, we'll just strip out. So this is now where my form is going to live. I'll just Paste in some HTML for that. You can pause the movie if you want to copy it down. What I've got is an h2 tag at the beginning that says Create Subject. Here's my form, it's action is to submit to create_subject.php. It's going to be a post request, that's typical for forms. And then I've got my fields, Subject name, which actually now that I think about it, I'm going to just call Menu name, and then here's the text field for it.
There's no value for it, it's a new subject. We don't need a value there. And I've got position so this I got a little bit of a placeholder. It's going to be a select option, so for the option right now my only option is one. We'll come back to talk about that in a moment. And then visible, that's going to be some radio buttons, either No or Yes, and those will submit 0 for No or 1 for Yes. That's for correspondence to a Boolean, false or true. And then a button at the bottom that will submit, called Subject. And then I've also got down here below the end of the form, manage_content.php as a link with cancel, so that will just take me back to the other page. Let me just Save that.
Let's go over to managecontent.php real quick, and right after the navigation, I'm going to put br tag and then let's add a link here to our new page, href equals. And then we're going to call this new_subject.php, Add a subject. Then I'm actually put a plus in it as well, just so that it's really distinct from the rest of the navigation items. Alright, so let's close that up, and lets just go to Firefox and take a look. Let's reload the page.
Add a subject now is down here at the bottom, click on that. And we're on our subject page, new_subject.php, click cancel. We're back to this page, right? So, add a subject is only on the other page. It's not, it doesn't exist here because we're already on it, we don't need to, to have it listed here, alright? Now, let's take a look at this position. Right now, if we click on position, you'll see that there's only one option here. What we need is to use a little bit of php. Because we need to have more than one position. And the number of positions is going to vary.
Right now we have four subjects, About Widget Corp, Products, Services, and Today's Widget Trivia, those are four things. So if we're creating a new one, this could potentially be position number five. If we go to create another new one again, it could be position number six, right? So we need it to increment as we add new subjects to it, or if we delete subjects We want it to go back down in decrement. It matters how many subjects we have. So to do that, we just write a loop, and we can do that PHP, we know how to write loops. Lets create ourselves a little block of PHP here.
And I'm going to do a for loop. So for count equals one to start with and then, while count is less than or equal to subject count, that's a variable that doesn't exist yet, and then count plus plus. And then inside my loop, let me just make the page a little bigger, inside my loop what I want to do, well I want to output an option. So, I'll take that out of there. You can put it up in here in the php echo, option value 1. I need to just escape these two double quotes.
But instead of being a one, I want this value to be dynamic now. So it's going to be count. So as we go through, each one of these is going to increment, all the way up until we get to subject count. And then I'll put a semicolon just at the end of that. Let's Save it and let's just try it like it is. We're going to need something for subject count though so let's just hard code in a value. Subject count equals 8. Save it, go back and reload our page, position and there you go, our loop worked, at increments from 1 all the way up to 8. Alright so now we don't have a hard coded value, we want to actually figure out how many subjects there are in the database.
There are a couple of ways that we can do that. One is that if you know SQL already, you'll know that you could write a new query that uses SQLs count. And that's a very common way of doing it, to say select the count of the records, and SQL will return the count to you. That's a very efficient way of doing it. I'm going to show you a slightly less efficient way of doing it, but I think it's going to expose a useful technique for us. So, let's say that we're going to use subject set, and we already have something that will find all of our subjects for us. And remember, we used it for our navigation, it's called find all subjects.
But that will return all of our subjects to us. Now, for subject_count, we can use part of the mysqli api, which is mysqli_num_rows, and then we provide it as an argument, our set. So it finds the data, and instead of pulling records off of the data using fetch association, instead we can just ask it, hey result set. How many rows do you have? It'll return a number to us. It'll tell us how many rows it has. And then we'll use that here for our subject count. Now, we don't want the current number of rows, we want the current number of rows plus 1, right? Because we're actually going to increment, we're going to be adding one new one. If we already have four subjects, we want to allow them to have five as the option for the select.
So let's just go over here and try that again. We'll Reload it, and look at that, we come up with 5, exactly as we would expect. Now our new subject.php form is ready to submit values in order to create subjects. But we need a page that is going to process those values. And that's going to be create_subject.php. We're going to create that in the next movie.
Get unlimited access to all courses for just $25/month.Become a member