Ik heb de vraag al eens gesteld van de week, maar dat was alleen met een query. Ik denk dat daar weinig mee valt te doen. Het gaat hier om een voorraad database. Ik zet dit nu allemaal in een Excel file. Daar wordt ook gewerkt met een kruistabel. Maar ik wil dit dus binnen MySQL en PHP gaan doen. Daar dan enkele andere functies aan vast bouwen. In dat laatste zal ik geen problemen tegen gaan komen. Maar ik kom nu totaal niet verder. En dat begint mij nu een beetje te irriteren.
In ieder geval: ik ben nu al anderhalve week! bezig met een kruistabel binnen PHP. Hij doet in principe wel wat hij moet doen (hij zet de cijfers onder de juiste week en bij het juiste product) maar bij de indeling gaat het mis.
Als bij een product 4x (gaat per week) voorraad is ingegeven dan komt het product ook 4 x te voorschijn. Deze staan dan onder elkaar. Dat geldt dan ook voor de cijfers. Die gaan wel bij de juiste week maar die gaan ook naar 1 van die 4 producten. Ik heb dan in principe 4 regels per product. Terwijl dit allemaal in 1 regel moet staan. En de cijfers uiteraard ook (bij het juiste product).
Ik heb al geprobeerd te werken met een array maar daar kwam ik ook niet uit. Ik denk dat ik het moet gaan invullen via een loop, maar ook daar kom ik vast mee te zitten.
De code:
De Database tabellen (misschien gaat het hier mis):
Het zou dus zo moeten uitzien:
Product/Week 1 - 2 - 3
Product 1 11 - 22 - 31
Product 2 8 - 11 - 121
Weet iemand wat ik nog anders moet doen? Ik kom er maar niet op. Heb op verschillende trefwoorden gezocht (Matrix, kruistabel, crosstable, y-as, x-as en nog enkele) maar kan totaal niks vinden. Begin er nu aardig moedeloos van te worden. Wanneer mij iemand een stap in de goede richting kan geven dan ben ik deze persoon zeer dankbaar.
In ieder geval: ik ben nu al anderhalve week! bezig met een kruistabel binnen PHP. Hij doet in principe wel wat hij moet doen (hij zet de cijfers onder de juiste week en bij het juiste product) maar bij de indeling gaat het mis.
Als bij een product 4x (gaat per week) voorraad is ingegeven dan komt het product ook 4 x te voorschijn. Deze staan dan onder elkaar. Dat geldt dan ook voor de cijfers. Die gaan wel bij de juiste week maar die gaan ook naar 1 van die 4 producten. Ik heb dan in principe 4 regels per product. Terwijl dit allemaal in 1 regel moet staan. En de cijfers uiteraard ook (bij het juiste product).
Ik heb al geprobeerd te werken met een array maar daar kwam ik ook niet uit. Ik denk dat ik het moet gaan invullen via een loop, maar ook daar kom ik vast mee te zitten.
De code:
PHP:
<?php
// Datum herkennen
$datum =time () ;
$dag = date('d', $datum) ;
$week= date('w', $datum) ;
echo "<table>";
echo "<tr>";
echo "<td>";
echo "<b>Product</b>";
echo "</td>";
// Weken gaan weergeven
for ($week = 1; $week<=53; $week++) {
echo "<td>";
echo "<b>". $week ."</b>";
echo "</td>";
}
echo "</tr>";
// Query
$query = mysql_query("
SELECT *, COUNT(productid) AS aantal, EXTRACT(week FROM stock_datum) AS week,
EXTRACT(year FROM stock_datum) AS year
FROM voorraad
INNER JOIN voorraad_product ON voorraad_product.stockid = voorraad.stock_id
WHERE groepid = '3'
GROUP BY week, year, productid
ORDER BY productid
");
while($result = mysql_fetch_array($query))
{
$aantal = $result['aantal'];
$product = $result['productid'];
$weeks = $result['week'];
echo "<tr>";
// Product ophalen
echo "<td>";
echo "". $result['productid'] ."";
echo "</td>";
// Aantal weken creëren
for ($week = 1; $week<=53; $week++) {
// Kijken of er resultaat is in die week. Is dit niet dan cijfer 0 weergeven
if ($week != $weeks) {
echo "<td>";
echo "0";
echo "</td>";
}
else
{
echo "<td>";
echo "". $result['stock_amount'] ."";
echo "</td>";
}
}
echo "</tr>";
}
echo "</table>";
?>
De Database tabellen (misschien gaat het hier mis):
HTML:
Producten:
`productcode` varchar(250) NOT NULL,
`omschrijving` varchar(350) NOT NULL,
PRIMARY KEY (`productcode`)
Voorraad
`stock_id` int(11) NOT NULL AUTO_INCREMENT,
`groepid` int(11) NOT NULL,
`stock_amount` int(11) NOT NULL,
`stock_datum` datetime NOT NULL,
PRIMARY KEY (`stock_id`)
Voorraad Product
`productcode` varchar(200) NOT NULL,
`stockid` int(11) NOT NULL
Het zou dus zo moeten uitzien:
Product/Week 1 - 2 - 3
Product 1 11 - 22 - 31
Product 2 8 - 11 - 121
Weet iemand wat ik nog anders moet doen? Ik kom er maar niet op. Heb op verschillende trefwoorden gezocht (Matrix, kruistabel, crosstable, y-as, x-as en nog enkele) maar kan totaal niks vinden. Begin er nu aardig moedeloos van te worden. Wanneer mij iemand een stap in de goede richting kan geven dan ben ik deze persoon zeer dankbaar.