Neue Tabelle nach jedem 5. Element

Grunge

Erfahrenes Mitglied
Hey Leute. . .

Ich habe folgendes Problem.Aufgrund von Designtechnischen Gründen hab ich eine Tabelle mit je 5 Spalten und 1 Zeiler. Nun lade ich alle Objekte aus einem Ordner und nach jedem 5. Objekt soll er eine neue Tabelle anlegen unter der alten. Ich schätze da spielt der modulo operator eine rolle, nur komm ich grad nicht damit klar. Schaut es euch einfach an, und schaut wieso es nicht funktioniert. Der Code ist mir mittlerweile selber zu unübersichtlich geworden. Wahrscheinlich ist es einfacher als ich es gerade probiere:

PHP:
<?
$bilder=array();
$a=0;
if ($handle = opendir('galerie/'.$_GET['folder'].'')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
           $bilder[$a]="$file\n";
			$a++;
			
        }
    }
    closedir($handle);
}

//Bilder ausgabe

if($a <= 5)
{
?>
<table width="800" border="0">
  <tr>
  <?php
  for($t=0; $t<=$a-1; $t++) {
  
  echo "  <td width=\"160\"><div align=\"center\"><a rel=\"lightbox\" href=\"galerie/".$_GET['folder']."/".$bilder[$t]."\"><img border=\"0\" src=\"galerie/".$_GET['folder']."/".$bilder[$t]."\" width=\"160 px\" height=\"160 px\"/></a></div></td>";
  }
    ?>

  </tr>

</table>
<?php
}else{
$count=0;
$c=$a-5;
while($count<=$a-1)
{
?>
<table width="800" border="0">
  <tr>
  <?php
  for($t=$count; $t<$a-$c; $t++) {
  
echo "  <td width=\"160\"><div align=\"center\"><a rel=\"lightbox\" href=\"galerie/".$_GET['folder']."/".$bilder[$t]."\"><img border=\"0\" src=\"galerie/".$_GET['folder']."/".$bilder[$t]."\" width=\"160\" height=\"160\" /></a></div></td>";
  }
    ?>

  </tr>

</table><br />

<?php
$count=$count+5;
$c=$c-5;
}
}
}

Das Problem ist, das ich beim letzten Durchlauf arrays aufrufen will, die es nicht gibt. Weil ich einfach keine passende Lösung finde. Ich wär euch echt dankbar für eine Lösung.

Gruß
 
An welcher Stelle soll dass deiner Meinung nach denn hin!? Ich habs nach der Spalten ausgabe eingefügt, und es kommt immer noch keine richtige Ausgabe
 
Ich hab mir jetzt deine art die bilder einzulesen nicht richtig angesehen, ich verwende dazu nur "glob()";

aber dieser Code hier sollte dir weiterhelfen, mehr brauchst du eigentlich nicht.
Die ganzen Abfragen ob der counter höher oder niedriger 5 ist machst du alles in dieser Foreach-Schleife.

PHP:
<?php
$bilder=array();
$a=0;
if ($handle = opendir('galerie/'.$_GET['folder'].'')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
           $bilder[$a]="$file\n";
            $a++;
            
        }
    }
    closedir($handle);
}

//Bilder ausgabe

?>
<table width="800" border="0">
	<tr>
    	<?php
		$break = 0;
		foreach($bilder as $key => $elem)
		{
			echo "  <td width=\"160\"><div align=\"center\"><a rel=\"lightbox\" href=\"galerie/".$_GET['folder']."/".$elem."\"><img border=\"0\" src=\"galerie/".$_GET['folder']."/".$elem."\" width=\"160 px\" height=\"160 px\"/></a></div></td>";
			
			if($break % 5 == 0){
				echo "</tr><tr>";
			}
                            $break++;
		}
		?>
    </tr>
</table>
 
Zuletzt bearbeitet:
Wenn ich das Problem richtig verstanden habe müsstes du das in die for schleifen einbauen undzwar immer vor dem echo. Damit er vor der Ausgabe schließt und wieder öffnet.

Falls das nicht funktioniert könntes du ja mal ein Screenshot hier einbinden
wie die Ansicht zurzeit aussieht.

Ich kann immer besser Arbeiten wenn ich den Visuellen Fehler sehen den es zur folge hat als nur den Programmcode zu lesen.
 
Die Löäsung von Maniac funktioniert, aber nun macht er nach jedem Element einen Zeilenumbruch. Das soll aber nach jedem 5. geschehen
 
Ich hatte in der Zwischenzeit meinen Beitrag editiert, hatte in der Schleife die erhöhung der "break" Variable vergessen.
 
Ahhh okay...

gut nun funktioniert es, ABER: ich hab nun beispielsweise 11 Elemente, dann gibt er eins aus, macht nen umbruch, dann 5, umbruch, und dann wieder fünf. Wie kann man nun hinbekommen, dass er dass genau anders rum macht 5 - 5 -1?
 
Zurück