Daten Dynamisch nebeneinander
Chris
- php
0 Sönke Tesch0 Chris
Hallo zusammen,
ich habe mir ein wenig Gedanken über die Whileschleife gemacht, und ich finde keine Lösung wie ich Daten Dynamisch aus einer MySQL Tabelle nebeneinander ausgeben kann, bin mir aber sicher das es geht ;)
Beispiel:
while($row = mysql_fetch_array($this->result)){
echo "
<span>$row[test]<br /></span>
";
}
Das Problem ist das dann alle Datensätze untereinander ausgeben werden würden, und ich möchte gerne jeweils 3 Datensätze nebeneinander ausgeben...
Könnt ihr mir vieleicht weiterhelfen ?
Ich danke euch für eure Hilfe ;)
Viele Grüsse
Chris
while($row = mysql_fetch_array($this->result)){
echo "<span>$row[test]<br /></span>";
}Das Problem ist das dann alle Datensätze untereinander ausgeben werden würden, und ich möchte gerne jeweils 3 Datensätze nebeneinander ausgeben...
Ähm, was hälst Du davon, den Zeilenumbruch nur alle drei Datensätze auszugeben? Meinst Du nicht, daß das irgendwie doch vielleicht Dein Problem lösen würde?
Gruß,
soenk.e
PS: Daten besser nur durch htmlentities() ausgeben, also
echo htmlentities($row["test"]);
PPS: Zeichenketten haben in PHP in Anführungszeichen zu stehen, $row[test] ist falsch, es muß $row["test"] heißen.
PPPS: Ein <span> ist ohne class-Attribut etwas sinnlos.
Hi,
Deine Ratschläge werde ich mir zu herzen nehmen ;)
Aber hier haben wir uns Missvertanden *g*
Ähm, was hälst Du davon, den Zeilenumbruch nur alle drei Datensätze auszugeben? Meinst Du nicht, daß das irgendwie doch vielleicht Dein Problem lösen würde?
Ich rede ja von 3 Datensätzen und nicht von 3 Spalten in den Tables ;)
Angenommen ich habe 9 Datensätze in der Table, davon möchte ich jeweils 3 nebeneinander ausgeben...
Also ich hoffe ich vertausch da nicht Datensätze mit was anderem ;)
id 1 2 3
x x x x <--Datensatz 1
y y y y <--Datensatz 2
z z z z <--Datensatz 3
und diese 3 Datensätze möchte ich nun nebeneinander ausgeben...
Aber hier haben wir uns Missvertanden *g*
Möglich, mir kommt die Frage in der Tat etwas seltsam vor ;)
Angenommen ich habe 9 Datensätze in der Table, davon möchte ich jeweils 3 nebeneinander ausgeben...
id 1 2 3
x x x x <--Datensatz 1
y y y y <--Datensatz 2
z z z z <--Datensatz 3und diese 3 Datensätze möchte ich nun nebeneinander ausgeben...
Aha, das ist etwas klarer. Du wirst sicherlich eine Tabelle nutzen wollen, da Dir wahrscheinlich sonst alles durcheinander purzelt. Ich für meinen Teil baue Tabellen gerne erstmal als Feldvariable auf und gebe erst dann, nachdem ich die Daten "eingesammelt" habe, die Daten tatsächlich in die Seite aus (eben aus diesem Feld).
Das vereinfacht die Geschichte wesentlich, da eine HTML-Tabelle spalten-, dann zeilenweise ausgegeben werden muß, die Daten aber umgekehrt erscheinen. Es müssen also zwangsläufig Daten zwischengespeichert werden.
Wir legen dazu also ein Feld an, dessen erster Index die Spaltennamen enthält (oben: id, x, y, z). In der zweiten Dimension werden die Daten dazu gesammelt:
while ($row = mysql_fetch_assoc($result))
{
foreach ($row as $spaltenname=>$wert)
$feld[$spaltenname][]=$wert;
};
Der Inhalt von $feld sollte dann so aussehen:
$feld["id"][0]=0;
$feld["id"][1]=0;
$feld["x"][0]="x1";
$feld["x"][1]="x2";
$feld["y"][0]="y1";
$feld["y"][1]="y2";
etc..
Die Ausgabe ist etwas vertrackt, da Du ja unbedingt (nörgel;) drei Spalten haben willst:
$i=0; // $i wird unser Datensatzzähler
while ($i<sizeof(reset($feld))) // sollte Anzahl Daten in $feld["id"] zurückgeben
{
foreach ($feld as $spaltenname=>$daten) // Zeilen ausgeben
{
echo $spaltenname.": "; // Zeilentitel = Name der Datenspalte
for ($j=0;$j<3;$j++)
echo " ".$daten[$i+$j]; // ..Daten ausgeben
echo "\n"; // 3 Spalten vollbracht, neue Zeile
};
$i+=$j; // $i auf aktuellen Datensatz setzen; entspricht $i=$i+$j
};
Das Skript gibt die Daten als reinen Text aus. Benutze entweder
header("Content-Type: text/plain");
als allererste Zeile im Skript oder füge die entsprechenden <tr>- und <td>-Tags ein.
Abschließende Bemerkung: Ich habe absolut keine Ahnung, ob das funktioniert, aber ich bin guten Mutes :)
Gruß,
soenk.e