Datensätze beim Auslesen in 4 Spalten aufteilen
andreas
- php
Hallo
ich lese aus der DB eine Tabelle aus die z.B. in 4 Spalten angezeigt werden
sollen?
z.B. für eine Bildergallerie
hier ein Kurzauszug meines Scriptes:
$bilder = mysql_query("select * from bild");
while ($zeile1 = mysql_fetch_array($bilder))
{
echo "<tr>";
echo "<td><img src='bilder/".$zeile1["bild"]."' border='1'></td>";
echo "<tr>";
<?
}
?>
Hier wird alls untereinander Dargestellt
lasse ich die <tr></tr> weg wird alles neben einander Dargestellt
Danke
Hallo!
$bilder = mysql_query("select * from bild");
while ($zeile1 = mysql_fetch_array($bilder))
{
echo "<tr>";
echo "<td><img src='bilder/".$zeile1["bild"]."' border='1'></td>";
echo "<tr>";
<?
}
?>
Hier wird alls untereinander Dargestellt
lasse ich die <tr></tr> weg wird alles neben einander Dargestellt
Klar! Denn bei jedem <tr> wird eine neue Zeile begonnen. Am besten schreibst Du eine verschachtelte Schleife (die <td>'s innen, und die <tr>'s aussen).
Gruß,
Peter
Hallo
Klar! Denn bei jedem <tr> wird eine neue Zeile begonnen. Am besten schreibst Du eine verschachtelte Schleife (die <td>'s innen, und die <tr>'s aussen).
und wie am besten?
Danke
Hallo zusammen,
da ist wohl jetzt was quer gelaufen?
Ich habe die Frage so verstanden:
Ich erhalte durch eine Abfrage ein Resultset das n Datensätze enthält. Die will ich in einem vierspaltigen Satz darstellen.
Datensatz 1 Datensatz 6 Datensatz 11 Datensatz 16
Datensatz 2 Datensatz 7 Datensatz 12 Datensatz 17
Datensatz 3 Datensatz 8 Datensatz 13 Datensatz 18
Datensatz 4 Datensatz 9 Datensatz 14
Datensatz 5 Datensatz 10 Datensatz 15
Denn die andere Darstellung:
Datensatz 1 Datensatz 2 Datensatz 3 Datensatz 4
dürfte ja wohl keine Kopfschmerzen bereiten, oder?
Bei der oberen Darstellung kann ich folgendermaßen vorgehen:
Ich besorge mir die Anzahl der Datensätze im Resultset
$spaltenzahl = 4;
// hier das Query: $res= .....
if ($res)
{
$anzahl = mysql_num_rows($res);
}
else
{
echo "Fehler in der Datenbankabfrage";
}
$zeilenzahl = ceil($anzahl/$spaltenzahl);
//und dann die Ausgabe:
echo "<table ...>":
echo "<tr ...>";
$spalte=0;
while($spalte<$spaltenzahl)
{
echo "<td ... nowrap>";
$zeile=0;
while ($zeile<$zeilenzahl)
{
$zeile++;
$zeilenarray=mysql_fetch_row($res);
echo $zeilenarray[x]; // x ist das auszugebende Feld
echo "</td>";
}
$spalte++;
}
echo "</tr>";
echo "</table>";
Habe es nicht ausprobiert, aber so müsste es funktionieren.
Grüße aus http://www.braunschweig.de
Tom
Servus beisammen,
Denn die andere Darstellung:
Datensatz 1 Datensatz 2 Datensatz 3 Datensatz 4
dürfte ja wohl keine Kopfschmerzen bereiten, oder?
Aber ich fürchte genauso hat er es ursprünglich gemeint. Also die simple Lösung.
if($res)
for($Zeilen=0; $Zeilen<=mysql_num_rows($res); $Zeilen++){
echo "<tr>";
for($Spalten=0; $Spalten<=4; $Spalten++) {
echo "<td>......</td>";
}
echo "</tr>";
}
}
Das mal jetzt nur ganz kurz, knapp und schnörkellos für die Ausgabe. Aber SO habe ich die Frage verstanden. Vielleicht bekommen wir von Andreas aber nochmal Aufklärung, wie er es jetzt genau gemeint hat :-))
Grüße aus http://www.braunschweig.de
Schönen Gruß aus Trier *g*
Hallo miteinander!
if($res)
for($Zeilen=0; $Zeilen<=mysql_num_rows($res); $Zeilen++){
echo "<tr>";
for($Spalten=0; $Spalten<=4; $Spalten++) {
echo "<td>......</td>";
}
echo "</tr>";
}
}
genau desterwegen mag ich PHP überhaupt nicht, das Erkennen der Funktionalität dieses Snippets dauert dank der unübersichtlichen Syntax zu lange.
<ironisch>... aber wer da so masochistisch veranlagt ist, der soll es preisen ...</ironisch>
vielleicht finde ichs auch gut, nachdem ich C# gefressen habe :-)
Tschau, Frank
Halo auch.
Ich kenne mich mit PHP zwar gar nicht aus, aber Dein Problem ist eher ein grundlegendes...
Du musst ein wenig mehr "Programm" um deine Leseroutine herumpacken.
Und zwar kannst Du z.B. einen Zähler (von 1 beginnend) mitlaufen lassen. Immer wenn dieser durch vier geteilt 1 ergibt kannt Du nun die "alte" Zeile beenden und eine "neue" beginnen und den Zähler dann wieder auf 1 setzen......
Oder schau mal in einer PHP Anleitung nach dem Modulo-Operator....
Ich hoffe ich konnte Dir ein wenig helfen.
Gruß,
Holger