Nieuw lid |
|
Ik zou graag een voorraad tabel willen maken. Dit gebeurt nu via excel, maar ik wil dit graag laten lopen via PHP en MySQL.
Aan de linkerkant moeten de productnamen staan, bovenaan de weeknummers. Het is dus de bedoeling hoeveel voorraad er nog van een product is per week (zo kan er ook teruggekeken worden en zo kan er alvast vooruit gerekend worden in een later stadium). Dit wordt allemaal ingeladen via een Excelfile.
Maar nu is mijn volgende probleem:
De weeknummers worden goed weergegeven en hij zet ook de voorraad altijd onder de juiste week. Maar wanneer een product in drie weken voorraad heeft gehad dan staat die productnaam aan de linkerkant ook drie keer weergegeven. Maar dat is dus niet de bedoeling. Hij zou alle voorraad getallen naast elkaar moeten zetten en dus onder de juiste week.
Zo dus
Week || 1 || 2 || 3
Product1 || 11 || 14 || 6
Product 2 || 4 || 11 || 24
Maar nu is het zo
Week || 1 || 2 || 3
Product1 || 11 || 0 || 0
Product1 || 0 || 14 || 0
Product1 || 0 || 0 || 6
Product2 || 4 || 0 || 0
Dit is de code
<?php
$datum =time () ;
$dag = date('d', $datum) ;
$week= date('w', $datum) ;
$maand = date('m', $datum) ;
$jaar = date('Y', $datum) ;
echo "<table>";
$sql = "SELECT *, GROUP_CONCAT(productid SEPARATOR ':') AS productid,
COUNT(stock_amount) AS amount,
EXTRACT(week FROM stock_datum) AS week,
DATE_FORMAT(stock_datum, '%w') AS weeks,
EXTRACT(year FROM stock_datum) AS year
FROM stock
INNER JOIN stock_detail ON stock_detail.stockid = stock.stock_id
WHERE subid = 3 AND YEAR(stock_datum) = '$jaar'
GROUP BY WEEK(`stock_datum`), productid
HAVING stock_amount > 0
ORDER BY productid";
$resultaat = mysql_query($sql) or die (mysql_error());
if (mysql_num_rows($resultaat) < 1) {
echo "<table>";
echo "<tr>";
echo "<td>";
echo "No Results";
echo "</td>";
echo "</tr>";
echo "</table>";
}
else
{
$tabelrij=mysql_fetch_assoc($resultaat);
$weeks = $tabelrij['week'];
$amount = $tabelrij['amount'];
echo "<tr>";
echo "<td>";
echo "<b>Product</b>";
echo "</td>";
for ($week = 1; $week<=52; $week++) {
echo "<td>";
echo "<b>". $week ."</b>";
echo "</td>";
}
echo "</tr>";
while($row = mysql_fetch_array($resultaat)) {
$weeks = $row['week'];
$amount = $row['amount'];
$product = $row['productid'];
echo "<tr>";
echo "<td>";
echo "". $product ."";
echo "</td>";
for ($week = 1; $week<=52; $week++) {
if ($week != $weeks) {
echo "<td>";
echo "0";
echo "</td>";
}
else
{
echo "<td>";
echo "". $row['stock_amount'] ."";
echo "</td>";
}
}
echo "</tr>";
}
echo "</table>";
}
?>
<?php $dag = date('d', $datum) ; $week= date('w', $datum) ; $maand = date('m', $datum) ; $jaar = date('Y', $datum) ; $sql = "SELECT *, GROUP_CONCAT(productid SEPARATOR ':') AS productid, COUNT(stock_amount) AS amount, EXTRACT(week FROM stock_datum) AS week, DATE_FORMAT(stock_datum, '%w') AS weeks, EXTRACT(year FROM stock_datum) AS year FROM stock INNER JOIN stock_detail ON stock_detail.stockid = stock.stock_id WHERE subid = 3 AND YEAR(stock_datum) = '$jaar' GROUP BY WEEK(`stock_datum`), productid HAVING stock_amount > 0 ORDER BY productid"; } else { $weeks = $tabelrij['week']; $amount = $tabelrij['amount']; for ($week = 1; $week<=52; $week++) { echo "<b>". $week ."</b>"; } $weeks = $row['week']; $amount = $row['amount']; $product = $row['productid']; for ($week = 1; $week<=52; $week++) { if ($week != $weeks) { } else { echo "". $row['stock_amount'] .""; } } } } ?>
Wat moet ik anders doen zodat het product maar 1x wordt weergegeven en die getallen dus naast elkaar staan onder de juiste week.
Ik heb nu zoveel geknutseld dat ik de hele code niet eens meer begrijp.
|