in einer bestimmten tabelle von der DB auslesen
Thunder
- php
Ich habe hier eine Tabelle:
<table border="1" width="100%" id="table1">
<tr>
<td width="248">
<table border="1" width="102%" id="table2">
<tr>
<td>1</td>
</tr>
<tr>
<td>2</td>
</tr>
</table>
</td>
<td>
<table border="1" width="100%" id="table3">
<tr>
<td>1</td>
</tr>
<tr>
<td>2</td>
</tr>
</table>
</td>
<td>
<table border="1" width="100%" id="table4">
<tr>
<td>1</td>
</tr>
<tr>
<td>2</td>
</tr>
</table>
</td>
<tr>
</table>
Hier meine schleife:
while($row = mysql_fetch_array($result))
{
echo "\n";
echo "<p align=center>" .$row['username']. "\n";
echo "\n";
}
Gibt es eine Möglichkeit das ich mit dieser schleife die oben genannte tabelle fülle.
so ungefair
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
oder so:
1 | 4 | 7
2 | 5 | 8
3 | 6 | 9
oder muss ich die while schleife auflösen und mit einer for schleife aufteilen in schritten.
Ich hoffe es weiß einer was.
mfg
Thunder
Hallo Thunder!
Ich habe hier eine Tabelle:
Und ich habe, zum Glück, eine delete-Taste!
Gibt es eine Möglichkeit das ich mit dieser schleife die oben genannte tabelle fülle.
so ungefair
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
oder so:
1 | 4 | 7
2 | 5 | 8
3 | 6 | 9
Es ist wohl geschickter, die Tabelle so zu befüllen, wie in Deinem ersten Schema, da eine Tabelle ja Zeile für Zeile aufgebaut wird.
Du kannst da bestimmt auch irgendwie mit einer while-Schleife machen, aber Du mußt eben irgendwie einen Zähler bei jedem Durchlauf bis 3 zählen lassen, und dann Deinem Script sagen, daß die alte Zeile zu Ende sein eine neue Zeile beginnen soll.
MfG
Götz
Und ich habe, zum Glück, eine delete-Taste!
Wie meinst du das?
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
Also du würdest vorschlagen zusätzlich in der while schleife noch eine for schleife mit zähler einbringen oder?
Hallo Thunder
Also du würdest vorschlagen zusätzlich in der while schleife noch eine for schleife mit zähler einbringen oder?
Nein, innerhalb der while-Schleife zählst Du eine Variable hoch, z.B:
$spalte++;
Anhand des Startwertes von $spalte, z.B. 0 und abhängig, wann Du hochzählst, entscheidest Du, ob es eine neue Zeile oder das Ende einer Zeile ist.
Am Ende der Schleife stutzt Du Deine Variable auf einen Wert zwischen 0 und 2 zurück. Dazu kannst Du den Modulo-Operator verwenden.
Freundliche Grüsse,
Vinzenz
Hallo Thunder,
Und ich habe, zum Glück, eine delete-Taste!
Wie meinst du das?
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9Also du würdest vorschlagen zusätzlich in der while schleife noch eine for schleife mit zähler einbringen oder?
nein, nur einen Zähler, ungefähr so:
i = 0
while (bedingung) {
if ((i modulo 3)) == 0) i = 0;
sonstige aktionen;
}
Grüße
Andreas
Hallo nochmal,
nein, nur einen Zähler, ungefähr so:
i = 0
while (bedingung) {
if ((i modulo 3)) == 0) i = 0;
sonstige aktionen;
i++;
}
Grüße
Andreas
Hallo
i = 0
while (bedingung) {
if ((i modulo 3)) == 0) i = 0;
noch besser:
if ((i modulo 3)) == 0) {
i = 0; // Kann man sich bei anderer Schreibweise auch sparen
sonstige aktionen bei i = 0, z.B. Beginn einer neuen Zeile ;-)
}
sonstige aktionen;
}
Freundliche Grüsse,
Vinzenz
Hallo Vinzenz,
sonstige aktionen bei i = 0, z.B. Beginn einer neuen Zeile ;-)
Ups, vergessen.
Grüße
Andreas
So viele Beispiele hätte ich nicht erwartet danke an euch hab mir jetzt ein paar hilfen für Modulo gesehen. Ist ganz nett der Operator. Habe mir jetzt mal sowas gepastelt
$i = 1;
$anz_spalten = 3;
echo "<table border="1" align="center" width="415">\n";
echo "<tr>\n";
while ($row = mysql_fetch_array($result))
{
echo "\t<td align=center>" .$row['username']. "</td>\n";
if(($i%$anz_spalten) == 0)
{
echo "</tr><tr>\n";
}
$i++;
}
$anzahltot = mysql_num_rows($result);
$modulo = ($anzahltot%$anz_spalten);
$rest = ($anz_spalten - $modulo);
for($z = 0; $z < $rest; $z++){
echo "<td> </td>\n";
}
echo "</tr>\n";
echo "</table>\n";
Kann man so was lassen ? für das erste mal.
Nochmals danke an euch.
Hallo alle!
Und ich habe, zum Glück, eine delete-Taste!
Wie meinst du das?
Du hattest da ja soviel Kot gepostet, den man eigentlich gar nicht brauchte, und um zu antworten, mußte ich diesen natürlich erst entsorgen, wobei mir meine delete-Taste eine gute Hilfe war.
Außerdem habe ich die Satzstruktur aus Deinem Satz übernommen ... aber man muß nicht alles verstehen ;)
Da schaut man mal ein paar Minuten einen Thread nicht an, und schon wird einem die ganze "Arbeit" abgenommen ;)
Schön schön, jetzt haben wir ne gute Lösung, und ich mußte außer mal eben grob schreiben, was ich mir vorstelle nichts machen, so gefällt mir das :)
MfG
Götz
Hallo Thunder
Du willst Deine Daten dreispaltig ausgeben. Vereinfache als erstes Deine Tabellenstruktur, denn es gibt keinen Grund, jede Spalte durch eine Tabelle darzustellen, es sei denn Du realisierst Variante 2 damit.
Was musst Du tun?
1. Überprüfen, ob die Zelle die erste Zelle einer neuen Zeile ist.
Wenn ja, schreibe ein <tr>
2. Schreibe die Zelle
3. Überprüfe, ob die Zelle die letzte Zelle einer Zeile ist.
Wenn ja, schreibe ein </tr>
Nach dem Ende der Schleife überprüfe, ob Du noch Leerzellen in der letzten Zeile auffüllen musst.
Wenn ja, mache dies.
Du solltest Dich mit dem Modulo-Operator beschäftigen, um die Überprüfung hinzukriegen. Eine Laufvariable benötigst Du ebenso.
Gibt es eine Möglichkeit das ich mit dieser schleife die oben genannte tabelle fülle.
so ungefair
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
So ungefähr ;-) ist leichter zu implementieren.
Warum? Weil HTML Tabellen zeilenweise aufbaut.
oder so:
1 | 4 | 7
2 | 5 | 8
3 | 6 | 9
Geht theoretisch auch, ist aber mehr Aufwand.
oder muss ich die while schleife auflösen und mit einer for schleife aufteilen in schritten.
while ist schon in Ordnung.
Freundliche Grüsse,
Vinzenz