Problem gelöst...
Kurz zusammengefasst war das Problem, das Ergebnis einer SQL-Abfrage auf mehrere Spalten nebeneinander und Zeilen untereinander zu verteilen - Mini-Beispiel oben im Code zur Veranschaulichung
Nicht ganz so komfortable wie in ASP mit Recordset.Next und Recordset.Previous, aber was soll's
Kurz zusammengefasst war das Problem, das Ergebnis einer SQL-Abfrage auf mehrere Spalten nebeneinander und Zeilen untereinander zu verteilen - Mini-Beispiel oben im Code zur Veranschaulichung
Nicht ganz so komfortable wie in ASP mit Recordset.Next und Recordset.Previous, aber was soll's
PHP:
<!-- --------------- begin MULTI-COLUMNS-TABLE --------------- -->
<?php
/*
Script zum erzeugen mehrer Spalten nebeneinander aus einer Abfrage
bzw. einem Recordset.
Bsp.:
| Spalte 1 | Spalte 2 | Spalte X
-------------------------|---------------|---------------
Zeile1 | Toyota<br> | Honda<br> | Fiat<br>
| 140 PS | 50 PS | 30 PS
| ... | ... | ...
-------------------------|---------------|---------------
Zeile2 | BMW<br> | Mercedes<br> | .....
| 100 PS | 10 PS |
| ... | ... |
-------------------------|---------------|---------------
Zeile3 | ... | ... | ....
*/
// SQL-Krams
$sql = "SELECT Stufen, PHP_Tauglichkeit FROM Planlos";
$mc_result = mysql_query($sql) or die("Couldn't execute query." );
$num_rows = mysql_num_rows($mc_result);
// Die wichtigen Sachen
$columns =3; // Anzahl gewünschter Spalten (außer 1... )
$i = 0; // Counter
// nächstgrößere Ganzzahl aus Division
$rows = ceil($num_rows / $columns);
// wieviel leere Zellen stehen am Ende?
$emptyCells = ($rows*$columns) - $num_rows;
// Wenn so wenig Datensätze da sind, dass sie alle in eine Reihe
// passen, dann brauchen wir keine leeren Zellen am Ende (um
// HTML-Konform gleich viele Zellen wie Spalten zu haben)
if ($rows = 1) {
$emptyCells = ($columns - $emptyCells);
}
// Unsere Tabelle
echo ("<table width=\"100%\">\n<tr>\n\t<th colspan=\"" . $emptyCells . "\">Server-Info</th>\n</tr>");
// Jeden Datensatz abklappern und Zeilen schreiben
while($row = mysql_fetch_array($mc_result)) {
// Wenn wir noch einen Datensatz haben und alle Spalten der
// Zeile "voll" sind: Neue Zeile starten
if($i != $rows && ($i%$columns == 0)) {
echo ("<tr>\n");
}
echo ("\t<td>");
// HIER FOLGT DER ZELLENINHALT
echo ("Deine Planlosigkeitsstufe: " .$row["Stufen"] . " ergibt deine PHP-tauglichkeit: " .$row["PHP_Tauglichkeit"]);
// ENDE ZELLENINHALT
echo ("\t</td>\n");
// Wenn wir nicht beim ersten Datensatz sind und die letzte
// Spalte durchhaben, dann Zeile schließen
if($i != 0 && $i%$columns == 0) {
echo ("</tr>\n");
// Nicht erster Datensatz UND es ist der letzter Datensatz UND
// leere Zellen >0<Spaltenzahl
// -> verbleibende Zellen schreiben und HTML-Konform sein...
} elseif ($i != 0 && $i+1 == $num_rows && $emptyCells != 0 && $emptyCells < $columns) {
echo ("\t<td colspan=\"" . ($emptyCells) . "\"></td>\n");
}
// Der i-te Datensatz ist durch... auf zum nächsten
$i++;
}
// Schließen der Tabelle
echo ("</tr>\n</table>\n");
?>
<!-- --------------- end MULTI-COLUMNS-TABLE --------------- -->
Zuletzt bearbeitet: