I'm pulling data from a table in two different queries, and I am trying to compare the date field from both results. When the date is equal I want to add the two ending balances from each query together and put the results into a new array. The problem I am having is on line 59
, The error I get is Notice: Undefined offset
.
This is what I have:
include "../sqlConnect.php";
mysqli_set_charset($dbScrap, 'utf8');
$dataArray[] = array();
$dateArray[] = array();
$balanceArray[] = array();
//Smaller
$query = "SELECT Account, Date ,SUM(EndingBalance) AS 'Month_Total' FROM gl_period_posting_history
INNER JOIN gl_account
ON gl_period_posting_history.AccountKey = gl_account.AccountKey
Where gl_account.Account= '5010-15-0000' AND FiscalYear > 2012
GROUP BY Account, Date";
$result = mysqli_query( $dbScrap, $query) or die("SQL Error 1: " .
mysqli_error($dbScrap));
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){
$EndingBalance15 = $row['Month_Total'];
$Date15 = $row['Date'];
$dateArray[] = array(
'Date' => $Date15
);
$balanceArray[] = array(
'EndingBalance' => $EndingBalance15
);
}
\\Bigger
$query1 = "SELECT Account, Date ,SUM(EndingBalance) AS 'Month_Total' FROM gl_period_posting_history
INNER JOIN gl_account
ON gl_period_posting_history.AccountKey = gl_account.AccountKey
Where gl_account.Account ='5010-08-0000' AND FiscalYear > 2012
GROUP BY Account, Date";
$result = mysqli_query( $dbScrap,$query1) or die("SQL Error 1: " . mysqli_error($dbScrap));
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)){
$Date08 = $row['Date'];
$EndingBalance08 = $row['Month_Total'];
for($i = 0; $i < $dateArray; $i++){
if($Date08 == $dateArray[$i]) {
$message = "Date Equal";
$EndingBalance = $EndingBalance08 + $balanceArray[$i];
$Date = $Date08;
}else{
$message = "Date Not Equal";
$Date = $Date08;
$EndingBalance = $EndingBalance08;
}
}
$dataArray[] = array(
'EndingBalance' => $EndingBalance,
'Date' => $Date,
'Message' => $message
);
}
echo "<pre>";
print_r($dataArray);
//echo json_encode($dataArray);
echo "</pre>";
$result->close();
/* close connection */
$dbScrap->close();
Thank you for your help.
In the loop where you fetch results from your first query, use the date from each row as the key in $balanceArray
, like this:
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
$EndingBalance15 = $row['Month_Total'];
$Date15 = $row['Date'];
$balanceArray[$Date15] = $EndingBalance15;
}
Then in the loop where you fetch results from your second query, you can use isset
to check if that date exists in the results from the first query, like this.
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
$Date08 = $row['Date'];
$EndingBalance08 = $row['Month_Total'];
if (isset($balanceArray[$Date08])) {
$message = "Date Equal";
$EndingBalance = $EndingBalance08 + $balanceArray[$Date08];
} else {
$message = "Date Not Equal";
$EndingBalance = $EndingBalance08;
}
$dataArray[] = array(
'EndingBalance' => $EndingBalance,
'Date' => $Date08,
'Message' => $message
);
}
The problem is in for loop, correction:
for ($i = 0; $i < count($dateArray); $i++){