[php] Gallery - Next / Previous Pic

quicksilver

Lt. Junior Grade
Registriert
Jan. 2004
Beiträge
363
Also ich stehe total auf dem schlauch und ich bekomme es nicht gebacken. Ich habe wohl ein Denkfehler. Ich habe nun aus der Datenbank der ausgewählten Categorie die id des 1. und des Letzten Bildes ausgelesen.

Ich habe also in de Variablen $picidfirst die id des 1. Bildes Stehen.
Und in der Variablen $picidlast die Id des Letzten Bildes.
Dann habe ich noch in der Variablen $number Die Anzahl der Bilder in der Categorie.

Ich bekomme es nun nicht hin das ich dort Die links weiter und zurück habe. Der link zurück soll dann aber wenn ich am Anfang bin nicht angezeit werden. Und das gleiche am Ende.

Wäre nett wenn mir da einer helfen könnte. Danke.
 
Wenn das aktuelle Bild der ID von $picidfirst entspricht, dann mach keinen "previous" Link.
Wenn das aktuelle Bild der ID von $picidlast entspricht, dann mach keinen "next" Link.
PHP:
<?php
# $current enthaelt die ID des aktuellen Bildes

if ( $current != $picidfirst )
  echo '<a href="#">previous</a>';

# ...

if ( $current != $picidlast )
  echo '<a href="#">next</a>';

# ...
?>
 
Zuletzt bearbeitet:
Joa so habe ich dat aber es geht komischerweise nicht so wie es soll. ich habe das z.b. an einer categorie getestet wo 3 bilder drin sind. Und wenn er auf bild 2 ist zeigt er weder vor noch zurück an :(

PHP:
$back = $picid-1;
$vor = $picid+1;

if ($back != $picidfirst)
		{
		echo" <A HREF=\"?catid=".$_GET["catid"]."&id=". $back ."\"><IMG SRC=\"inc/back.gif\" ALT=\"\"></A>";
		}

if ($vor != $picidlast)
		{
		echo" <A HREF=\"?catid=".$_GET["catid"]."&id=". $vor ."\"><IMG SRC=\"inc/vor.gif\" ALT=\"\"></A>";
		}
 
Ich habe nun einen Kleinen vorschritt gemacht. Also ein fehler war ich darf nicht abfragen ob $back != $picidfirst sondern $picid != $picidfirst... Aber das problem was sich nun wohl stellt ist er addiert ja nun einfach die 1 zur id. Aber die ids in den Categorien sind ja nicht fortlaufend :( ich müsste die nun aus dem array Nehmen und die addieren oder so kp

ich brauche also nun die möglichkeit wenn ich die bildid 5 hab einfach die nächste im array zu nehmen.
 
Zuletzt bearbeitet:
Nachdem du ohnehin mit MySQL arbeitest, brauchst du eigentlich nur die Position des aktuellen Bildes (nicht die ID, sondern die Position). Mit Hilfe von LIMIT in der SELECT-Abfrage holst du dann immer nur das Bild an der aktuellen Position. Hier der schematische Aufbau:
PHP:
<?php
# $k ist die aktuelle Kategorie
# $nr ist das soundso vielste Bild aus der Kategorie $k --- Hinweis: 0 ist das 1., 1 ist das 2.

# Anzahl an Bilder in der Kategorie k abfragen
$result = mysql_query ( "SELECT COUNT(*) FROM `bilder` WHERE `kategorie`='$k'", $handle );
$maxnum = mysql_fetch_row ( $result );
$maxnum = $maxnum[0];

# ID des Bildes $nr abfragen
$result = mysql_query ( "SELECT `id` FROM `bilder`WHERE `kategorie`='$k' LIMIT $nr,1", $handle );
$id = mysql_fetch_row ( $result );
$id = $id[0];

# ist das aktuelle Bild nicht das Erste?
if ( $nr )
  echo '<a href="#">previous ($nr - 1)</a>';

# ist das aktuelle Bild nicht das Letzte?
if ( $nr < $maxnum )
  echo '<a href="#">next ($nr + 1)</a>';

# ... 
?>
 
Zuletzt bearbeitet:
dazu hätte ich noch ne frage. Was ist das $handle ?

*update*

DAs ist mir alles wohl zu hoch .. da ist mir zu viel offen.. z.b. wo kommt das $nr her .. und was macht das $maxnum usw . :(
 
Zuletzt bearbeitet:
Das ist das Handle, mit dem ich auf die Datenbank zugreife.

PHP:
<?php
@$handle = mysql_pconnect ( $db_host, $db_user, $db_password );

if ( $handle )
	if ( !mysql_select_db ( $db_name, $handle ) )

if ( $handle == FALSE )
	echo "Fehler :(";
?>

quicksilver schrieb:
DAs ist mir alles wohl zu hoch .. da ist mir zu viel offen.. z.b. wo kommt das $nr her .. und was macht das $maxnum usw . :(
es ist ja auch nur schematisch und nicht auf dein Script bezogen (weil ich das nicht durchackern will)

was $nr bzw $maxnum ist, steht doch schon in den Kommentaren:

$nr gibt die Position des aktuellen Bildes in der Kategorie $k an (die ist am Anfang 0 und der kleinst mögliche Wert, wenn du auf "next" klickst muss $nr um 1 erhöht werden, bei "previous" um 1 gesenkt werden)
$maxnum enthält die Anzahl an Bildern in der Kategorie $k
 
Zuletzt bearbeitet:
bin atm bissel krank kann mich nicht richtig konzentrieren .. ich schau mir das die nächsten tage nochmal an. Danke
 
Ich hätte da auch eine Lösung parat:

PHP:
	// Count für Gesamteinträge
	 $query = "SELECT count(*) as count FROM deinebildertabelle";
	 $res = mysql_query($query);
	 $row = mysql_fetch_array($res);
	 $numrows = $row[count];
	 
	 if ($id == "1") { echo("<a href=\"" . $PHP_SELF . "?id=" . ($id + 1) . "\">Nächstes Bild</a>"); }
	 
Elseif ($id  == $numrows) { echo("<a href=\"" . $PHP_SELF . "?id=" . ($id - 1) . "\">Vorheriges Bild</a>"); } 
	 Else { 
	 echo("<a href=\"" . $PHP_SELF . "?id=" . ($id - 1) . "\">Vorheriges Bild</a>");
	 echo(" <a href=\"" . $PHP_SELF . "?id=" . ($id + 1) . "\">Nächstes Bild</a> "); }

Bevor du die Gesamteinträge zählst musst du natürlich wie schon beschrieben dich zur DB verbinden.

Gute Besserung ;=)
 
Zurück
Oben