0

When trying to use json_encode from arrays in foreach() the data moves in to the next values, for example:

I have this table which is coming from the same query + php:

Table

when using json_encode to try and fit this tables data in to highcharts, my outcome is like this:

[{"name":"User1","data":[0,2,0,0]},{"name":"User2","data":[0,2,0,0,2,0,2,4]}]

So it's moving User1's data in to User2's

My desired outcome would be:

[{"name":"User1","data":[0,2,0,0]},{"name":"User2","data":[2,0,2,4]}]

This is my code:

$uniqueHours = array();
$series = array();
$data = array();

foreach ($pdo->query("SELECT DATEPART(HOUR, AL.EndDateTime) AS 'EndHour'
                    FROM ActivityLog AL
                    WHERE
                    ".$where."
                    ORDER BY AL.EndDateTime, 'EndHour' DESC") as $row)
{

    if ( in_array($row['EndHour'], $uniqueHours) ) {
        continue;
    }
    $uniqueHours[] = $row['EndHour'];
}

$ODsql = "SELECT * FROM Users";
foreach ($pdo->query($ODsql) as $row)
{

    echo '<tr>';

    $SCardNumber   = $row['CardNumber'];
    $SEmployeeName = $row['Username'];

    echo '<td>'.$SEmployeeName.'</td>';

    $chartValues = "";

    foreach($uniqueHours as $hour)
    {

        $countSQL= $pdo->prepare("SELECT DISTINCT(COUNT(AL.TerminalNumber)) AS TOTALS
                FROM ActivityLog AL, WavePick WP
                WHERE AL.TransactionType = 'SPK' AND WP.PickedQty > 0
                AND DATEPART(HOUR, AL.EndDateTime) = ".$hour."
                AND AL.StartDateTime >= '".$StartDate." 00:00:00.000' AND AL.EndDateTime <= '".$StartDate." 23:59:59.000'
                AND AL.OrderNumber = WP.OrderNumber
                AND AL.CardNumber = '".$SCardNumber."'
                ");
        $countSQL->execute();
        $result   = $countSQL->fetch(PDO::FETCH_OBJ);
        $row_count = $result->TOTALS;
        $totals[] = $result->TOTALS;

        echo '<td>'.$row_count.'</td>';


    }

    echo '</tr>';

    $series['name'] = $SEmployeeName;
    $series['data'] = $totals;
    array_push($data,$series);

}

I haven't actually put this in to the chart yet because the data is invalid. I am using this to return the outcome:

            echo "<div class='well'>";
print json_encode($results, JSON_NUMERIC_CHECK);
echo "</div>";

How can I make this data show only for each user it is linked to?

1 Answer 1

1

Before this loop:

foreach($uniqueHours as $hour) 

empty $total array with

 $total=array();
 foreach($uniqueHours as $hour) 
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.