PDA

View Full Version : PHP & mysql



greyhame
07-24-2006, 08:32 PM
I am working on a registration and login form for my website and have reached the point where I can submit the data, insert it into the database, and validate it. I can't seem to get the users to the proper pages after the information has been checked. I have tried the "header" statement to no avail. I am using "if---else" to validate. Here is my script for validation:

<html>
<body>
<?php
$con = mysql_connect("localhost","colescom_colen","*******");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("colescom_names", $con);
$result = mysql_query("SELECT * FROM person
WHERE name='Colen'");
while($row = mysql_fetch_array($result))
$name=$row['name'];
$email=$row['email'];
if ($name=="Colen")
header("Location: ThankYou.html");
else
header("Location: NoRecord.html");
echo "<br />";
?>
</body>
<html>

When I run the script, I get this error:

Warning: Cannot modify header information - headers already sent by (output started at /home/colescom/public_html/where.php:3) in /home/colescom/public_html/where.php on line 16

I have used "echo" statements in place of the "header" statements to let me know whether the information in the database matches. That works. Any help would be greatly appreciated.

Anyone who wishes to study php or mysql should check out this website:

http://www.w3schools.com/php/php_intro.asp

navaldesign
07-24-2006, 10:12 PM
Try:

<html>
<body>
<?php
$con = mysql_connect("localhost","colescom_colen","****** *");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("colescom_names", $con);
$result = mysql_query("SELECT * FROM person
WHERE name='Colen'");
while($row = mysql_fetch_array($result))
$name=$row['name'];
$email=$row['email'];
if ($name=="Colen")
{
header("Location: ThankYou.html");
}
else
{
header("Location: NoRecord.html");
}
echo "<br />";
?>
</body>
<html>


But why is it all included in the html tags ?

greyhame
07-25-2006, 02:43 AM
I have been going thru the tutorials at: http://www.w3schools.com/php/php_variables.asp

Some of the examples include the html tags and some do not. Apparently it makes no difference whether they are there or not as far as the php code is concerned as long as the necessary php start and stop tags are in place

greyhame
07-25-2006, 02:53 AM
Here is a script I have as login.php:

<?php
$name=$_POST["name"];
$email=$_POST["email"];
$con = mysql_connect("localhost","colescom_colen","********");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("colescom_colen", $con);
$result = mysql_query("SELECT * FROM person)
WHERE email=$email);
if $result==$email;
{
echo 'Login okay';
else
echo 'Not in system';
}
mysql_close($con);
?>

I also have a login.html which transmits a login email address. When I submit the address I get the following error:

Parse error: syntax error, unexpected $end in /home/colescom/public_html/login.php on line 20


There is no line 20 in my script. I did a search on this type of error but could not find an answer.

navaldesign
07-25-2006, 07:44 AM
1. Did you get any results by inserting the {
and } ?
2. The html tags are used if in the same page you have to combine php with some html code. If the script is stand alone, as it seems to be in your case (the presense of two " headr: .... " lines makes me think so) there is no need for html tags.
3. I think that you have a small error in here, and this caused your script to go directly to the end, which causes the error message.

Try it like this: (please note that i have not tested it)


<?php
$name=$_POST["name"];
$email=$_POST["email"];
$con = mysql_connect("localhost","colescom_colen","****** **");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("colescom_colen", $con);
$result = mysql_query("SELECT * FROM person WHERE email=$email");
while ( $row = mysql_fetch_array($result))
{
if ($row['email'] = $email)
{
$registered = "True";
}
}
mysql_close($con);
if ($registered !="")
{
echo 'Login okay';
header("Location: page_to_send_him_to.html"); // Use this line if you wish to send him to a specific page
}
else
{
echo 'You are not registered yet.';
header("Location: registrationpage.html"); // Use this line if you wish to send him to the registration form page
}
?>

greyhame
07-25-2006, 02:56 PM
Here is the script as I tried it:

<?php
$name=$_POST["name"];
$email=$_POST["email"];
$con = mysql_connect("localhost","colescom_colen","******");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("colescom_colen", $con);
$result = mysql_query("SELECT * FROM person WHERE email=$email");
while ( $row = mysql_fetch_array($result))
{
if ($row['email'] = $email)
$registered = "True"
mysql_close($con);
}
if ($registered !="")
{
echo 'Login okay';
header("Location: ThankYou.html"); // Use this line if you wish to send him to a specific page
}
else
{
echo 'You are not registered yet.';
header("Location: NoRecord.html"); // Use this line if you wish to send him to the registration
form page
}
?>

I get this error:

Parse error: syntax error, unexpected T_STRING in /home/colescom/public_html/login.php on line 15

Line 15: mysql_close($con);

I checked it with ***ad (a php editor). All parentheses and brackets are in place.

I noticed you closed the connection to the database before using the header statement. Is this necessary to get the header statement to work?

navaldesign
07-25-2006, 03:09 PM
You have moved one of the curly brackets - the one before the mysql_close($con);

I also made a couple of changes. Please copy / paste and try again.

The connection is only needed till the check is done. As a good rule, the connection should be closed after every querry, unless you use loop in loop techniques which are rather complicated.

greyhame
07-25-2006, 03:28 PM
What were the other changes you made?

navaldesign
07-25-2006, 08:42 PM
Put two curly bracket where missing.