Я написал довольно грязную функцию, которая возвращает 3 поля в зависимости от того, совпадают ли они с другими полями. Он имеет 3 результата, основанных на конечном результате, он вернет результат 2.
public function ListRoomTotals($room, $date, $dateTo = null) {
// If dateTo hasn't been set, make it now
if(!isset($dateTo) or $dateTo == "") {
$dateTo = $date;
}
// Return an array with each bundle number and the quantity for each day
$scanner = $this->GetScannerNumber($room);
$sql = "SELECT * FROM `scanners` WHERE `Scanner` IN (";
foreach($scanner as $x) {
$sql .= $x . ",";
}
$sql .= "0)
AND `Date` BETWEEN '" . $date . "' AND '" . $dateTo . "'
GROUP BY `KordNo`, `BundleNumber`;";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
$sql = "SELECT `BundleReference`, `QtyIssued`, `WorksOrder`,
FROM `ArchiveBundle`
WHERE `KordNo` = '" . $row['KordNo'] . "'
AND `BundleNumber` = '" . $row['BundleNumber'] . "';";
$result2 = mysql_query($sql);
while($row = mysql_fetch_array($result2)) {
$sql = "SELECT `ArchiveBundle`.`QtyIssued`, `ArchiveBundle`.`WorksOrder`,
`ArchiveBundle`.`Colour`, `ArchiveBundle`.`Size`
FROM `ArchiveBundle`
WHERE `ArchiveBundle`.`KordNo` = '" . $x['KordNo'] . "' AND
`ArchiveBundle`.`BundleNumber` = '" . $x['BundleNumber'] . "';";
$result3 = mysql_query($sql);
$row = mysql_fetch_row($result3);
// Now we need to query what the product group is
$sql = "SELECT `Stock`.`ProductGroup`
FROM `Stock`, `TWOrder`
WHERE `TWOrder`.`WorksOrderNumber` = '" . $row[1] . "' AND
`TWOrder`.`Colour` = '" . $row[2] . "' AND
`TWOrder`.`Size` = '" . $row[3] . "' AND
`Stock`.`ProductCode` = `TWOrder`.`Product`;";
$result4 = mysql_query($sql);
$row2 = mysql_fetch_row($result4);
if(in_array($row2[0], array(50, 100, 150, 300 , 350 , 925 ,930, 940)))
{
while($row = mysql_fetch_array($result2)) {
if($row[0] != "") {
$final[] = $row;
} else {
$final[] = array("Can't find bundle number", "N/A");
}
}
}
return $final;
}
У меня есть цикл for, использующий функцию на странице, как показано ниже.
$result = $scanner->ListRoomTotals($_GET['room'], $_GET['date']);
$total = 0;
foreach($result as $x) {
$content .= "<tr>
<td>" . $x[0] . "</td>
<td>" . $x[1] . "</td>
</tr>";
$total += $x[1];
}
$weeklyTotal += $total;
$content .= "<tr><td>Total Pairage:</td><td>" . $total . " </td></tr>
<tr><td>Total Dozens:</td><td>" . number_format($total/12,2) . "</td></tr></table>
</td>
Я знаю, что это, вероятно, очень плохо написано, потому что это главная причина, по которой ничего не возвращается правильно. Есть ли у кого-нибудь совет, возможно, разделить его. Я довольно простой в php, так что мое понимание этого плохое. Спасибо.