user8621142
user8621142

Reputation:

On refresh, values keep adding in drop down

Code:

public function getEmployeeId() {
        if (!isset($_SESSION["email"]) || !isset($_SESSION["passwrd"])) {
            header("Location:index.php");
            // Cannot Access this page without Login.
        }


            $_SESSION['ids'][] = "";
            $query = mysqli_query($this->connection, "SELECT EmployeeId from employees where EmployeeId NOT IN(Select EmployeeId from employeeprofile)") or die("Query execution failed: " . mysqli_error());
            while ($row = $query->fetch_assoc()) {
                // Push the id to the array.
                $_SESSION['ids'][] = $row["EmployeeId"];
            }


    }

Values are coming from database and whenever I refresh duplicate values are added. I don't know what to do.

Upvotes: 0

Views: 26

Answers (1)

Rajdeep Paul
Rajdeep Paul

Reputation: 16963

That's because every time you refresh the page, (probably with every getEmployeeId() method call) SQL query gets executed and employee ids gets appended to $_SESSION['ids'] array. You need to encapsulate that block of code inside an if block.

public function getEmployeeId() {
    if (!isset($_SESSION["email"]) || !isset($_SESSION["passwrd"])) {
        header("Location:index.php");
        exit();
    }

    if(!isset($_SESSION['ids']) && count($_SESSION['ids']) == 0){
        $_SESSION['ids'][] = "";
        $query = mysqli_query($this->connection, "SELECT EmployeeId from employees where EmployeeId NOT IN(Select EmployeeId from employeeprofile)") or die("Query execution failed: " . mysqli_error());
        while ($row = $query->fetch_assoc()) {
            $_SESSION['ids'][] = $row["EmployeeId"];
        }   
    }
}

Sidenote: You need to add exit(); after header(...); statement, because header(...); alone itself is not sufficient to redirect the user to a different page.

Upvotes: 1

Related Questions