login  Naam:   Wachtwoord: 
Registreer je!
 Forum

WHERE maar toch alle producten laten zien (Opgelost)

Offline Ruultje - 02/04/2010 11:24
Avatar van RuultjeNieuw lid Ik weet er geen duidelijke titel voor te geven. Het is de bedoeling dat er via een multiple formulier kan worden ingegeven wat de voorraad is en wat er weggegaan is de vorige periode. Deze staan naast elkaar. Dat gaat per groep (zeg maar klant). Alle producten moeten er dus staan. Bij voorraad gewoon blanco velden bij hetgeen wat weg is gegaan (sales) moet staan wat als laatste is neergezet. Maar dat moet dus per groep gaan. Echter wanneer ik de WHERE ga gebruiken in de query laat die alleen de producten zien die sales hebben. Hoe kan ik er voor zorgen dat hij toch alle producten laat zien en de juiste aantallen (sales) neerzet zoals die is van die groep (die in de WHERE staat).

Ik heb nu dit. Met WHERE geeft hij dus alleen de producten weer die al eens aantallen gehad hebben. Die er niet bij staan die worden niet weergeven. Dat moet dus wel.

  1. $idgroep = isset($_GET['groepid']) && trim($_GET['groepid'])!='' ? $_GET['groepid'] : '';
  2.  
  3. if ($idgroep == "")
  4. {
  5. echo "<br><br>";
  6. echo "<table class='stocks'>";
  7. echo "<tr>";
  8. echo "<td class='stockhead'> Choose group for inventory update </td>";
  9. echo "</tr>";
  10. echo "</table>";
  11.  
  12. }
  13.  
  14. else
  15.  
  16. {
  17.  
  18. echo "<table class='stocks'>";
  19. echo "<tr>";
  20. echo "<td class='stockhead'> Code </td>";
  21. echo "<td class='stockhead'> Productname </td>";
  22. echo "<td class='stockhead'> Stock </td>";
  23. echo "<td class='stockhead'> Sales </td>";
  24. echo "</tr>";
  25.  
  26. $sql="SELECT code, product_id, omschrijving, sales_amount, sub, sales_datum, groepid
  27. FROM producten
  28. LEFT JOIN sales ON producten.code = sales.product_id
  29. ORDER BY itemcode ASC, sales_datum ASC";
  30. $result = mysql_query($sql);
  31. $gegevens = array();
  32. while ($row = mysql_fetch_assoc($result)) {
  33.  
  34. $gegevens[$row["code"]] = array("sales_amount"=>$row["sales_amount"],"omschrijving"=>$row["omschrijving"]);
  35.  
  36. }
  37. foreach($gegevens as $productid => $data) {
  38. echo "<form method='post' action='index.php?page=addedinventory'>";
  39. echo "<tr>";
  40. echo "<td><input readonly='readonly' tabindex='-1' class='iteminventory' id='productid' name='productid[]' value='". $productid ."' ></td>" ;
  41. echo "<td><input readonly='readonly' tabindex='-1' class='productinventory' id='omschrijving' name='omschrijving[]' value=\"". $data['omschrijving'] ."\"></td>" ;
  42. echo "<td><input type='text' class='invetoryamount' id='stock_amount' name='stock_amount[]' onkeypress='onlyNumeric(arguments[0])'></td>" ;
  43. echo "<td><input type='text' class='invetoryamount' id='sales_amount' name='sales_amount[]' onkeypress='onlyNumeric(arguments[0])' value='". $data['sales_amount'] ."' ></td>" ;
  44. echo "<span style=style='display:none;'>";
  45. echo "<td><input type='hidden' class='invetoryamount' id='datum' name='datum[]' value='". date("Y-m-d H:i:j") ."' ></td>" ;
  46. echo "<span>";
  47. echo "<td><input type='hidden' class='invetoryamount' id='groepid' name='groepid[]' value='". $idgroep ."' ></td>" ;
  48. echo "<span>";
  49. echo "</tr>";
  50. }
  51. echo "<tr>";
  52. echo "<td colspan='6'><input type='submit' name='submit' value='Add Inventory' class='button'>
  53. </td>" ;
  54. echo "</tr>";
  55. echo "</form>";
  56. echo "</table>";
  57. }
  58. ?>

3 antwoorden

Gesponsorde links
Offline cloudstrife - 02/04/2010 12:48
Avatar van cloudstrife PHP beginner Probeer eens met een outer join.
Offline Jelmerholland - 02/04/2010 13:51
Avatar van Jelmerholland PHP beginner Waarom echo je trouwens je hele tabel? Is onnodig en onoverzichtelijk, als je alleen je kleine php stukje in je <?php ?> tags zet, dan wordt het (naar mijn mening overzichtelijker)
Offline Ruultje - 02/04/2010 15:34 (laatste wijziging 03/04/2010 01:18)
Avatar van Ruultje Nieuw lid
cloudstrife schreef:
Probeer eens met een outer join.


Bedankt. Hiermee is het gelukt. Kreeg eerst echter een foutmelding met een UNION ALL werkt het dan weer wel.

De code:
  1. SELECT code, product_id, omschrijving, sales_amount, sub, sales_datum,
  2. FROM sales
  3. LEFT OUTER JOIN producten ON sales.product_id = producten.code
  4. WHERE sub = '$idgroep'
  5. UNION ALL
  6. SELECT code, product_id, omschrijving, sales_amount, sub, sales_datum
  7. FROM sales
  8. RIGHT OUTER JOIN producten ON sales.product_id = producten.code
  9. WHERE sales_amount IS NULL
  10. ORDER BY code ASC


Jelmerhollan schreef:
Waarom echo je trouwens je hele tabel? Is onnodig en onoverzichtelijk, als je alleen je kleine php stukje in je <?php ?> tags zet, dan wordt het (naar mijn mening overzichtelijker)


Eigenlijk zo aangeleerd in het begin. Vandaar. Is nu een soort van automatisme. Hoewel ik ook wel eens tables buiten de <?php ?> zet maar dat is vrij zeldzaam. Al zie je dan wel wat html is en welke php. En dat is, inderdaad, wel handiger.

Edit:
Ik heb nu alleen een probleem. Ik wil dat alleen de laatste ingevulde waarde wordt getoond. Dus per product. Dat krijg ik nu niet meer voor elkaar.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.179s