Galerie Tabellenstruktur Probleme

than

Mitglied
Hallo.

Ich brauche mal Eure Hilfe. Ich grübel nun schon 2 Tage und komme einfach nicht zu einer brauchbaren Lösung.
Ich habe ein Galeriescript geschrieben wo Bilder aus einem Ordner eingelesen und in einem Array gespeichert werden. Aus dem Array lasse ich über eine Seitenblätterfunktion jeweils x beliebige Bilder pro Seite anzeigen. (die Bilder gebe ich in einer Tabelle aus).

Wenn auf jeder Seite z.B. 20 Bilder (in 4 Reihen a 5 Bilder) angezeigt werden sollen:
Ist man auf der letzten Seite und dort sind z.B. nur noch 2 Bilder, dann endet das Script. Die Tabellenstruktur wird dadurch abgeschnitten (sieht man im Quelltext).

Ich habe es so weit geschafft, dass leere Zellen noch erzeugt werden.
Mein Problem ist nun, der <tr> Umbruch an der richtigen Stelle.

Schaut Euch mein Script mal an und klickt dort auf die 6. Seite.
http://www.thanathan.de/test/see/index.php

Könnt Ihr mir weiterhelfen?
 
du weißt ja wieviele Einträge dein Array hat, und wenn eben diese Zahl durchgelaufen ist kommt eben ein </tr> hin um die Zeile zu schließen.
 
Hallo.

Also was Du mir vorgeschlagen hast, habe ich bereits ja 2 bzw. jetzt schon 3 Tage versucht. Ich komme einfach nicht auf den Durchbruch.

Beispiel:
Nehmen wir an auf jeder Seite sollen 15 Bilder ausgegeben werden und in jeder Reihe a 5.
Wenn man auf die letzte Seite geblättert hat, dann sind z.B. nur noch 8 Bilder da. Nach 5 wird ein </tr> erzeugt aber nun bricht das Script bei 8 ab.
Ich lasse einen Counter mitlaufen der überwacht, wenn COUNTER nicht gleich 5 - 10 oder 15, dann ELSE Zweig.
Im ELSE ZWEIG weiss ich nun das 8 das letzte Bild war, und nun noch 2 mal
<td>&nbsp;</td>
<td>&nbsp;</td>
und dann das
</tr>

aber wie mache ich das? Wie setze ich es um. Ich weiss nicht wie ich das 'rechnerisch' in meinem Script einbauen kann.
Ich habe das Script mal angehängt. Ich hoffe die Variablen erklären sich an Hand ihres Namens selber.
PHP:
echo "<table width=\"500\" border=\"1\" cellspacing=\"5\" cellpadding=\"10\">\n";
if($eintraege_total != 0)
{
$b = $seite * $eintraege_seite - $eintraege_seite;
$c = 0;
for($a = 0; $a < $eintraege_seite; $a++)
{
if($a % $eintraege_reihe == 0) { echo "<tr>\n"; }
$b++;
$zeiger = $b - 1;
if(isset($eintraege_auslesen[$zeiger]))
{
$zeile = $eintraege_auslesen[$zeiger];
$nummer = $eintraege_total - ($b - 1);
if($a % 2) { $bgcolor = "#EFEFEF"; } else { $bgcolor = "#D7D7D7"; } 
echo "<td align=\"center\" bgcolor=\"".$bgcolor."\"><font size=\"2\">".$nummer.". Eintrag</font><br /><img src=\"./".$zeile."\" border=\"0\"></td>\n";
$c++;
}
if($a % $eintraege_reihe == $eintraege_reihe - 1) { echo "</tr>\n"; }
}
##############################################
$w = round($eintraege_seite / $eintraege_reihe);
$x = $w * $eintraege_reihe;
$y = $x - $c;
if($y < $x)
{
for($z = 0; $z < $y; $z++)
{
if($z % 2) { $bgcolor = "#EFEFEF"; } else { $bgcolor = "#D7D7D7"; } 
echo "<td align=\"center\" bgcolor=\"".$bgcolor."\">-&nbsp;-</td>\n";
}
echo "</tr>\n";
}
##############################################
}
else { 
echo "<tr>\n<td align=\"center\" bgcolor=\"#EFEFEF\" height=\"35\"><font color=\"red\"><b>Keine Bilder vorhanden !</b></font></td>\n</tr>\n";
}
echo "</table>";

Zwischen den ####### Blöcken - da muss der Code umgeändert werden.
 
Wenn Du mit Blöcken -> <td>&nbsp;</td><td>&nbsp;</td> meinst dann hast Du es richtig verstanden.

Im obrigen Beispiel also nach 10 (8 Bilder + 2 mal, dann </tr> und break; )
 
Zurück