Olk Okenheld: Datenbankergebnisse in 3-spaltiger Tabelle darstellen

Hallo zusammen,

ich habe folgendes Problem.
Ich möchte eine Seite mit Photos/Bildern mittels PHP und SQL-Datenbank anzeigen lassen.
Die Seite ist durch eine Tabelle mit drei Spalten gegliedert, so dass immer drei Bilder neben einander angezeigt werden sollen.

|-------|-------|-------|

Bild1 Bild2 Bild3
Bild4 Bild5 Bild6
------- ------- -------
Bild7 Bild8 Bild9
------- ------- -------

Bei meinem Versuch dies zu realisieren stehe ich jetzt aber vor dem Problem, dass in jeder Zeile immer das gleiche Bild angezeigt wird, erst in der nächsten Zeile wird das nächste Bild angezeigt und so weiter...
Es sieht also so aus...

|-------|-------|-------|

Bild1 Bild1 Bild1
Bild2 Bild2 Bild2
------- ------- -------
Bild3 Bild3 Bild3
------- ------- -------

Wo liegt mein Denkfehler?
Könnt ihr mir bitte helfen?

  
<?php  
//... Aufruf der Datenbank  
	//Auswahl der Tablle in der Datenbank  
	$sql = "SELECT * From $MainTable";  
	$query = mysql_query($sql);  
	$Tag1 = "SELECT Tag FROM $MainTable WHERE Status == '1'";  
	  
	  
//<!-- Photos Tag 1 -->		  
  
		// Tabellenbeginn  
  
  
				echo "<table style='table-layout:fixed; text-align:center;' cellpadding='20'>";  
  
  
	while ($Datensatz = mysql_fetch_assoc($query))  
		{  
			if($Datensatz["Tag"] == 1)  
			{  
					echo "<tr>";  
				for($i = 1; $i<=3; $i++)  
				{  
  
						echo "<td style='width:33%'>";  
							printf('<a href="2009/');  
							printf($Datensatz["Bild"]);  
							printf('.jpg" target="_blank"><img SRC="2009/Vorschau/');  
							printf($Datensatz["Bild"]);  
							printf('.gif" border=0 width=115 height=86 alt="');  
							echo $Datensatz["Bild"] . "&nbsp;" . $Datensatz["Text"];  
							printf('" title="');  
							echo $Datensatz["Bild"] . "&nbsp;" . $Datensatz["Text"];  
							printf('"></a>');  
						echo "<br>";  
							echo "<span class='Foto_Text'>";  
								echo $Datensatz["Bild"] . "&nbsp;" . $Datensatz["Text"];  
							echo "</span>";  
						echo "</td>";  
				}	  
  
				  echo "</tr>";	  
  
			}  
		/*	else  
			echo "Der von Ihnen gewünschte Datensatz ist nicht verfügbar<br>"; */  
		}  
		  
	//Tabellenende  
			  echo "</table>";  
				echo "<div style='text-align:right;'>";  
				echo "<a href='#oben'>Seitenanfang</a>";  
				echo "</div>";  
				echo "<br><br><br>";  
	mysql_close($verbindung);  
?>  

Schon mal danke im Voraus...

  1. Die Seite ist durch eine Tabelle mit drei Spalten gegliedert, so dass immer drei Bilder neben einander angezeigt werden sollen.

    Du hast also eine semantisches Problem (HTML; sprich du willst eine Tabelle verwenden obwohl du offensichtlich eine Liste hast) und ein Formatierungsproblem (CSS; welches bereits alle nötigen Mittel mitbringt um ohne serverseitiger Logik das gewünschte zu erreichen) und in keinstersweise ein Datebankproblem oder gar ein PHP-Problem.

    inline-block – eine Alternative zu float.

  2. Hi!

    Wo liegt mein Denkfehler?

    Den findest du, wenn du Debugging betreibst, dir also die Inhalte von strategisch wichtigen Variablen an den entsprechenden Stellen ausgibst. Dann könntest du feststellen, dass sich der Inhalt von $Datensatz nicht ändert, während du von 1 bis 3 zählst. Du möchtest jedoch nebenbei bei jedem gelesenen Datensatz hochzählen und bei einer durch drei teilbaren Zahl eine neue Zeile anfangen.

    Lo!