foreach problem!

neopayne

Erfahrenes Mitglied
guten Abend,

ich habe folgendes Problem: In meiner foreach Schleife werden Bilder aus einem Ordner ausgelesen und nacheinander in eine Tabelle eingefügt. So mein Problem ist nun, das nur drei Bilder in einer Zeile angezeigt werden sollen.

Es müsste also nach dem dritten bild ein </tr> eingefügt werden.

Geht das?

PHP:
<?
$filepath = "pics/";

if (@$dh = opendir($filepath)) {
  while($file = readdir($dh)) {
    if (!ereg("^\.+$",$file)) {
      $files[] = $file;
    }
  }
  closedir($dh);
}

if(is_array($files)) {
	echo "<div align=center>
  <center>
  <table border=1 cellpadding=0 cellspacing=0 style=\"border-collapse: collapse\" bordercolor=#111111 id=AutoNumber1>";

natcasesort($files);
reset($files);

foreach($files as $idx=>$file) {
  if($idx % 2) {
    echo "";
  } else {
    echo "";
  }

  echo "<td><a href=$filepath$file><img border=0 src=$filepath$file width=150></a></td><td width=\"20px\">&nbsp;</td>";
  }
  echo "</table>";
  echo "</center>";
}
?>
 
Ich denke du musst dir nur eine Laufvariable machen die du vor dem foreach auf 0 setzt und in der Schleife immer inkrementierst (++) dann musst du nur mit ner if Abfrage und ner Modulo(müsste das % Zeichen sein) Rechnung überprüfen ob die Laufvariable durch 3 glatt teilbar ist und dann halt das tr schließen.
Gruß Steff
 
Danke für den Tip

so gehts jetzt:

PHP:
<?
$filepath = "pics/";
$count = "0";

if (@$dh = opendir($filepath)) {
  while($file = readdir($dh)) {
    if (!ereg("^\.+$",$file)) {
      $files[] = $file;
    }
  }
  closedir($dh);
}

if(is_array($files)) {
	echo "<div align=center>
  <center>
  <table border=1 cellpadding=0 cellspacing=0 style=\"border-collapse: collapse\" bordercolor=#111111 id=AutoNumber1>";

natcasesort($files);
reset($files);

foreach($files as $idx=>$file) {
  if($idx % 2) {
    echo "";
  } else {
    echo "";
  }

  echo "<td><a href=$filepath$file><img border=0 src=$filepath$file width=150></a></td><td width=\"20px\">&nbsp;</td>";
  $count++;
  		if($count == "3") {
  				echo "</tr>";
  				$count = "0";
  		}
  }
  echo "</table>";
  echo "</center>";
}
?>
 
Zurück