Jump to content

[SOLVED] Whats wrong with my code? Please help


matt.sisto

Recommended Posts

I am trying to get the my form to echo a message if the email address already exists, can someone point out what is wrong with my code.

 

addconsultantform.php

<?php
  require "dbconn2.php";
  $error = $_GET['error'];

$sql="SELECT rate_id, rate FROM rate";
  $result=mysql_query($sql);
  $rate_option="";

while ($row=mysql_fetch_array($result)) {

    $id=$row["rate_id"];
    $rate=$row["rate"];
    $rate_option.="<OPTION VALUE=\"$id\">".$rate;
}

if ($error !=='0') 
{
echo '<h2>Sorry but an account with this email address already exists</h2>';

}
?>

addconsultant.php:

  $sql = mysql_query("SELECT * FROM consultant WHERE email_address = '$email_address'");
if (mysql_num_rows($sql) == 0)
  {
  
  $sql = "INSERT INTO consultant VALUES (0,'".$first_name."','".$last_name."','".$address_first_line."','".$post_code."',
									 '".$email_address."','".$phone_number."','".$dob."','".$rate."','".$enc."')";
  $result = mysql_query ($sql, $connection)
    or die ("Couldn't perform query $sql <br />".mysql_error());
  header("Location: addconsultantform.php");
  exit();
  }
  else{
   $error =  $_POST['error'];
   header("Location: addconsultantform.php");
  exit();
  }

Appreciate any help.

Link to comment
Share on other sites

You're not passing $error in the header

try this

$error =  $_POST['error'];
header("Location: addconsultantform.php?error=".$error);

otherwise your $_GET['error'] doesn't exist

 

I am trying to get the my form to echo a message if the email address already exists, can someone point out what is wrong with my code.

 

addconsultantform.php

<?php
  require "dbconn2.php";
  $error = $_GET['error'];

$sql="SELECT rate_id, rate FROM rate";
  $result=mysql_query($sql);
  $rate_option="";

while ($row=mysql_fetch_array($result)) {

    $id=$row["rate_id"];
    $rate=$row["rate"];
    $rate_option.="<OPTION VALUE=\"$id\">".$rate;
}

if ($error !=='0') 
{
echo '<h2>Sorry but an account with this email address already exists</h2>';

}
?>

addconsultant.php:

  $sql = mysql_query("SELECT * FROM consultant WHERE email_address = '$email_address'");
if (mysql_num_rows($sql) == 0)
  {
  
  $sql = "INSERT INTO consultant VALUES (0,'".$first_name."','".$last_name."','".$address_first_line."','".$post_code."',
									 '".$email_address."','".$phone_number."','".$dob."','".$rate."','".$enc."')";
  $result = mysql_query ($sql, $connection)
    or die ("Couldn't perform query $sql <br />".mysql_error());
  header("Location: addconsultantform.php");
  exit();
  }
  else{
   $error =  $_POST['error'];
   header("Location: addconsultantform.php");
  exit();
  }

Appreciate any help.

Link to comment
Share on other sites

i think it is still incorrect. 

 

on addconsultantform.php you are attempting to retrieve $error as $_GET['Error'] however you are launching this page from here

 

header("Location: addconsultantform.php");

 

This URL will never have Error as a condition for $_GET to retrieve.    If you really want to do it this way, you will have to do this

 

<?php
  else{
      $error =  $_POST['error'];
      $url = "Location: addconsultantform.php?error=".$error;
      header($url);
  exit();
  }
?>

 

furthermore, $error is not always going to be set, so you should be using

 

if(isset($_GET['error'])) {
   $error = $_GET['error'];
}

Link to comment
Share on other sites

addconsultantform.php:

<?php
  require "dbconn2.php";
  if(isset($_GET['error'])) {
   $error = $_GET['error'];
}

$sql="SELECT rate_id, rate FROM rate";
  $result=mysql_query($sql);
  $rate_option="";

while ($row=mysql_fetch_array($result)) {

    $id=$row["rate_id"];
    $rate=$row["rate"];
    $rate_option.="<OPTION VALUE=\"$id\">".$rate;
}
if ($error !=='0'){
 echo '<h2>Sorry but an account with this email address already exists</h2>';
}

?>

addconsultant.php:

<?php
  $sql = mysql_query("SELECT * FROM consultant WHERE email_address = '$email_address'");
if (mysql_num_rows($sql) == 0)
  {
  
  $sql = "INSERT INTO consultant VALUES (0,'".$first_name."','".$last_name."','".$address_first_line."','".$post_code."',
									 '".$email_address."','".$phone_number."','".$dob."','".$rate."','".$enc."')";
  $result = mysql_query ($sql, $connection)
    or die ("Couldn't perform query $sql <br />".mysql_error());
  header("Location: addconsultantform.php");
  exit();
  }
  else{
      $error =  $_POST['error'];
      $url = "Location: addconsultantform.php?error=".$error;
      header($url);
  exit();
  }

?>

 

Like this?

Link to comment
Share on other sites

well step through it, what exactly are you seeing for it to not work

 

1) is this for a new entry or an existing entry

2) should an error exist or not

3) if the error exists, does the header redirect include the error condition

4) echo $error to see what it contains on both pages (temporarily comment out the redirect on your form page so you can see the contents of $error)

Link to comment
Share on other sites

addconsultantform.php(this is my full script, just ignore the css)

<?php
  require "dbconn2.php";
  if(isset($_GET['error'])) {
   $error = $_GET['error'];
}

$sql="SELECT rate_id, rate FROM rate";
  $result=mysql_query($sql);
  $rate_option="";

while ($row=mysql_fetch_array($result)) {

    $id=$row["rate_id"];
    $rate=$row["rate"];
    $rate_option.="<OPTION VALUE=\"$id\">".$rate;
   }
if ($error !=='0'){
    echo '<h2>Sorry but an account with this email address already exists</h2>';
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Add a New Consultant</title>
<style type="text/css">
#label1 {
text-align:justify;
position:absolute;
left:170px;
top:70px;
}
#input1 {
text-align:right;
    position:absolute;
left:270px;
top:65px;
}
#label2 {
text-align:justify;
position:absolute;
left:170px;
top:100px;
}
#input2 {
text-align:right;
    position:absolute;
left:270px;
top:95px;
}
#label3 {
text-align:justify;
position:absolute;
left:170px;
top:130px;
}
#input3 {
text-align:right;
    position:absolute;
left:270px;
top:125px;
}
#label4 {
text-align:justify;
position:absolute;
left:170px;
top:160px;
}
#input4 {
text-align:right;
    position:absolute;
left:270px;
top:155px;
}
#label5 {
text-align:justify;
position:absolute;
left:170px;
top:190px;
}
#input5 {
text-align:right;
    position:absolute;
left:270px;
top:185px;
}
#label6 {
text-align:justify;
position:absolute;
left:170px;
top:220px;
}
#input6 {
text-align:right;
    position:absolute;
left:270px;
top:215px;
}
#label7 {
text-align:justify;
position:absolute;
left:170px;
top:250px;
}
#input7 {
text-align:right;
    position:absolute;
left:270px;
top:245px;
}
#label8 {
text-align:justify;
position:absolute;
left:170px;
top:310px;
}

#select1 {
position:absolute;
left:310px;
top:305px;
}
#label9 {
text-align:justify;
position:absolute;
left:170px;
top:280px;

}
#select2 {
text-align:right;
    position:absolute;
left:260px;
top:275px;
       width:60px;

}

#select3 {
text-align:right;
    position:absolute;
left:325px;
top:275px;
        width:60px;

}
#select4 {
text-align:right;
    position:absolute;
left:390px;
top:275px;
       width:50px;

}
form {
font-family:Verdana, Geneva, sans-serif;
font-size:10px;
text-align:justify;
}
  h1 {
  font-family:Verdana, Geneva, sans-serif;
  text-indent:2px;
  font-size:14px;
  position:absolute;
  left:10px;
  top:5px;
  padding-bottom:5px;
  }

  #button1 {
  width:75px;
  height:50px;
  font-family:Verdana, Geneva, sans-serif;
  font-size:9px;
  float:left;
  position:absolute;
  top:70px;
  left:2px;
  }
    #button2 {
  width:75px;
  height:50px;
  font-family:Verdana, Geneva, sans-serif;
  font-size:9px;
  float:left;
  position:absolute;
  top:120px;
  left:2px;
  } 
  #button3 {
  width:75px;
  height:50px;
  font-family:Verdana, Geneva, sans-serif;
  font-size:9px;
  float:left;
  position:absolute;
  top:170px;
  left:2px;
  }
  #button4 {
  width:75px;
  height:50px;
  font-family:Verdana, Geneva, sans-serif;
  font-size:9px;
  float:left;
  position:absolute;
  top:220px;
  left:2px;
  }
    #copyright {
position:absolute;
font-family:Verdana, Geneva, sans-serif;
font-size:9px;
bottom:2px;
right:450px;
}
</style>
</head>

<body>

  <body>
  <h1>New Consultant Details</h1>
<form name="addconsultant" method="post" action="addconsultant.php">

  <p>
   <label id="label1">Firstname</label>
   <input id="input1" type="text" name="first_name" value="<?=$row['first_name']?>" /></p>
   
  <p>
   <label id="label2">Surname</label>
   <input id="input2" type="text" name="last_name" value="<?=$row['last_name']?>" /></p>
   
  <p>
   <label id="label3">Address<font size="-20">[First Line]</font></label>
   <input id="input3" type="text" name="address_first_line" value="<?=$row['address_first_line']?>" /></p>

  <p>
   <label id="label4">Post Code</label>
   <input id="input4" type="text" name="post_code" value="<?=$row['post_code']?>" /></p>

  <p>
   <label id="label5">Email Address</label>
   <input id="input5" type="text" name="email_address" value="<?=$row['email_address']?>" /></p>

  <p>
   <label id="label6">Phone Number</label>
   <input id="input6" type="text" name="phone_number" value="<?=$row['phone_number']?>" /></p>
  
  <p>
   <label id="label9">Date Of Birth</label>

<select id="select2" name="year" value="<?=$row['y']?>">
<?php
for ($x= 1950; $x<=1980; $x++) {
   echo "<option";
   if ($x == $y) {
      echo " selected";
   }
   echo ">$x</option>";
}
?>
</select>

<select id="select3" name="month" value="<?=$row['m']?>"/>
<?php
$months = Array("January", "February", "March", "April", "May",  "June", "July", "August", "September", "October", "November", "December");
for ($x=1; $x <= count($months); $x++) {
   echo"<option value=\"$x\"";
   if ($x == $m) {
      echo " selected";
   }
   echo ">".$months[$x-1]."</option>";
}
?>
</select>

<select id="select4" name="day" value="<?=$row['d']?>">
<?php
for ($x= 1; $x<=31; $x++) {
   echo "<option";
   if ($x == $d) {
      echo " selected";
   }
   echo ">$x</option>";
}
?>
</select></p>
   
   <p>
   <label id="label8">Rate ID</label>
   <select id="select1" name="rate">
   <option value="<?=$row['rate']?>">Choose <?=$rate_option?>
   </option>
   </select></p>
   
   
  <p>
   <label id="label7">Password</label>
   <input id="input7" type="password" name="passwd" value="<?=$row['passwd']?>" /></p>   
   <input id="button1" type ="submit" value="save"/>
</form>
<input id="button2" type="submit" onClick="javascript:self.close()" value="close"> 
</body>
</html>

 

addconsultant.php:

<?php
  require "dbconn2.php";
  $first_name = $_POST['first_name'];
  $last_name = $_POST['last_name'];
  $address_first_line = $_POST['address_first_line'];
  $post_code = $_POST['post_code'];
  $email_address = $_POST['email_address'];  
  $phone_number = $_POST['phone_number'];  
  $y = $_POST['y'];
  $m = $_POST['m'];
  $d = $_POST['d'];
  $rate_id = $_POST['rate'];
  $passwd = $_POST['passwd'];
  $enc = sha1($passwd);
  $dob = $y."-".$m."-".$d." ".$_POST["dob"];
  
  $sql = mysql_query("SELECT * FROM consultant WHERE email_address = '$email_address'");
if (mysql_num_rows($sql) == 0)
  {
  
  $sql = "INSERT INTO consultant VALUES (0,'".$first_name."','".$last_name."','".$address_first_line."','".$post_code."',
									 '".$email_address."','".$phone_number."','".$dob."','".$rate."','".$enc."')";
  $result = mysql_query ($sql, $connection)
    or die ("Couldn't perform query $sql <br />".mysql_error());
  header("Location: addconsultantform.php");
  exit();
  }
  else{
      $error =  $_POST['error'];
      $url = "Location: addconsultantform.php?error=".$error;
      header($url);
  exit();

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Add Consultant</title>

</head>

<body>

</body>
</html>

 

Link to comment
Share on other sites

it doesn't work like that.  as far as I can tell, $_POST['error'] is always going to be empty because the error does not come from your form. it comes from the SQL statement if the address already exists.

 

Considering you seem to only have one error condition, try this

 

addconsultant.php:

      $url = "Location: addconsultantform.php?error=true";
      header($url);

 

addconsultantform.php

<?php
  require "dbconn2.php";
  if(isset($_GET['error']) && $_GET['error']=='true') {
    echo '<h2>Sorry but an account with this email address already exists</h2>';
   }
  else {
     $sql="SELECT rate_id, rate FROM rate";
     $result=mysql_query($sql);
     $rate_option="";
     while ($row=mysql_fetch_array($result)) {
        $id=$row["rate_id"];
        $rate=$row["rate"];
        $rate_option.="<OPTION VALUE=\"$id\">".$rate;
     }
}
?>

 

Link to comment
Share on other sites

This works thanks mate. 8)

 

I made one change:

 

<?php
  require "dbconn2.php";

  if(isset($_GET['error']) && $_GET['error']=='true') {
    echo '<h2>Sorry but an account with this email address already exists</h2>';
   }

$sql="SELECT rate_id, rate FROM rate";
  $result=mysql_query($sql);
  $rate_option="";

while ($row=mysql_fetch_array($result)) {

    $id=$row["rate_id"];
    $rate=$row["rate"];
    $rate_option.="<OPTION VALUE=\"$id\">".$rate;
}

?>

This is now solved.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.