Voor mijn voorraad wens ik de matenbalk horizontaal te halen uit de tabel.
Mijn tabel is als volgt :

ID Voorraad_ID Matenbalk Maat Aantal
1 1 1 S 1
2 1 1 M 2
3 1 1 L NULL
4 2 2 38 1
5 2 2 40 NULL
6 2 2 44 1

Mijn code is de volgende :
<?php
$qry = mysql_query( "SELECT * FROM voorraad_maten ORDER By Matenbalk, ID asc" );
$qryMinMax = mysql_query( "SELECT MIN(Voorraad_ID) as 'Min', MAX(Voorraad_ID) as 'Max' From voorraad_maten" );
$rowMax = mysql_fetch_array( $qryMinMax );
$max = $rowMax[ 'Max' ];
$min = $rowMax[ 'Min' ];
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Naamloos document</title>
</head>
<body>
<?php
echo "<table border='solid 1px' width=75%>";
for ( $i = $min; $i <= $max; $i++ ) {
echo "<tr>";
echo "<td align='center'> Balk-" . $i . "</td>";
while ( ( ( $row = mysql_fetch_array( $qry ) )and( $row[ 'Voorraad_ID' ] ) == $i ) ) {
if ( ( is_null( $row[ 'Aantal' ] ) ) ) {
$quant = 0;
} else {
$quant = $row[ 'Aantal' ];
}
echo "<th align='center'>" . $row[ 'Maat' ] . "</th>";
echo "<td align='center'>" . $quant . "</td>";
}
}
echo "</tr>";
echo "</table>";
?>
</table>
</body>
</html>

Het resultaat is niet in orde omdat ik graag het als volg had :
Balk 1 - S M L
1 2 0
Balk 2 - 38 40 44
1 0 1
Maar maat 38 valt weg en het aantal komt langs de maat ipv onder de maat.
Graag hulp aub...
Goed gedaan :D

Op regel 53 staat nog een mysqli_ functie. Die dien je te veranderen naar mysql_

(en eigenlijk zou je alles naar mysqli_ of PDO moeten veranderen maar bewaar dat nu maar even voor later).
Vanwege welke reden stap je niet direct over naar mysqli. Het is niet zo dat deze functie-bibliotheek opeens van mysql is veranderd naar mysqli. Sterker zelfs, het is al vanaf begin van PHP 5 al mogelijk om MySQLi te gebruiken.
:)
Los van al het bovenstaande, ben je hier niet appels en peren bij elkaar aan het gooien?

Wat voor producten betreft dit precies, want je meet letterlijk met twee maten: S, M en L en 38, 40 en 44. Is dit enerzijds (dames?)mode en anderzijds schoenen ofzo? Dit kun je niet echt met goed fatsoen op één hoop gooien? En wat als er dadelijk een maat (bijvoorbeels XS of XL, of 36) bij komt, dan komt het aantal kolommen met de andere maat mogelijk niet meer overeen?

Dan kan ik mij nog het volgende voorstellen: een concreet, fysiek product is de configuratie van een aantal kenmerken. Neem een t-shirt. Deze kan bijvoorbeeld een bepaalde halsvorm hebben, een bepaalde kleur, mogelijk met of zonder lange mouwen, en een maat et cetera. De unieke combinatie van al deze kenmerken vormt tezamen een concreet product, bijvoorbeeld een roze longsleeve maat XYZ met een v-hals.

Verschillende producten kunnen verschillende kenmerken met verschillende (specifieke) waarden bevatten. Het is dan niet bepaald vanzelfsprekend dat je die allemaal in eenzelfde tabel zet. Temeer als dit compleet verschillende categorieën (bijvoorbeeld "schoenen" of "ondergoed") betreft.

Ik zou als je een soort van voorraadbeheer wilt bijhouden eigenlijk meerdere tabellen (zowel in de database alsook de HTML :)) verwachten, waarbij je het een en ander rubriceert. En als de inventaris niet zo groot is, dan zou ik er misschien een platte lijst van maken, maar dan enkel met een titel (waar verder de kenmerken min of meer uit af te leiden zijn of op een andere manier een unieke productcode hebben ofzo) en een aantal.

Dit kun je in je databaseopzet ook een stuk beter uit de verf laten komen door de structuur verder uit te bouwen, waarbij deze eigenschappen beter tot hun recht komen. Deze is op dit moment waarschijnlijk verre van uitgenormaliseerd.

<?php
include "storescripts/locadatabase.php";
mysqli_select_db( $locadatabase, $database_locadatabase );
$qryRaadpleeg = "SELECT * FROM merken INNER JOIN (artikelen INNER JOIN voorraad ON artikelen.ArtikelCode = voorraad.Artikelcode) ON merken.MERKCODE = voorraad.Merknr" ;
$resultRaadpleeg= mysqli_query( $locadatabase, $qryRaadpleeg )or die( mysqli_error( $locadatabase ) );
$Aantal = mysqli_num_rows( $resultRaadpleeg );
$qryMaten = "SELECT * From voorraad_maten ORDER BY Matenbalk" ;
$resultMaten=mysqli_query( $locadatabase, $qryMaten )or die( mysqli_error( $locadatabase ) );
if ( $Aantal > 0 ) {
  echo "<table border='solid 1px' width=90% align='center'>";
  $tabel .= "<thead>";
  $tabel .= "<tr>";
  $tabel .= "<th>ID</th>";
  $tabel .= "<th>MERK</th>";
  $tabel .= "<th>ARTIKELNAAM</th>";
  $tabel .= "<th>KLEUR</th>";
  $tabel .= "<th>AP</th>";
  $tabel .= "<th>PRIJS 1</th>";
  $tabel .= "<th>PRIJS 2</th>";
  $tabel .= "<th>ARTIKEL</th>";
  $tabel .= "<th>AFDELING</th>";
  $tabel .= "<th>DATUM BIJVOEGING</th>";
  $tabel .= "<th>OMSCHRIJVING</th>";
  $tabel .= "</tr>";
  $tabel .= "</thead>";
   
  while ( $row = mysqli_fetch_array( $resultRaadpleeg ) ) {
    if ( $row[ 'Afdeling' ] == 1 ) {
      $afdeling = "Dames";
    } elseif ( $row[ 'Afdeling' ] == 2 ) {
      $afdeling = "Trend";
    } elseif ( $row[ 'Afdeling' ] == 3 ) {
      $afdeling = "Heren";
    } elseif ( $row[ 'Afdeling' ] == 4 ) {
      $afdeling = "Schoenen";
    } else {
      $afdeling = "Ander";
    }
    $rowMaten = mysqli_fetch_array( $resultMaten );
    $tabel .= "<tr>";
    $tabel .= "<td align='center'>" . $row[ 'ID' ] . "</td>";
    $tabel .= "<td align='center'>" . $row[ 'Merkomschrijving' ] . "</td>";
    $tabel .= "<td align='center'>" . $row[ 'Artikelnaam' ] . "</td>";
    $tabel .= "<td align='center'>" . $row[ 'Kleur' ] . "</td>";
    $tabel .= "<td align='right' style='padding-right:5px'>" . $row[ 'AP' ] . "</td>";
    $tabel .= "<td align='right' style='padding-right:5px'>" . $row[ 'VP' ] . "</td>";
    $tabel .= "<td align='right' style='padding-right:5px'>" . $row[ 'VP2' ] . "</td>";
    $tabel .= "<td align='center'>" . $row[ 'Omschrijving' ] . "</td>";
    $tabel .= "<td align='center'>" . $afdeling . "</td>";
    $tabel .= "<td align='center'>" . date( "d-m-Y", strtotime( $row[ 'datum_invoeging' ] ) ) . "</td>";
    $tabel .= "<td align='center'>" . $row[ 'omschrijving' ] . "</td>";
    do { // start een do-while lus voor iedere balk -->
      $currentBalk = $rowMaten[ 'Matenbalk' ]; // onthoud in welke balk we bezig zijn
      do { // start een do-while lus voor iedere kledingmaat
        $tabel .= '<td>' . $rowMaten[ 'Maat' ] . '</td>';
        $tabel .= '<td>[' . $rowMaten[ 'Aantal' ] . ']</td>';
        $rowMaten = mysqli_fetch_array( $qryMaten ); // haal de volgende rij op!

      } while ( $rowMaten && $currentBalk == $rowMaten[ 'Matenbalk' ] ); // zolang we nog een nieuwe rij konden ophalen EN de nieuwe rij bij de huidige balk hoort.
    } while ( $rowMaten ); //zolang we nog een nieuwe rij konden ophalen 

  }
  $tabel .= "</table>";
  
}
mysqli_close( $locadatabase );
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Webshop BackOffice Voorraad</title>
<style>
td {
    color: black;
}
thead {
    color: black;
}
</style>
</head>

<body>

<?php include_once("../Hoofding.html") ?>
<div align="center">
<p align="right" style="padding-right: 5%;"><?php echo date('d-m-Y H:m'); ?></p>
<br />
<div align="center">
  <?php
  echo $tabel;
  ?>
</div>
</body>
</html>


[size=xsmall]Toevoeging op 30/09/2019 23:59:44:[/size]

Reageren