Gallery - Seiten blättern

CyberMax

Mitglied
Hallo Zusammen,

kann mir jemand weiterhelfen oder ein Link zu einem Tutorial im Bezug auf "Seiten blättern" nennen?

Ich arbeite mit einen include in dem meine gesammten Bilder und die jeweilige Beschreibung drin steht. Das sieht so aus....

$bild[1]="ulla_im_wald.jpg";
$datum[1]="12.03.2004";
$text[1]="Italien, September 1943...";
.
.
.

$i=count($pic);


das ganze Zeug verarbeite ich dann mit einer while Schleife und gut ists. Allerdings sind es schon recht viele Bilder geworden und möchte nun jeweils 10 pro Seite anzeigen, und mit einem Link auf die weiteren 10 verlinken. Kann mir da jemand weiter helfen?

Vielen Dank im voraus...
Stefan
 
Du zeigst auf der ersten Seite einfach alle Bilder mit dem Index 0 - 9 an, auf der zweiten Seite dann die von 10 - 19 usw.
PHP:
$gesamt = count($bild); //Gesamtzahl aller vorhandenen Bilder ermitteln
$proseite = 10;

$seite = ((!$_GET['seite']) || ($_GET['seite'] < 1)) ? 1 : $_GET['seite'];

$min = ($_GET['seite'] - 1) * $proseite;
$max = $min + $proseite;

for ($x = $min; $x <= $max; $x++) {
    echo '<img src="'.$bild[$x].'" border="0" />';
    //... alles relevante ausgeben
}

if ($gesamt > $proseite) {
    echo 'Seite: ';
    $seiten_gesamt = ceil($gesamt / $proseite);
    
    for ($y = 1; $y <= $seiten_gesamt; $y++) {
        if ($y == $seite) {
            echo '<b>'.$seite.'</b> ';
        } else {
            echo '<a href="'.$_SERVER['PHP_SELF'].'?seite='.$y.'">'.$y.'</a>';
        }
    }
}

Das könnte funktionieren (in Anlehnung an Johannes Röttgers Tutorial: http://www.tutorials.de/tutorials27168.html).
 
Zuletzt bearbeitet:
vielen dank, hab so ähnlich nur komplizirter hinbekommen... das hier ist besser. Danke! Aber eine Frage hätte ich noch zwecks Array sotieren.

Meine Struktur sieht ja wie folgt aus:
$bild[0]="ulla_im_wald.jpg";
$datum[0]="12.03.2004";
$text[0]="Italien, September 1943...";

$bild[1]="ulla_im_wald.jpg";
$datum[1]="12.03.2004";
$text[1]="Italien, September 1943...";

.
.
.

Komischerweise wird bei der Ausgabe mit dem letzten Array angefangen. Ist das normal? Dann hab ich diverse sort Funktionen angewandt dabei wurden zwar die Bilder in richtiger Reihenfolge angezeigt aber die Text zu den Bilder sind irgendwie willenlos besser gesagt nach dem ABC sortiert.

Kann mir wer helfen?

Stefan
 
Komischerweise wird bei der Ausgabe mit dem letzten Array angefangen. Ist das normal?
Also da kann ich jetzt spontan nichts zu sagen. Ich müsste mir mal den ganzen Code ansehen...

Dann hab ich diverse sort Funktionen angewandt dabei wurden zwar die Bilder in richtiger Reihenfolge angezeigt aber die Text zu den Bilder sind irgendwie willenlos besser gesagt nach dem ABC sortiert.
Du darfst natürlich nicht die Arrays einzeln sortieren. Verwende lieber die Funktion array_multisort (http://php.net/array_multisort).
(Du musst sie in etwa so aufrufen: array_multisort($bild, $datum, $text); )
 
Hab das nun so gelöst und es funktioniert ....
PHP:
array_multisort(
$pic, SORT_ASC, SORT_NUMERIC,
$datum, SORT_ASC, SORT_NUMERIC,
$textd, SORT_ASC, SORT_NUMERIC,
);

aber eine Frage hab ich noch, eigentlich dachte ich das es total easy ist aber dem ist nicht so :)...

Wie kann ich 2 Bilder nebeneineander darstellen und dann die nächsten 2 unten dran usw.
1-2
3-4
5-6
...

entweder ich bekomme immer die gleichen nebeneineder oder es funktioniert gar nicht. Dann dachte an einen zähler den ich durch 2 teile und dann ein <tr einfüge es teilbar ist aber irgendwie reicht mein gehirn dafür nicht aus... :(

Gruß Stefan
 
PHP:
if($id%2 == 0){ // Wenn die Bild-ID 1,2,3,4,5,6,usw durch zwei geteilt, keinen Rest gibt
  echo "<td><img [...]></td></tr>"; // Tabellenzeile abschließen
}
else {
  echo "<tr><td><img [...]></td>"; // Neue Tabellenzeile beginnen.
}
Das Prozentzeichen ist der sogenannte Modulo Operator.
 
@ Tim... Dank Dir :)

So, hier mal die komplette Zusammenfassung. Leider hab ich noch ein Problem. Wenn ich auf den Seitenzähler klicke wird jede ungerade Seite so dargestellt:
1
23
45
67
8

anstatt:

12
34
56
78

weiss wer warum?

PHP:
<table border="0" cellpadding="0" cellspacing="0" background="">
	<tr>
		<td width="15">&nbsp;</td>
		<td class="text" width="456" align="center"><br>
		<?php
		include("gallery.inc.php");

		//Sortiert das Array in umgekehrter Reihenfolge 
		array_multisort(
		$pic, SORT_ASC, SORT_NUMERIC,
		$datum, SORT_ASC, SORT_NUMERIC,
		$text, SORT_ASC, SORT_NUMERIC,
		); 
		
		//Gesamtzahl aller vorhandenen Bilder ermitteln
		$gesamt = count($pic);
	
		//Anzahl der Bilder pro Seite und Zeile
		$proseite 	= 7;
		
		//Falls Var "Seite" nicht gesetzt ist
		if( !$_GET["seite"] ) {
			$_GET["seite"] = 1;
			$seite = 1;
		}
		
		//Min und Max festlegen
		$min = ($_GET["seite"] - 1) * $proseite; 
		$max = $min + $proseite; 
		
		print "<table width=\"100%\"  border=\"0\" cellspacing=\"0\" cellpadding=\"5\">\n";
		//Durchlauf und Anzeige der Bilder
		for ($x = $min; $x <= $max; $x++) {
			if($pic[$x] != "") {	
        		if($x%2 == 0){ //Wenn X geteilt durch zwei keinen Rest gibt (Modulo)
  					echo "<tr><td class=\"text\"><i>".$datum[$x]."</i><br><a href=\"#\"><img src=\"images/screenshots/".$cfg_title."/".$pic[$x].".jpg\" border=\"0\"></a></td>"; //Tabellenzeile abschließen 
				} else { 
  					echo "<td class=\"text\"><i>".$datum[$x]."</i><br><a href=\"#\"><img src=\"images/screenshots/".$cfg_title."/".$pic[$x].".jpg\" border=\"0\"></a></td></tr>"; //Neue Tabellenzeile beginnen. 
				}
			}
		} 
		print "</table><br>\n";
		//Seiten blättern
		if ($gesamt > $proseite) { 
		    print "<span class=text>Seite:</span> "; 
		    $seiten_gesamt = ceil($gesamt / $proseite); 
		     
		    for ($y = 1; $y <= $seiten_gesamt; $y++) { 
		        if ($y == $seite) { 
		            print "<span class=\"text\"><b>[".$seite."]</b></span> "; 
		        } else { 
		            print "<a href=\"index.php?page=screens.".$cfg_sprache.".".$cfg_title."&seite=".$y."\" class=\"mehr\">".$y."</a> "; 
		        } 
		    } 
		}
		?>
		</td>
		<td width="15">&nbsp;</td>
	</tr>
</table>

<?php
print "--> Anzahl der Bilder: ".$gesamt."<br>";
print "--> Anzahl pro Seite: ".$proseite."<br>";
print "--> Min: ".$min."<br>";
print "--> Max: ".$max."<br>";
print "--> GET[seite]: ".$_GET["seite"]."<br>";
print "--> Seite: ".$seite."<br>";
?>
 
ei ei ei... ich hab den Fehler gefunden... :)
wenn man diese zeile:
PHP:
$min = ($_GET['seite'] - 1) * $proseite;

in:

PHP:
$min = ($_GET['seite'] - 1) * ($proseite+1);

ändert, klappt das so wie ich es wollte :))

Gruss Stefan
 
Zurück