Mittels Schleife <tr></tr> einfügen

tacef

Mitglied
Tag

Wie der Titel bereits sagt, versuche ich mittels einer Schleife <tr></tr> einzufügen um die Anzahl der Bilder pro Zeile zu begrenzen.

Ich habs bis jetzt mit for und while versucht:

for versuch:
PHP:
for($i = 0;$i < 3;$i++)
{ 
      if($i >= 3)
      {
          echo("<tr></tr>");
      }
}


while versuch:
PHP:
while($i <3)
{
     $i++
      if($i >= 3)
      {
          echo("<tr></tr>");
      }
}

bei beiden hat sich nichts getan, die schleifen wurde aber durchlaufen.
 
Zuletzt bearbeitet:
Hiho,
das kann so auch nich funktionieren weil du die Bedingung stellst, dass $i größer/gleich 3 sein muss, aber $i durch die Schleife ($i<3) nie 3 oder größer wird.
 
Dein erstes Konstrukt hat das Problem, dass die Schleife nur mit den Werte $i = 0…2 durchlaufen wird, die Ausgabebedingung aber $i > 3 ist, was in diesem Fall nie zutreffen wird.
Weiterhin baust du das HTML falsch auf. Die Tabellenzellen werden von <tr>…</tr> umgeben und nicht voneinander getrennt.

Hier ein Algorithmus, der das von dir Gewünschte erfüllt:
PHP:
echo '<table>';
for ($i=0; $i<10; $i++) {
    if ($i % 3 == 0) {
         echo '<tr>';
    }

    echo '<td>…</td>';

    if ($i % 3 == 2) {
         echo '</tr>';
    }
}
if ($i % 3 == 1) {
    echo '</tr>';
}
echo '</table>';
 
Danke erstmal für die Hilfe.

Ich sollte vielleicht noch hinzufügen, das ich das ganze in ner while schleife laufen habe, weil ich die Bilder aus ner MySQL DB hole.

PHP:
if(($_GET['galleryid']))
{
echo("<table border=\"1\"  style=\"width:100%\">");
echo("<tr>");
$sql = "SELECT Name,galID,extension FROM bilder WHERE galID = ".$_GET['galleryid']."";
$result = mysql_query($sql)or die(mysql_error());

while($row = mysql_fetch_array($result))
{ 
	
	if($row['extension'] == ".jpg" )
	{
	echo("<td><a href=\"javascript:void(0);\" border=\"0\" onclick=\"window.open('media/".$row['Name'].$row['extension']."', 'window".md5(microtime())."', 'toolbars=0, scrollbars=0, border=0, location=0,statusbars=0, menubars=0, resizable=1, width=1024, height=768, left = 20, top = 20');\"><img src=\"media/t_".$row['Name'].$row['extension']."\" /></a></td>");
		for($i = 0;$i < 4; $i++)
		{
			if($i >= 3)
			{
				echo("<tr></tr>");
			}
		}
	}

	else
	{
	$size = filesize("media/".$row['Name'].$row['extension']."");
	
	echo("<tr border=\"1\"><td><a href=\"media/".$row['Name'].$row['extension']."\">".$row['Name']."</a>&nbsp;&nbsp;Filesize: $size &nbsp;bytes</td></tr>");
	}

}
echo("</tr>");
echo("<tr><td><a href=\"index.php?section=media\">Back</a></td></tr>");
echo("</table>");
}

Mit dem Lösungsansatz von Gumbo funktioniert es zwar, allerdings füllt er mir pro Datensatz 3 Felder aus.
 
Du kannst es auch mit einer while-Schleife lösen, da sich eine for-Schleife ja auch als while-Schleife umschreiben lässt:
PHP:
for ($i=0; $i<10; $i++) {
	// …
}
// ist äquivalent zu:
$i = 0;
while ($i < 10) {
	// …
	$i++;
}
 
Ich hab das jetzt mal versucht zu adaptieren.

Leider ist das Ergebnis nicht ganz so wie es sein sollte.


PHP:
echo("<table border=\"1\"  style=\"width:100%\">");
	$sql = "SELECT Name,galID,extension FROM bilder WHERE galID = ".$_GET['galleryid']."";
	$result = mysql_query($sql)or die(mysql_error());
	
	while($row = mysql_fetch_array($result))
	{ 
		
		if($row['extension'] == ".jpg" )
		{
		for ($i=0; $i<4; $i++) {
			if ($i % 3 == 0) {
			 echo '<tr>';
		}
		echo("<td><a href=\"javascript:void(0);\" border=\"0\" onclick=\"window.open('media/".$row['Name'].$row['extension']."', 'window".md5(microtime())."', 'toolbars=0, scrollbars=0, border=0, location=0,statusbars=0, menubars=0, resizable=1, width=1024, height=768, left = 20, top = 20');\"><img src=\"media/t_".$row['Name'].$row['extension']."\" /></a></td>");
		
			if ($i % 3 == 2) {
				 echo '</tr>';
			}
		}
		if ($i % 3 == 1) {
			echo '</tr>';
		}
		}
		else
		{
		$size = filesize("media/".$row['Name'].$row['extension']."");
		
		echo("<tr border=\"1\"><td><a href=\"media/".$row['Name'].$row['extension']."\">".$row['Name']."</a>&nbsp;&nbsp;Filesize: $size &nbsp;bytes</td></tr>");
		}
	
	

	}
	echo("<tr><td><a href=\"index.php?section=media\">Back</a></td></tr>");
	echo("</table>");
	}
	else
	{
	echo("<table>");
	
	$sql = "SELECT ID,Name FROM gallery";
	$result = mysql_query($sql);
	while($row = mysql_fetch_array($result))
	{
	echo("<tr><td><a href=\"index.php?section=media&galleryid=".$row[ID]."\" target=\"_self\">".$row[Name]."</a></td></tr>");
	
	}
	echo("</table>");
	}
 

Anhänge

  • problem.jpg
    problem.jpg
    437,4 KB · Aufrufe: 14
Kannst du mal etwas Ordnung in den Quellcode bringen und ihn etwas kommentieren? Es ist schwer da durchzusteigen.
 
Hier Bitte

PHP:
<?php

if(($_GET['galleryid']))
{
	echo("<table border=\"1\"  style=\"width:100%\">");
	$sql = "SELECT Name,galID,extension FROM bilder WHERE galID = ".$_GET['galleryid']."";
	$result = mysql_query($sql)or die(mysql_error());
	
	while($row = mysql_fetch_array($result))
	{ 		
		if($row['extension'] == ".jpg" )//überprüft ob die endung der Datei .jpg ist und wenn es zutrifft generiert er den popup code
		{
		for ($i=0; $i<4; $i++) {
			if ($i % 3 == 0) {
			 echo '<tr>';
			}
			echo("<td><a href=\"javascript:void(0);\" border=\"0\" onclick=\"window.open('media/".$row['Name'].$row['extension']."', 'window".md5(microtime())."', 'toolbars=0, scrollbars=0, border=0, location=0,statusbars=0, menubars=0, resizable=1, width=1024, height=768, left = 20, top = 20');\"><img src=\"media/t_".$row['Name'].$row['extension']."\" /></a></td>"); //Öffnet ein Popup mit dem grösseren Bild
		
			if ($i % 3 == 2) {
				 echo '</tr>';
			}
		}
		if ($i % 3 == 1) {
			echo '</tr>';
		}
		}
		else //wenn nicht, generiert er einen normalen Link
		{
		$size = filesize("media/".$row['Name'].$row['extension'].""); //lest die Dateigrösse aus
		
		echo("<tr border=\"1\"><td><a href=\"media/".$row['Name'].$row['extension']."\">".$row['Name']."</a>&nbsp;&nbsp;Filesize: $size &nbsp;bytes</td></tr>");
		}	

	}
	echo("<tr><td><a href=\"index.php?section=media\">Back</a></td></tr>"); //generiert einen zurück Link
	echo("</table>");
	}
	else
	{
	echo("<table>");
	
	$sql = "SELECT ID,Name FROM gallery";
	$result = mysql_query($sql);
	while($row = mysql_fetch_array($result))
	{
	echo("<tr><td><a href=\"index.php?section=media&galleryid=".$row['ID']."\" target=\"_self\">".$row['Name']."</a></td></tr>"); //lest die einzelnen Gallerien aus
	
	}
	echo("</table>");
	}

?>
Ich hoffe, die Kommentare sind ausreichend.
 
Zuletzt bearbeitet:
PHP:
if (isset($_GET['galleryid'])) {
	$sql = "SELECT Name,galID,extension FROM bilder WHERE galID = ".$_GET['galleryid']."";
	$result = mysql_query($sql)or die(mysql_error());
	echo "<table border=\"1\"  style=\"width:100%\">";
	$i = 0;
	while ($row = mysql_fetch_array($result)) {
		if ($i % 3 == 0) {
			echo '<tr>';
		}
		if ($row['extension'] == ".jpg" ) {
			echo "<td><a href=\"javascript:void(0);\" border=\"0\" onclick=\"window.open('media/".$row['Name'].$row['extension']."', 'window".md5(microtime())."', 'toolbars=0, scrollbars=0, border=0, location=0,statusbars=0, menubars=0, resizable=1, width=1024, height=768, left = 20, top = 20');\"><img src=\"media/t_".$row['Name'].$row['extension']."\" /></a></td>";
		} else {
			$size = filesize("media/".$row['Name'].$row['extension'].""); //lest die Dateigrösse aus
			echo "<td><a href=\"media/".$row['Name'].$row['extension']."\">".$row['Name']."</a>&nbsp;&nbsp;Filesize: $size &nbsp;bytes</td>";
		}
		if ($i % 3 == 2) {
			echo '</tr>';
		}
		$i++;
	}
	if ($i % 3 != 0) {
		echo '</tr>';
	}
	echo "<tr><td><a href=\"index.php?section=media\">Back</a></td></tr>";
	echo "</table>";
} else {
	$sql = "SELECT ID,Name FROM gallery";
	$result = mysql_query($sql);
	echo "<table>";
    while ($row = mysql_fetch_array($result)) {
		if ($i % 3 == 0) {
			echo '<tr>';
		}
		echo "<td><a href=\"index.php?section=media&galleryid=".$row['ID']."\" target=\"_self\">".$row['Name']."</a></td>";
   		if ($i % 3 == 2) {
			echo '</tr>';
		}
		$i++;
	}
	if ($i % 3 != 0) {
		echo '</tr>';
	}
	echo "</table>";
}
 
Zurück