login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Kruistabel mbv PHP/MySQL

Offline Ruultje - 22/03/2010 23:16 (laatste wijziging 23/03/2010 11:54)
Avatar van RuultjeNieuw 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
  1. <?php
  2. $datum =time () ;
  3. $dag = date('d', $datum) ;
  4. $week= date('w', $datum) ;
  5. $maand = date('m', $datum) ;
  6. $jaar = date('Y', $datum) ;
  7.  
  8. echo "<table>";
  9.  
  10.  
  11. $sql = "SELECT *, GROUP_CONCAT(productid SEPARATOR ':') AS productid,
  12. COUNT(stock_amount) AS amount,
  13. EXTRACT(week FROM stock_datum) AS week,
  14. DATE_FORMAT(stock_datum, '%w') AS weeks,
  15. EXTRACT(year FROM stock_datum) AS year
  16. FROM stock
  17. INNER JOIN stock_detail ON stock_detail.stockid = stock.stock_id
  18. WHERE subid = 3 AND YEAR(stock_datum) = '$jaar'
  19. GROUP BY WEEK(`stock_datum`), productid
  20. HAVING stock_amount > 0
  21. ORDER BY productid";
  22. $resultaat = mysql_query($sql) or die (mysql_error());
  23.  
  24. if (mysql_num_rows($resultaat) < 1) {
  25. echo "<table>";
  26. echo "<tr>";
  27. echo "<td>";
  28. echo "No Results";
  29. echo "</td>";
  30. echo "</tr>";
  31. echo "</table>";
  32. }
  33. else
  34. {
  35.  
  36.  
  37. $tabelrij=mysql_fetch_assoc($resultaat);
  38.  
  39. $weeks = $tabelrij['week'];
  40. $amount = $tabelrij['amount'];
  41.  
  42. echo "<tr>";
  43. echo "<td>";
  44. echo "<b>Product</b>";
  45. echo "</td>";
  46. for ($week = 1; $week<=52; $week++) {
  47. echo "<td>";
  48. echo "<b>". $week ."</b>";
  49. echo "</td>";
  50. }
  51. echo "</tr>";
  52.  
  53. while($row = mysql_fetch_array($resultaat)) {
  54.  
  55. $weeks = $row['week'];
  56. $amount = $row['amount'];
  57. $product = $row['productid'];
  58.  
  59. echo "<tr>";
  60. echo "<td>";
  61. echo "". $product ."";
  62. echo "</td>";
  63. for ($week = 1; $week<=52; $week++) {
  64. if ($week != $weeks) {
  65. echo "<td>";
  66. echo "0";
  67. echo "</td>";
  68. }
  69. else
  70. {
  71. echo "<td>";
  72. echo "". $row['stock_amount'] ."";
  73. echo "</td>";
  74. }
  75. }
  76. echo "</tr>";
  77. }
  78. echo "</table>";
  79. }
  80. ?>


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.

3 antwoorden

Gesponsorde links
Offline Filip - 22/03/2010 23:36
Avatar van Filip IRC guru Een join kan handig zijn voor je probleem denk ik..
Alhier vind je meer info..
Offline TotempaaltJ - 23/03/2010 07:55 (laatste wijziging 23/03/2010 07:55)
Avatar van TotempaaltJ PHP interesse Sorry, fout gelezen 
Offline Ruultje - 23/03/2010 11:57
Avatar van Ruultje Nieuw lid
nephilim schreef:
Een join kan handig zijn voor je probleem denk ik..
Alhier vind je meer info..


Dat zal het probleem niet zijn. De join die gebruik ik
Het gaat zich dus puur om het product. Deze moet maar 1x worden weergegeven. Wanneer die nu 3x voorkomt staat deze er drie keer. En dat moet dus gewoon 1x zijn.

Beetje lastig uit te leggen. Maar hopelijk is het een beetje duidelijk wat ik bedoel.


Heb de code een beetje aangepast zodat het makkelijkere leesbaar is.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.204s