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...
Wordt het niet tijd om over te stappen op mysqli of PDO?
Want de oude mysql_xxxx() functies zou je eigenlijk al niet meer moeten gebruiken omdat deze PHP-versies verouderd zijn.
Dus eigenlijk wil je alle records onder elkaar hebben in een bepaalde volgorde en een scheiding maken wanneer er aan een nieuwe balk wordt begonnen?

En wat Ariën zegt.. mysql_ functies worden in de nieuwste php versies niet meer ondersteund.

$qry = mysql_query(..) ==> mysql_query geeft een resultaat terug en geen query! Toepasselijke namen voor je variabelen gebruiken is ook zo een ding tussen een opgeruimd huis en wanorde :-)

Ja dat is een leuke voor een dubbele do{ .. }while(); lus..

<?php
$query = 'SELECT * FROM maten ORDER BY balk';
$result = mysqli_query($con, $query);

if(false === $result) {
    echo mysqli_error($con);
    die();
}

$row = mysqli_fetch_assoc($result); // haal de eerste rij op

?>
<html>
    <head>
        <meta charset="UTF-8">
        <title>test</title>
    </head>
    <body>
        <?php if($row): ?> <!-- als er een rij beschikbaar was -->
        <table>
            <tbody>
                <?php do { ?> <!-- start een do-while lus voor iedere balk -->
                <tr>
                    <th><?php echo 'Balk-' . $row['balk']; ?></th>
                    <?php 
                        $currentBalk = $row['balk']; // onthoud in welke balk we bezig zijn
                        do { // start een do-while lus voor iedere kledingmaat
                            echo '<td>' . $row['maat'].'</td>';
                            echo '<td>[' . $row['aantal'].']</td>';
                            $row = mysqli_fetch_assoc($result); // haal de volgende rij op!
                        }while($row && $currentBalk == $row['balk']); // zolang we nog een nieuwe rij konden ophalen EN de nieuwe rij bij de huidige balk hoort.
                    ?>
                </tr>
                <?php }while($row); ?> <!-- zolang we nog een nieuwe rij konden ophalen -->
            </tbody>
        </table>
        <?php else: ?>
            geen resultaten gevonden.
        <?php endif; ?>
    </body>
</html>


De kolomnamen moet je wel even aanpassen, en ik heb geen mysql_ functies beschikbaar..
Bedankt voor hulp.
Het is gelukt... Maar ik moet dit nu integreren in een grotere tabel. En dat lukt mij niet zo meteen.
Mag ik de totale code doorgeven ?? Wellicht kun je me hiermee op weg helpen.
Laat je relevante code (geen tientallen regels) maar zien tussen code-tags.
bedankt
Kan je het tussen code-tags zetten? (Zie opmaakcodes in Veelgestelde Vragen). Dan is het wat beter leesbaarder.

Reageren