inkl kommentarer - håber eksemplet er bedre at tygge igennem nu. Ellers spørg, dét er hvad vi er her for
<?php
/*
Database queryen ligger vi i toppen, da du evt vil lave noget generelt og derfor kan det være smart at adskille denne
*/
$query = "SELECT * FROM table";
?>
<table>
<?php
/*
Udfør SQL kaldet og lig resourcen i $sql
*/
$sql = mysql_query($query) or die(mysql_error());
/*
Hvis antallet af rækker er større end 0
*/
if (mysql_num_rows($sql)) {
/*
Da vi i øverste række gerne vil angive felt navnene foruden data, vedligeholder vi en true/false der viser om détte er den første linie
*/
$first = true;
/*
Iterer query resultatet og lig den aktuelle linie i $foo. Ved at hente med _assoc fremfor _row gemmes disse med feltnavnet fremfor position, altså har vi $foo['feltnavn'] fremfor $foo[0]
*/
while ($foo = mysql_fetch_assoc($sql)) {
/*
Vores "husker" fra før, er $first true (første linie) så skal vi liste en række table headers med feltnavne
*/
if ($first) {
echo "<tr>\n";
/*
Funktionen each anvendes til at iterere resultatet i linien. Vi ved ikke hvor mange felter der er, så denne funktion er smart til at hente et vilkårlig antal. $key vil indeholde feltnavnet mens $val indeholder værdien af feltet
I table headers, er vi således interesseret i at skrive $key
http://dk.php.net/each*/
while (list($key, $val) = each($foo)) echo "<th>".$key."</th>\n";
echo "</tr>\n\n";
/*
Da vi senere igen skal anvende each metoden, og den interne pointer i PHP peger på slutningen af arrayet, skal dette resettes. En ting man ofte kan glemme og som er svær at finde i en debug process
*/
reset($foo);
/*
Vi har nu vist første linie og kan sætte værdien til false, således vi ikke for alle linier udskriver table headeren
*/
$first = false;
}
/*
På samme måde som ved table headeren, udskriver vi nu $val - der jo indeholdte selve værdien fra feltet.
*/
echo "<tr>\n";
while (list($key, $val) = each($foo)) echo "<td class=\"TDCenter\">".$val."</td>\n";
echo "<tr>\n\n";
}
}
?>
</table>