Hello again. Welcome to the second part of our error tutorial on how to spot errors and how to fix them.
I have called this "extrachar dot php" and the reason is that when we run this, ...lets go back, ...click on "extrachar", we get this error "Parse error in" and all of this and on line 6.
We are given no information what-so-ever as to what we are expecting or what we are not expecting or anything of that sort.
We jump to line 6 which is here and at first glance this might look okay.
But we have actually got an extra bracket on here so we are deleting that and you can see this now works.
And now that's pretty easy to spot.
However when you are doing things like mathematical calculations for example like adding, comparing, etc.. if you are doing mathematical calculations like this and you lose track of your brackets.
Sometimes it is very easy to solve. When we run this, nothing is going to come up because these two don’t equal each other.
That didn't return any errors.
But if I add an extra bracket here, we'll get a "Parse error".
When you solve complicated if statements or complex mathematical operations, you should check that the brackets match.
Just make sure that you are checking for all the brackets or anything else like some characters that seem to be in there.
For example - lets put an "a" in front of that.
See - when we go back we still get a "Parse error".
Lets get rid of this. Refresh that, still getting a "Parse error".
So you know you might have typed something. Lets remove that.
Okay now the next one I will show is the "missing page".
Let me show you the error for this. Click on "missing.php". Ok we get more Parse errors as seen on line 9.
Lets go down and where is line 9? Semicolon.
Okay sorry that was actually not intended. So lets refresh again.
Okay. So we have got a "Parse error" on line 18.
Lets go to line 18.
Okay now - line 18 - this line here where I am pointing is line 18.
So what is wrong with line 18?
There is absolutely no content on line 18. How could we possibly have an error?
And the reason for that is what I said earlier - to check around this area.
So we have to check a couple of lines up - say 4 or 5 lines up.
What we have is an "if" statement - "if posted user name equals 'Alex'", echo "You own PHP Academy", else echo "Hello name".
We might say that we have got a starting curly bracket and an ending curly bracket for this "if" statement here.
Why isn’t it working? That's because we have already started an "if" statement up here.
And this is the purpose of indentation and the usefulness of indentation.
To me when I look at this from experience, I know that since this bracket is indented , that bracket should be indented here, in the same line.
Therefore it is missing. So if this was there and that was indented here, then I would know that's from the previous "if" statement up here where the block starts here and the block ends here.
But here, the block starts here and there is no end bracket here.
I'll put it here. And when we run this, there you go! It starts working now.
So if you miss out characters, you will find that you get weird places for the errors.
In fact, this is not a weird place for the error because we are saying "else", start of block and end of block.
And what we are looking for is an end to this block now because this is the block that hasn’t been ended.
So we are saying the line error is not actually here because we require an end to a block here.
Now that will work, okay?
So just look around couple of lines up and see where you might have an else without an end or some other character missing or something else that you require that's missing.
Next lets switch to the "getpost dot php".
I have used the error-reporting "E All" just to demonstrate this.
This is to "demonstrate". This type of error is going to be reported.
This doesn't mean all errors. Its not an exhaustive list of all the errors that can be reported.
This is just a parameter for this function.
This will allow us to see some errors that the user wouldn’t usually say. I mean you wouldn’t use this if you were to launch your own website. But I have a tutorial on this which you should see.
So, this is a "get post" error.
Lets go here. Ok, so we have got a variable called "data".
This is the GET variable called "name".
Our code says "if this data variable exists, echo data" and this seems like a pretty normal program.
There is no actual error here.
We are taking some variable here and everything is working and there is no line break error or line terminating error, either.
We have not missed anything, we don’t need to put anything in.
But when I run this page, we get a notice.
Now this is not a "Parse error" which you have seen before. This is a notice.
And the page can’t function properly with this error present.
Let me show you - here I say "name equals alex" and this error disappears.
This shows that there is nothing really wrong with our code but what was wrong in first place, was that this data variable had not been fulfilled.
It's the same as saying "data equals absolutely nothing".
Here let me say "echo variable alex" and this is line 5.
Lets refresh. Undefined variable alex, Undefined index name.
So what we are doing is - okay, let me start from the beginning.
This is unfulfilled if the name has not been specified in the header.
Therefore "data equals nothing" and so we get the error "Undefined index", just like we get "Undefined variable" if we echo a variable that hasn't been set.
So as soon as we put some data in here, this error goes.
Lets refresh .
If you want to get rid of this initial error all you need to do is put a "@ (at)" symbol in between or at the start of this line.
When we refresh, we get nothing because no error has been set.
No get variable has been set. And as soon as we say "name equals alex" our name is echoed out just like the code here specifies.
So even though you are using this "if data exists", technically this still doesn’t exist, if nothing has been put here. So look out for them.
That's all for now. In the last part, I will go through the next two common errors quickly. See you there.
This is Evan Varkey dubbing for the Spoken Tutorial project. Thanks for watching .