Help.
ik heb een database in sql. 1 kolom hiervan wil ik weergeven in een tabel van 4 kolomen en 4 rijen. nu lukt het niet me niet om steeds 16 records over 4 kolomen te verdelen.

$showquery = mysql_query("SELECT * FROM artikel WHERE internetgroep = $k LIMIT $beginaantal, 16");
while($show = mysql_fetch_object($showquery))
Zoals je waarschijnlijk wel doorhebt, gaat het om de code in je while-lus.

<?php
echo '<table>';
$x = 0;
while ($show = mysql_fetch_object($showquery)) {
if ($x % 4 == 1) { echo "<tr>" };
if ($x % 4 == 0) { echo "</tr>"};
echo "<td>$show->kolomnaam</td>";
$x++;
}
echo "</table>";
?>

Je mysql_query kan trouwens een stuk lichter door * te vervangen door de naam van de kolom die je wilt hebben.
Edwin Gozeling schreef op 05.11.2005 20:33
Zoals je waarschijnlijk wel doorhebt, gaat het om de code in je while-lus.

<?php
echo '<table>';
$x = 0;
while ($show = mysql_fetch_object($showquery)) {
if ($x % 4 == 1) { echo "<tr>" };
if ($x % 4 == 0) { echo "</tr>"};
echo "<td>$show->kolomnaam</td>";
$x++;
}
echo "</table>";
?>

Je mysql_query kan trouwens een stuk lichter door * te vervangen door de naam van de kolom die je wilt hebben.


Moet het niet zo?

<?php
echo '<table>';
$x = 0;
while ($show = mysql_fetch_object($showquery)) {
if ($x % 4 == 0) { echo "<tr>"};
echo "<td>$show->kolomnaam</td>";
$x++;
if ($x % 4 == 0) { echo "</tr>" };
}
echo "</table>";
?>
Helaas werkt het bij geen van de twee.
Als je van tevoren weet dat het *altijd* om zestien records gaat, kun je een for loop in een for loop maken.
Zo moet het werken:
<?php
echo '<table>';
$x = 0;
while ($show = mysql_fetch_object($showquery)) {
if (($x % 4) == 0) { echo "<tr>"};
echo "<td>$show->kolomnaam</td>";
$x++;
if (($x % 4) == 0) { echo "</tr>" };
}
echo "</table>";
?>

Edit: kolomnaam moet je dus wel een 'echte' naam van maken.
@SanThe : inderdaad, mijn volgorde had de eerste record buiten de regel gezet, en </tr> voor een <td>.

@Jan Koehoorn : LIMIT $beginaantal, 16
Zolang er voldoende records zijn (gemeten vanaf $beginaantal) zijn er 16 records.

Bij de lagere zal ook het ide van SanThe en mij niet goed werken, omdat de laatste rij te weinig vakjes heeft, en niet afgesloten zal worden.

@vince : Hoe worden $k en $beginaantal bepaald? Indien GET/POST, heb je ze wel beveiligd?

Reageren