Akriti Anand
Akriti Anand

Reputation: 186

PHP session variable echoing incorrectly

I have the following code:

<?php
    session_start();
?>
<html>
<head>
    <title>Dashboard</title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
    <button id="openjob">View open job requests</button>
    <button id="jobtoday">View all job requests today</button>
    <div id="responsecontainer"></div>

    <script type="text/javascript">
    $('#openjob').click(function() {

    <?php  
        $_SESSION["flag"] = 0;
    ?>

    $.ajax({
    type: "GET",
    url: "cssdashsubmit.php",             
    dataType: "html",   //expect html to be returned                
    success: function(response){                    
        $("#responsecontainer").html(response); 
       }
    });    

    });

    $('#jobtoday').click(function() {

    <?php  
        $_SESSION['flag'] = 1;
    ?>

    $.ajax({
    type: "GET",
    url: "cssdashsubmit.php",             
    dataType: "html",   //expect html to be returned                
    success: function(response){                    
        $("#responsecontainer").html(response); 
    }
    });    

    });
    </script>
</body>
</html>

cssdashsubmit.php includes

    session_start();
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit(); 
    }

    echo $_SESSION['flag'];

    if (isset($_SESSION['flag']) && $_SESSION["flag"] === 0) {
    $sql = "SELECT * FROM Ticket WHERE ticket_close_open = 'open'";
    $result = $link->query($sql);

    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()){
            echo $row['ticket_id'];
            echo $row['ticket_equipment'];
        }
    }
    unset($_SESSION['flag']);
    }

    if (isset($_SESSION['flag']) && $_SESSION["flag"] === 1) {
    $sql = "SELECT * FROM Ticket WHERE DATE(ticket_open_datetime) = date('Ymd')";
    $result = $link->query($sql);

    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()){
            echo $row['ticket_id'];
            echo $row['ticket_equipment'];
        }
    }
    unset($_SESSION['flag']);
    }
    ?>

Now when I click on the buttons, it always echoes 3, irrespective of which button I click. I've tried changing the session variable name, but it still persists. Can anybody point where I am erroring?

Upvotes: 1

Views: 35

Answers (1)

u_mulder
u_mulder

Reputation: 54831

Instead of session - use simple url parameter:

$('#openjob').click(function() {
    $.ajax({
    type: "GET",
    url: "cssdashsubmit.php?type=jobs",             
    dataType: "html",   //expect html to be returned                
    success: function(response){                    
        $("#responsecontainer").html(response); 
       }
    });    
});

$('#jobtoday').click(function() {
    $.ajax({
    type: "GET",
    url: "cssdashsubmit.php?type=requests",             
    dataType: "html",   //expect html to be returned                
    success: function(response){                    
        $("#responsecontainer").html(response); 
    }
    });  
});

On server side code can be:

session_start();
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit(); 
}

switch ($_GET['type']) {
    case "jobs":
        $sql = "SELECT * FROM Ticket WHERE ticket_close_open = 'open'";
        break;

    case "requests":
        $sql = "SELECT * FROM Ticket WHERE DATE(ticket_open_datetime) = date('Ymd')";
        break;
}
$result = $link->query($sql);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()){
        echo $row['ticket_id'];
        echo $row['ticket_equipment'];
    }
}

Upvotes: 1

Related Questions