PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle vervollständigen


vivanity
01.07.2006, 22:41:25
Hallo

Ich hab folgendes Script das mir Inhalte aus einer Datenbank in einer Tabelle ausgibt. Nach vier dem vierten Eintrag wird ein "</TR><TR>" ausgegeben.

$i = 1;
echo "<TABLE><TR>";
while($row = mysql_fetch_array($result)){
echo "<TD>".$row['eintrag']."</TD>\n";
if( $i % 4 == 0 ) {
echo "</TR>\n<TR>\n";
}
$i++;
}
echo "</TR></TABLE>";

Wenn ich nun aber z.B. 5 Einträge in meiner DB habe macht es mir ja in der 2. Reihe nur einmal das <TD>...</TD> und nicht viermal.
Und das wäre ja dan unsauberes HTML.

Wie kann ich das lösen das es mir in wenn die Einträge nicht durch 4 geteilt werden können, die restlichen <TD>...</TD> macht ?

Demonking
01.07.2006, 22:50:37
wie sieht den der zugriff drauf aus?!
also wie sieht $result aus?!
oder geht es vllt so ?!


$i = 0;
echo "<TABLE><TR>";
while($row = mysql_fetch_array($result)){
echo "<TD>".$row['eintrag']."</TD>\n";
$i++;
if( $i % 4 == 0 ) {
echo "</TR>\n<TR>\n";
}
}
echo "</TR></TABLE>";

vivanity
01.07.2006, 23:00:22
das result sieht so aus:

$result = mysql_query("SELECT * FROM TABLE ");

Demonking
01.07.2006, 23:02:12
warum soll ich kein SELECT * benutzen? (http://www.php-faq.de/q/q-sql-select.html)

$i = 1;
echo "<TABLE><TR>";
while($row = mysql_fetch_array($result)){
echo "<TD>".$row['eintrag']."</TD>\n";
if( $i % 4 == 0 ) {
echo "</TR>\n<TR>\n";
}
$i++;
}
echo "</TR></TABLE>";

vivanity
01.07.2006, 23:11:26
Ja und was hat das jetzt mit meinem Problem zu tun?
Meine Tabelle ist immer nicht sauberes HTML?

Demonking
01.07.2006, 23:16:52
>.< verdammt irgendwie eine zeile überlesen ^^"
also ich würde mit mysql_num_rows() die anzahl einträge zählen und dann je nachdem mit if abfragen und ausgeben ;)

MatMel
02.07.2006, 00:28:33
Hallo

Ich seh jetzt nicht wirjlkich einen Fehler aber du könntest mal so machen, dass das Script schaut ob schon ein </trY> dasteh ...
Sosnt haste wenn % Zeilenanzalh = 0 is en doppeltes </tr> drunger ...

Ansosnten seh ich aber kein Fehler ...


Gruß und schönen Abend,
Matze

vivanity
02.07.2006, 00:46:22
bin mal ein stück weiter gekommen.
Es geht aber immer noch nicht.

echo "<table border=\"1\" align=\"center\">\n";
$i = 0;
while($row = mysql_fetch_array($result)){
$i++;
if($i % 4 == 1){
echo "<TR>\n";
}
echo "<TD>";//beginn der Spalte
echo $row['eintrag'];
echo "</TD>\n";//ende der Spalte

if($i % 4 == 0){
echo "</TR>\n";
}
}

if($i % 4 != 0) {
for($x = floor($i / 4); $x < ($i % 4); $i++) {
echo "<TD>&nbsp;</TD>\n";
}
}
echo "</TR>\n";

echo "</table>\n";

der Fehler liegt glaub irgendwo in der for-Schleife.

Ich find in aber nicht?

Demonking
02.07.2006, 01:09:10
öhm.. ne kleine frage oO wilst du das so ausgeben

1-2-3-4
1-0-0-0 (0=leer)

wenn ja hier (http://selfphp.de/forum/showthread.php?t=13830)
hatte jemand so nen ähnliches problem ^^

vivanity
02.07.2006, 01:50:24
ich habs:

echo "<table border=\"1\" align=\"center\">\n";
$i = 0;
while($row = mysql_fetch_array($result)){
$i++;
if($i % 4 == 1){
echo "<TR>\n";
}
echo "<TD>";//beginn der Spalte
echo $row['eintrag'];
echo "</TD>\n";//ende der Spalte

if($i % 4 == 0){
echo "</TR>\n";
}
}

if($i % 4 != 0) {
$x = ($i % 4);
for ($x ; $x < 4; $x++){
echo "<TD>&nbsp;</TD>\n";
}
}
echo "</TR>\n";

echo "</table>\n";

Danke für deine Mühe.

Gruß Vivanity