form errors

Hey I started learning PHP but I keep getting errors, any advice on how to fix thse would be great.

[php]

<?php

if (isset($_GET[‘Fname’], $_POST[‘grade’], $_POST[‘Sname’]))

{

$errors = array();
$Fname = $_POST['Fname'];
$grade = $_POST['grade'];
$Sname = $_POST['Sname'];

if (empty ($Fname) || empty($grade) || empty($Sname)){
$errors[] ='All fields are required';
}else{

if(strlen($Fname) >25) {
$errors[] = ' Your first name is too long';
}
if(!is_numeric($grade)){
$errors[] ='grade must be a number';
}else{
if ($grade <=0 || $grade >100){
$errors[] = 'grade must be between 1 and 100';
			}
}
if(strlen($Sname) >25) {
$errors[] = 'Your surname is too long';
}

}
if(!empty($errors)){

foreach ($errors as $errors){
echo '<strong>',$errors ,'</strong><br />';
}
}

}
echo$_POST [‘Fname’] . " ";
echo $_POST [‘Sname’] . “
”;
echo "Your total marks were ";
echo $_POST [‘grade’] . “
”;

?>

name:
Surname:
Grade:
<?php $grade = $_POST['grade']; echo $_POST ['Fname'] . " "; echo $_POST ['Sname'] . "
"; echo "Your total marks were "; echo $_POST ['grade'] . "
"; if ($grade <=49) {echo "You failed!";} else if ($grade <=59) {echo "Your grade is C";} else if ($grade <=69) {echo "Your grade is B";} else if ($grade <=79) {echo "Your grade is A";} else if ($grade >=80) {echo "Your grade is A with distiction";} ?> [/php]

Can You please let us know what is been outputted please

Well, first of off, your error array is calling a foreach loop that runs off the same word:

[php]
foreach($errors as $errors)
[/php]

For clarification, I would assign a key and value with a different variable name, like:

[php]foreach($errors as $key => $error_msg)[/php]

Secondly, you should really have the form event driven-- use a switch statement to detect what part of the page is to be viewed and when its supposed to be processed: so set your input a name like, “submit,” and then use this:
[php]
switch($_POST[‘submit’]){
case “”:

// show form

break;

case "Submit"

 // Do processing for form

break;

}
[/php]

Also, I don’t know why you have your php code in two separate sections… Might want to make the viewing event driven as well.

Thanks, I’ll work on that now.

Sorry I didbn’t see your post before.

[php]Notice: Undefined index: grade in E:\EasyPHP-12.1\www\my portable files\first\grade.php on line 28
You failed!
Notice: Undefined index: Fname in E:\EasyPHP-12.1\www\my portable files\first\grade.php on line 36

Notice: Undefined index: Sname in E:\EasyPHP-12.1\www\my portable files\first\grade.php on line 37

Your total marks were
Notice: Undefined index: grade in E:\EasyPHP-12.1\www\my portable files\first\grade.php on line 39[/php]

I did attempt it, I may have read what you said wrong it gives me the error message

[php]Parse error: syntax error, unexpected ‘echo’ (T_ECHO) in E:\EasyPHP-12.1\www\my portable files\first\grade.php on line 54[/php]

Code:
[php]

<?php $grade = $_POST['grade'];

if (isset($_GET[‘Fname’], $_POST[‘grade’], $_POST[‘Sname’]))
{
$errors = array();
$Fname = $_POST[‘Fname’];
$grade = $_POST[‘grade’];
$Sname = $_POST[‘Sname’];
if (empty ($Fname) || empty($grade) || empty($Sname))
{ $errors[] =‘All fields are required’; }
else{ if(strlen($Fname) >25 || strlen($Fname) <3) {
$errors[] = ‘Your forename must be at least three letters long and a maximum of twenty letters’;
}
{ $errors[] = ’ Your first name is too long’; }
if(!is_numeric($grade))
{ $errors[] =‘grade must be a number’; }
else{ if ($grade <=0 || $grade >100)
{ $errors[] = ‘grade must be between 1 and 100’; }
}
if(strlen($Sname) >25 || strlen($Sname) <3)
{
$errors[] = ‘Your surname must be at least three letters long and a maximum of twenty letters’;
}
if(!empty($errors))
{ foreach($errors as $key => $error_msg)
{ echo ‘’,$errors ,’
’; }
}

}

?>  


<form method="post" action="" >
<table border ='5'> <tr><td>name:</td> <td><input type="submit" name="Fname" /></td>
</tr>  <tr><td>Surname:</td> <td> <input type="submit" name="Sname" /></td>
</tr> <tr><td>Grade:</td> <td> <input type="submit" name="grade" /></td></tr>
<tr><td><input type="submit" /></td></tr> </table> </form>	
<?php switch($_POST['submit']) { case "": break; case "Submit" echo $_POST ['Fname'] . "
"; echo $_POST ['Sname'] . "
"; echo "Your total marks were "; echo $_POST ['grade'] . "
"; if ($grade <=49) {echo "You failed!";} else if ($grade <=59) {echo "Your grade is C";} else if ($grade <=69) {echo "Your grade is B";} else if ($grade <=79) {echo "Your grade is A";} else if ($grade >=80) {echo "Your grade is A with distiction";} break; } ?>
</body>
</html>[/php]

For anyone who is intrested this is how I managed in the end.
Next will be learning how to use switch I guess.

[php]

<?php if (isset($_POST['Sname'], $_POST['grade'], $_POST['Fname'])) {
$errors = array();
$name = $_POST['Sname'];
$grade = $_POST['grade'];
$Fname = $_POST['Fname'];
$Sname = $_POST['Sname'];
$Fname = $_POST['Fname'];

if(!is_numeric($grade)){
$errors[] ='age must be a number';
}else{
if (($grade <= 0) || ($grade >100)){
$errors[] = 'Grade must be between 1 and 100';
			}
}

if (empty ($Sname) || empty($grade) || empty($Fname)){
$errors[] ='All fields are required';
}else{
if(strlen($Fname) >25 || strlen($Fname) <3) {
$errors[] = 'Your name must be at least three letters long and a maximum of twenty letters <br />';
}


if(strlen($Sname) >25 || strlen($Sname) <3) {
$errors[] = 'Your name must be at least three letters long and a maximum of twenty letters';
}



}

if(!empty($errors))
{

	foreach($errors as $key => $error_msg)
	{
	echo '<strong>',$error_msg ,'</strong><br />';
	}

}
else
		{
	$grade = $_POST['grade'];

	echo $_POST ['Fname'] . " ";
	echo $_POST ['Sname'] . "<br />";
	echo "Your total marks were ";
	echo $_POST ['grade'] . "<br />";


	if ($grade <=49)
		{echo "You failed!";}
	else if ($grade <=59)
		{echo "Your grade is C";}
	else if ($grade <=69)
		{echo "Your grade is B";}	
	 else if ($grade <=79)
		{echo "Your grade is A";}
	 else if ($grade >=80)
		{echo "Your grade is A with distiction";}
		}

}

?>

Forename:
Surname:
Grade:
<?php

?>

[/php]
Sponsor our Newsletter | Privacy Policy | Terms of Service