0

The redirect in the else part is getting executed on page load. I want to execute it only on execution of an insert.

 $conn = new mysqli($hn, $un, $pw, $db);
 if ($conn->connect_error) die($conn->connect_error);

    $query    = "INSERT INTO colombia_plaza_new (lease_owner,request_poster,email,address,start_date,end_date,expected_rent, is_deposit,notes)  VALUES" .
      "('$name','$pos_name', '$email', '$apart', '$start', '$end', '$rent', '$deposit', '$how')";


    $result   = $conn->query($query);


if (!$result) 
    {
        echo "INSERT failed: $query<br>" .
      $conn->error . "<br><br>";
      $checksum=1;
      $conn->close();
    }

    else
    {
        $conn->close();

        echo "<meta http-equiv=\"refresh\" content=\"0;URL=page3.html\">"; 
    }
Kevin
  • 41,694
  • 12
  • 53
  • 70

4 Answers4

0

You should use this to redirect in PHP....

header("Location: http://www.blah.com/blah_blah_blah.php");
CommonKnowledge
  • 769
  • 1
  • 10
  • 35
0

Your var $result will always have a value, so your if-statement is incorrect. Try to use mysqli_affected_rows to see how many rows are affected. If rows affect > 0 redirect.

Aiken
  • 272
  • 1
  • 8
0

It seems you have made some musqli error.You may try as follows.

<?php
    $conn = mysqli_connect($hn, $un, $pw, $db);
    if (mysqli_connect_errno()) {
        die(mysqli_connect_error());
    }
    $query = "INSERT INTO colombia_plaza_new (lease_owner,request_poster,email,address,start_date,end_date,expected_rent, is_deposit, notes)  VALUES ('$name','$pos_name', '$email', '$apart', '$start', '$end', '$rent', '$deposit', '$how')";

    $result   = $conn->query($query);
    if(!mysqli_query($conn,$query)){
        echo "INSERT failed: ".$query."<br>";
        echo mysqli_error($conn);. "<br><br>";
        $checksum = 1;
    }else{
        mysqli_close($conn);
        echo "<meta http-equiv=\"refresh\" content=\"0;URL=page3.html\">"; 
    }
?>
0

Change your conditional method. If successful, redirect; else show that it failed.

$conn = new mysqli($hn, $un, $pw, $db);

 if ($conn->connect_error) {
    die('Connect Error: ' . $conn->connect_error);
}

    $query = "INSERT INTO colombia_plaza_new (lease_owner,request_poster,email,address,start_date,end_date,expected_rent, is_deposit,notes)  VALUES" .
      "('$name','$pos_name', '$email', '$apart', '$start', '$end', '$rent', '$deposit', '$how')";

    $result   = $conn->query($query);

if ($result) 
    {
        echo "<meta http-equiv=\"refresh\" content=\"0;URL=page3.html\">";
        $conn->close();
    }

    else
    {
        echo "INSERT failed: $query<br>" .
        $conn->error . "<br><br>";
        $checksum=1;
        $conn->close();
    }

Using mysqli_affected_rows() is another option.

$conn = new mysqli($hn, $un, $pw, $db);

 if ($conn->connect_error) {
    die('Connect Error: ' . $conn->connect_error);
}

    $query = "INSERT INTO colombia_plaza_new (lease_owner,request_poster,email,address,start_date,end_date,expected_rent, is_deposit,notes)  VALUES" .
      "('$name','$pos_name', '$email', '$apart', '$start', '$end', '$rent', '$deposit', '$how')";

    $result   = $conn->query($query);

    if (mysqli_affected_rows($conn) > 0){
        echo "<meta http-equiv=\"refresh\" content=\"0;URL=page3.html\">";
        $conn->close();
    }

    else
    {
        echo "INSERT failed: $query<br>" .
        $conn->error . "<br><br>";
        $checksum=1;
        $conn->close();
    }

  • However, another reason for this may be because your query may have failed.

Therefore, you'd be best to check if all your variables have indeed been filled and most likely coming from an HTML form, and using a conditional !empty() for all of them.

At this point, it is unclear where and how your variables are being assigned.


Sidenote: Your present code is open to SQL injection. Use mysqli with prepared statements, or PDO with prepared statements, they're much safer.

Community
  • 1
  • 1
Funk Forty Niner
  • 74,450
  • 15
  • 68
  • 141