Problem bei Gallery Blätterfunktion

dark_ghost

Erfahrenes Mitglied
Hallo zusammen,

ich habe mir eine kleine Gallery geschrieben, die folgendermaßen aufgebaut ist.

In der Datenbank(mysql) werden alle Informationen zu vorhandenen Kategorien und Bildern verwaltet.
Wird nun ein Album angesehen, werden alle Bilder selektiert, die zum gewählten Album gehören. Im ersten Schritt werden dann die Thumbnails angezeigt, welche auf das Bild in Originalgröße verweisen.
Klickt der User auf eines der Thumnails, wird eben das Bild in Originalgröße angezeigt. Als Parameter werden KategorieID und BildID übergeben.

Zusätzlich soll nun eine Blätterfunktion (vorheriges, nächstes bild) angezeigt werden.

Anhand der übergebenen Parameter kann ich im ersten Schritt alle benötigten Infos zum gewählten Bild selektieren und das Bild anzeigen. - Funktioniert.

Im zweiten Schritt möchte ich das vorherige und nächste Bild ermitteln.
Ich kann anahnd der übergebenen Parameter alle BildIDs zur zugehörigen AlbumID selektieren. Jetzt habe ich alle IDs auf einem Array gespeichert.

Wie aber ermittle ich jetz das previous und next pic ?
Ich muss dazu sagen, dass die Bild IDs nicht zwingend fortlaufend sind.


Über Vorschläge und Tipss bin ich dankbar.
Andreas
 
du hast ja die Aktuelle ID, dann schaust du an welcher Stelle sie im Array steht, und dann nimmst du eben eine Stelle drüber oder drunter.
 
Hi,

meinst du in etwa so ?

foreach($array $key => $value){
...
}

Ermitteln welchen $key die aktuelle ID hat und dann einen $key vor und zurück ?


Gruß und Danke
Andreas
 
Hi,

vielen Dank für den Verweis. Diese Funktion kannte ich nicht.

Wenn ich dich und das Beispiel dann richtig verstehe ermittle ich mittels der Funktion array_search() den Key des Aktuellen Bildes und incrementiere bzw decrementiere diesen um das nächste und vorherige Bild ermitteln zu können ...

Damit werd ich's jetz erst einmal versuchen, sobald es geklappt hat setz ich den Thread dann auch auf erledigt ;)

Greetz
 
Zuletzt bearbeitet:
So hier melde ich mich wieder,

vielen Dank für deinen Denkanstoß MsStriker - der hats gebracht.

Allen die vielleicht auch auf der Suche nach einer Solchen Blätterfunktion sind möchte ich meine Lösung nicht vorenthalten.

Vorgeschichte ...

Der User betrachtet ein Album einer Gallery in der Vorschau, das heist er bekommt von jedem verfügbaren Bild das Thumbnail angezeigt. Die Thumbnails sind auf das Bild in Originalgröße verlinkt, klickt der User nun ein beliebiges Thumbnail an wird das Bild in der Originalgröße angezeigt.
In dieser Ansicht soll es nun möglich sein, dass der User vor und zurück blättern kann - und genau hierbei gab es ein kleines Problem.
In meinem speziellen Fall kann es nämlich vorkommen, dass die PictureIDs nicht fortlaufend zusammen hängen, deswegen kann ich hier nicht einfach die jeweilige ID decrementieren bzw. incrementieren.

Hier nun der Code zu meiner Lösung. Ich habe ihn denke ich gut kommentiert, sollten dennoch fragen oder auch bessere / andere Lösungsvorschläge auftreten freue ich mich darüber.

PHP:
    //Übergabeparameter sind die AlbumID und die PictureID

    //Alle PictureIDs zum aktuellen Album selektieren
    $pic_ids = mysql_query("SELECT `pic_id` FROM `media_pics` WHERE `album_id`='".$_REQUEST['albumid']."' ORDER BY `pic_id` ");
    
    $assoc_array = "";    //Array initialisieren - hier werden die key-value paare gespeichert
    $i = 0;                //Wert des Counters dient als key
    
    //Solange Daten vorhanden sind soll ein Assoziatives Array mit key-value paaren gefüllt werden
    while($row = mysql_fetch_assoc($pic_ids)){
        $assoc_array[$i] = $row['pic_id'];
        $i++;
    }
    
    //Assoziatives Array nach dem key der aktuellen value(picid) durchsuchen
    $current_key = array_search($_REQUEST['picid'], $assoc_array);
        
    //Anhand des Keys(current_key) der aktuellen Value(picid) kann der nächste und vorherige key ermittelt werden.
    //Mit hilfe des Keys kann wiederum der zugehörige Valuewert ermittelt werden welcher der PictureID entspricht.
    
    //next_key - next_pic
    $next_key = $current_key + 1;
    $next_pic = $assoc_array[$next_key];
        
    //Wenn next_key in array_assoc nicht existiert - next-button ausblenden
    if(!array_key_exists($next_key, $assoc_array)){ unset($button_next); }
    
    
    //previous_key - previous_pic
    $prev_key = $current_key - 1;
    $prev_pic = $assoc_array[$prev_key];
    
    //Wenn prev_key in array_assoc nicht existiert - prev-button ausblenden
    if(!array_key_exists($prev_key, $assoc_array)){ unset($button_prev); }


Gruß
Andreas
 
Hallo dark_ghost,

Ich habe da mal eine Frage, ich habe auch Probleme mit einer Blätterfunktion
(siehe auch meine Thema: Problem bei Blätterfunktion in einem Newsscript http://www.tutorials.de/forum/php/315815-problem-bei-blaetterfunktion-einem-newsscript.html).

Könnte ich deinen Code vielleicht so ändern das mein Problem gelöst ist?

Wenn ich das richtig verstanden habe sucht der Code die Id des Bildes davor und dahinter und gibt diese dann weiter.
Das müßte ich doch so einbauen können das wenn ich auf der 3 Seite den 4 Beitrag anklicke, von dieser Stelle die Auflistung der Beiträge beginnt oder nicht?
Bin für jede Anregung Dankbar.
 
Zurück