Hallo,

Ik ben bezig een systeempje te maken waarin je je eigen SELECT-query kunt laten draaien.
Nu heb ik een werkend systeem, alleen wordt hierbij steeds de eerste rij niet weergegeven. Iemand enig idee wat ik verkeerd doe?
(Dit is de versie zonder foutafhandeling etc, alleen relevante code en een voorbeeld-query)

<?php
$query = mysql_query("SELECT liednr, bun, titel FROM bundel WHERE bun = 'eig' ORDER BY liednr ASC");
$aFields = array();
$row = mysql_fetch_assoc($query);
$koppen = array_keys($row);

$aantal = mysql_num_rows($query);
echo 'Er zijn '.$aantal.' rijen gevonden';

// Haal de kolomtitels op
echo '<table border=1 bordercolor=black>
		<tr><td>#</td>';
	foreach($koppen as $kop){
		echo '<td>'.$kop.'</td>';
		// Zet de kolomtitels in een array voor later gebruik
		array_push($aFields, $kop);
	}
echo '</tr>';

// Rij-counter
$i=1;

// Geef de gegevens weer
while($bRow=mysql_fetch_array($query)){
	echo '<tr>';
		echo '<td>'.$i.'</td>';
		foreach($aFields as $sField) {
			$bRow[$sField] = htmlentities($bRow[$sField]);
			// Kort de gegevens in als deze langer dan 50 karakters is
			if(strlen($bRow[$sField]) > 50){
				$bRow[$sField] = substr ($bRow[$sField],0,50).'...';
			}
			echo '<td>'.$bRow[$sField].'</td>';
		}
	echo '</tr>';
	$i++;
}

echo '</table>';
?>

In dit voorbeeld zou ik 40 rijen moeten krijgen. Er komt ook keurig: "Er zijn 40 rijen gevonden" te staan, dus de mysql_num_rows werkt wel goed. Er komen echter maar 39 rijen in de tabel te staan
Maar dat is natuurlijk NIET de oplossing. Gewoon de array weer resetten.
Waarom is dat NIET de oplossing? Twee keer fetchen als je het maar 1 keer nodig hebt kost meer resources dan een enkele counter (wat ook nog een bit mag zijn als je alleen wil weten of het de eerste rij is of niet).

Reageren