Anzeige Sql-Daten dynamisch als Tabelle
xpfreund
- php
Hallo,
Kurze Frage: Ich will eine unbestimmte Zahl an Spalten aus Sql holen und diese
in einer Schleife mit mysql_fetch_row Zeile für Zeile auslesen. Jetzt will ich die Ausgabe auch noch komplett variabel machen, damit gewährleistet ist, das egal wie viele Spalten selektiert wurden, alle Datensätze angezeigt werden. Jetzt kann ich in einer For-Schleife bis zur Anzahl der möglichen Spalten zählen lassen und alle ausgeben. Wenn sie leer sind oder nicht existieren, werden sie vom Browser ja nicht angezeigt. Der Nachteil bei dieser Methode ist, dass er immer bis zum Ende durchzählt. Wäre es möglich bspw. mit while ne Abfrage zu bauen, die den "$row"-Parameter automatisch hochzählt und beim letzten verfügbaren aufhört? Es kann auch mal sein, dass eine Spalte leer ist.
gruß aus Senftenberg am See
hi,
Kurze Frage: Ich will eine unbestimmte Zahl an Spalten aus Sql holen und diese
in einer Schleife mit mysql_fetch_row Zeile für Zeile auslesen. Jetzt will ich die Ausgabe auch noch komplett variabel machen, damit gewährleistet ist, das egal wie viele Spalten selektiert wurden, alle Datensätze angezeigt werden.
Was hat denn die Anzahl selektierter Spalten mit der Anzahl Datensätze zu tun?
Jetzt kann ich in einer For-Schleife bis zur Anzahl der möglichen Spalten zählen lassen und alle ausgeben. Wenn sie leer sind oder nicht existieren, werden sie vom Browser ja nicht angezeigt. Der Nachteil bei dieser Methode ist, dass er immer bis zum Ende durchzählt.
Und bis wo soll "er" sonst "zählen"?
Wäre es möglich bspw. mit while ne Abfrage zu bauen, die den "$row"-Parameter automatisch hochzählt und beim letzten verfügbaren aufhört?
Welchen Parameter willst du hochzählen, und warum?
gruß,
wahsaga
Hallo,
<code lang=php>
echo "<table>";
$daten = mysql_query("select ".DB_PREFIX."todo.ID, remark,".DB_PREFIX."todo.anfang, deadline, ".DB_PREFIX."contacts.nachname
//von den Tabellen
while ($spaltee = db_fetch_row($result3)) { //Datensatz für Datensatz
echo "<tr>";
for($count = 1; $count < 8; $count++) //8 = Anzahl möglicher Spalten,count wird hochgezählt, um die jeweilige Reihe auszugeben
{
if ($spalte[$count] != '') echo "<td>".$spalte[$count]."</td>";
}
echo "</tr>\n";
}
echo "</table>\n";
</code>
Das finde ich aber nicht sehr schlau in der for-Schleife bis irgendwann zu zählen. Besser wäre es doch, wenn die Schleife nur solang zählt, bis keine Spalte für den Datensatz existiert, d. h. wenn ich drei Spalten oben auswähle, soll die Datenanzeige der jeweiligen Spalte bei $spalte[3] aufhören und nicht wie im obigen Bsp. bis $spalte[8] weiterversuchen. Es kann passieren, das für einen Datensatz mal in einer Spalte nichts drin steht, daher fällt die Möglichkeit aus, abzufragen, ob was drin steht.
gruß aus Senftenberg am See
hi,
Das finde ich aber nicht sehr schlau in der for-Schleife bis irgendwann zu zählen. Besser wäre es doch, wenn die Schleife nur solang zählt, bis keine Spalte für den Datensatz existiert,
Ja warum denn dann überhaupt for?
Lass dir ein Array zurückliefern, und nutze foreach.
d. h. wenn ich drei Spalten oben auswähle, soll die Datenanzeige der jeweiligen Spalte bei $spalte[3] aufhören
Du meinst vermutlich 2 - zu zählen begonnen wird bei 0.
gruß,
wahsaga
Hallo!
Kurze Frage: Ich will eine unbestimmte Zahl an Spalten aus Sql holen und diese anzeigen ....
Du hast also ein beliebiges SQL Select Statement und möchtest das als Tabelle ausgeben? OK.
zb Select * from meineTabelle
Die Schleife die das Ergebnis ausgeben soll weiß aber nicht welche und wieviele Spalten das Ergebnis hat? Kein Problem.
Alles das du brauchst ist hier beschrieben.
Du holst dir mit mysql_query ein Resultset und gehst es anschl. in einer while Schleife mit mysql_fetch_array durch.
In der While Schleife hast du eine For Schleife von 0 bis mysql_num_fields und gibst die Werte der Spalten einfach mit dem Recordset das mysql_fetch_array zurückliefert aus.
Im ersten while Durchlauf kannst du noch einen Tabellenheader mit den Namen der Spalten ausgeben. Dazu verwendest du mysql_field_name.
Viel Spaß beim Programmieren!
mfg
frafu
Hallo,
Hat sich schon erledigt. Ich habe einfach bei der bestehenden Abfrage, die inzwischen unten beschrieben ist, statt der 8 die Variable $zahl eingeschrieben, die ich vorher mit deiner Hilfe (mysql_num_fields) definiert hatte.
gruß aus Senftenberg am See
Hallo!
Hat sich schon erledigt. Ich habe einfach bei der bestehenden Abfrage, die inzwischen unten beschrieben ist, statt der 8 die Variable $zahl eingeschrieben, die ich vorher mit deiner Hilfe (mysql_num_fields) definiert hatte.
Vergiss nicht bei 0 zu zählen zu beginnen und nicht bei 1.
mfg
frafu