DB Einträge anzeigen in Reihen und Spalten


J

joky_joky

Hallo mit dem folgenden Code lasse ich mir die Datenbankeinträge anzeigen.

PHP:
<?php
include ("datei mit datenbankinhalten.php");
$db = mysql_connect("$host", "$user", "$pass");

$result = mysql_db_query("$database", "SELECT * FROM $table ORDER BY RAND() LIMIT 5"); 
$number = mysql_num_rows($result);

echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tr>"; //Hier der kopf der Tabelle

 for ($i=0; $i<$number; $i++)
  	 {
	 $dbid = mysql_result($result, $i, "Id");
	 $dbnickname = mysql_result($result, $i, "Nickname");
          $dbvorname = mysql_result($result, $i, "Vorname");
          $dbnachname = mysql_result($result, $i, "Nachname");

echo "<td>                                         //Hier werden die Daten in immer neuen Spalten angezeig
            <strong>$dbid</strong>
            <strong>$dbnickname</strong>
            <strong>$dbvorname</strong>
            <strong>$dbnachname</strong>
	</td>";
}
echo "</tr></table>";  //Hier der Schlß der Tabelle
mysql_close($db);		  
?>

Ok nun zu meinem Problem so wie es jetzt oben steht wird eine Zeile angezeigt
die dann 5 Spalten hat da ja mein Limit für die DB Abfrage 5 ist.
Wenn ich jetzt aber das Limit auf z.B. 20 erhöhe dann zeigt er mir ja 20 Ergebnisse
an in einer Zeile an die 20 Spalten hat.
Ich möchte aber gerne das er mir die ersten 5 Ergebnisse in der ersten Zeile anzeigt
mit 5 Spalten die nachsten 5 wieder in einer neuen Zeile mit 5 Spalten und so weiter.

Ich hoffe es ist klar geworden was ich meine.
Ich hoffe jemand weis eine Lösung auf das Problem dann ich habe heute den ganzen Tag
rumexperimentiert und es nicht ums verzweifeln hinbekommen.

MfG Joky_Joky
 

Sven Mintel

Mitglied
Wenn $i 0,5,10 oder 15 ist, gebe zum Beginn der Schleife ein <tr> aus....wenn $i 4,9,14 oder 19 ist, gebe am Ende der Schleife ein </tr> aus.
Die bisherigen <tr>-Tags entferne aus dem Code.
Damit du nicht ellenlange if's schreiben musst, kannst du $i per Modulo-Division überprüfen.
 
J

joky_joky

Ok dein Vorschlag ist echt gut fatalus aber wie meinst du des mit dem
du kannst $i per Modulo-Division überprüfen.
das verstehe ich leider nicht ganz.
Kannst du mir das mal näher erklären.

MfG Joky_Joky
 

Kerwin

Erfahrenes Mitglied
du überprufst einfach was die division durch 5 ergibt. Modulo gibt dir den restwert aus(20/5 = 4 Modulo 0) und immer wenn es 0 ist, soll er nen zeilenumbruch machen.

PHP:
for($i=0;$i<20;$i++){
 ..................
 ..................
  if($i%5==0){
    echo'</tr><tr>';
  }
}
//ungetestet



//Eine vielleich leicht verständlichere Form wäre dieses hier
for($i=0,$j=0;$i<20;$i++,$j++){
 ..................
 ..................
  if($j==5){
    echo'</tr><tr>';
    $j=0;
  }
}
 
Zuletzt bearbeitet:

Neue Beiträge