Bilder Gallery Letztes und Nächstes Bild

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bilder Gallery Letztes und Nächstes Bild

    Hallo,

    Ich bin gerade dabei eine kleine Bildergallery zu Schreiben.
    leider bin ich noch nicht der Profi in PHP deshalb meine frage

    So schaut das bei mir zur zeit aus
    PHP-Code:
    <?
    if ($page == "list") {
        
        //Navi Aufbau
        $auslesen = mysql_query("SELECT * FROM  gallery_cat WHERE id = '$katid'");
        $cat = mysql_fetch_array($auslesen);
        $test = $cat[vorkat];
        while($test != "0") {
            $auslesen = mysql_query("SELECT * FROM  gallery_cat WHERE id = '$test'");
              $cat2 = mysql_fetch_array($auslesen);
              $test = $cat2[vorkat];
              $i++;
              $na[$i] = " <a href=\"gallery.php?page=list&katid=$cat2[id]\"> $cat2[kategoriename]</a> ->";
        }
        while($i >= 1) {
            $navi .= "$na[$i]";
            $i--;
        }
        $navi .= " $cat[kategoriename]";
        $navigation = "<a href=\"gallery.php?page=main\">Gallery</a> -> $navi</b>\n";
        
        //Anzeige Kategorie mit Vorschaubilder
        $ergebnis = mysql_query ("SELECT * FROM gallery_cat WHERE vorkat = '$katid' ORDER BY kategoriename") 
        or die ("SQL-Fehler");
        while ($datensatz = mysql_fetch_array($ergebnis)) 
        {
            $frage= mysql_query("select * FROM gallery_images WHERE gallerycat = '$datensatz[id]'");
            $anzahl_bilder= mysql_num_rows($frage);
            $images = "";
            if ($datensatz[zugang] == ""){
                $ergebnis2 = mysql_query ("SELECT * FROM gallery_images WHERE gallerycat = '$datensatz[id]' 
                                           ORDER BY hits DESC LIMIT 8") or die ("SQL-Fehler");
                  while ($dat = mysql_fetch_array($ergebnis2)) 
                  {    //Beginn der Schleife
                    $images .= "<img border=\"0\" height=\"40\"  src=\"....$datensatz[id]/$dat[dateiname]\">\n";
                   }
                   }
                    eval("\$mainbit .= \"".gettpl("gallery_mainbit")."\";");    
        }
        //########################
        if($katid != "") {$db->query("UPDATE  gallery_cat SET hits = hits+1 WHERE id  = '$katid'");}
        $auslesen = mysql_query("SELECT * FROM gallery_cat WHERE id = '$katid'");
        $cat = mysql_fetch_array($auslesen);

        $ergebnis = mysql_query ("SELECT * FROM gallery_images WHERE gallerycat = '$katid'") or die ("SQL-Fehler");
        while ($datensatz = mysql_fetch_array($ergebnis)) 
        {
            if($o == 4) {$gallery .= "</tr><tr>\n"; $o=0;}
            $gallery .= "<td><p align=\"center\"><a href=\"gallery.php?page=view&id=$datensatz[id]\">
                        <img border=\"0\" src=\"..../$datensatz[gallerycat]/$datensatz[dateiname]\"> </a></td>\n";
            $i++; $o++; 
           } 
        eval("\$mainbit .= \"".gettpl("gallery_list")."\";");
    }
    ?>
    Ich weis das der Code bestimmt nicht 100% ideal ist für verbesserungs- Vorschläge bin ich offen.

    Jetzt endlich zu meiner Frage

    wenn ich jetzt auf der Übersichtseite ein Bild auswähle dann komme ich auf eine Neu Seite mit dem Ausgewählten Bild in groß wie mache ich das jetzt mit einem Nächste Bild und Vorhergegangenes Bild Link? über die ID ist es nicht möglich da auch durch löschen einige ID`s fehlen.
    Zuletzt geändert von FlorianB; 25.07.2005, 16:36.

  • #2
    Re: Bilder Gallery Letztes und Nächstes Bild

    http://www.php-resource.de/forum/sho...threadid=50454, hinweis bzgl. scrollbalken, danke.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      der code an sich ist unnötig, die frage ist klar formuliert. nur leider schwer leserlich. hättest vielleicht lieber die tabelle gezeigt mit ein paar beispieldaten.

      ansonsten erinnere ich mich daran, mal sowas wie
      Code:
      SELECT ... FROM ... 
      WHERE `nr` < $aktuelle_nr  // bzw. "größer als"
      ORDER BY `nr` 
      LIMIT 1
      gemacht zu haben...

      allerdings muss man zugeben, dass es allemal eleganter wäre,
      alle drei datensätze in einer query zu ermitteln.
      Zuletzt geändert von penizillin; 25.07.2005, 11:24.

      Kommentar


      • #4
        Original geschrieben von penizillin
        allerdings muss man zugeben, dass es allemal eleganter wäre,
        alle drei datensätze in einer query zu ermitteln.
        nein, finde ich nicht.

        wozu willst du in diesem falle drei datensätze ermitteln?
        du brauchst aktuell nur den einen, der das bild enthält. mehr auszulesen, ist an dieser stelle unnötig.

        zum verlinken auf das vorherige/nächste bild brauchst du nur die nummer des aktuellen bildes zu übermitteln, sowie die info, dass du das vorherige bzw. nächste haben möchtest. ab da geht's dann in etwa so wie in deiner beispielquery weiter.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Ich hab es jetzt mal so getestet aber ich bekomme immer eine 1 zurück :-(
          PHP-Code:
                $auslesen2 mysql_query("SELECT id FROM gallery_images WHERE `id` < $id  ORDER BY `id` LIMIT 1");
                
          $next mysql_fetch_array($auslesen2);
                echo 
          "Nexte ID = $next[id]"
          Hat noch jemand eine Idee

          Kommentar


          • #6
            Könntest du jetzt bitte deine Beiträge den Regeln gemäß editieren und deinen Code umbrechen, oder brauchst du noch ne 3. einladung?

            Kommentar


            • #7
              wahsaga:
              ich dachte nur daran, dass 3 anfragen an die db performance-schädigender wirken, als eine, die etwas mehr zurückgibt. von wegen, $row[0] enthält die daten des vorigen datensatzes, $row[1] die des aktuellen und $row[2] die des nächsten.
              aber eigentlich hast du recht, wenn man bedenkt, dass man zum aktuellen bild so gut wie alle informationen benötigt, während es jedoch für das letzte und nächste reicht, wenn man nur die id und evtl. den titel weiß.

              FlorianB:
              wird wohl an der sortierung liegen - ob ASC oder DESC.

              Kommentar


              • #8
                Anhand der ID das nächste/letzte Bild zu holen halte ich für schlecht.
                Warum nicht einfach die Position des Bildes nehmen. Die kann man leicht hoch, bzw. runterzählen.

                Kommentar


                • #9
                  bei großen galerien kann es mühsam sein zu kontrollieren, dass die unikalen ids (ob nummern oder position) durchgehend verlaufen.

                  Kommentar


                  • #10
                    irgendwie habt ihr mich glaube ich immer noch nicht ganz verstanden ...

                    die daten zum aktuellen bild auszulesen reicht doch völlig aus. keine weiteren IDs irgendwelcher vorhergehenden oder nachfolgenden bilder.

                    sei das ausgelesene bild nummer 4711.

                    dann generiere ich mir zwei links, einen mit ?action=forward&nr=4711 und einen mit ?action=rewind&nr=4711

                    auf der folgeseite, die über diese links aufgerufen wird(selbes script) setze ich mir damit dann einfach die query zusammen, wie eingangs schon beschrieben,
                    Code:
                    SELECT ... FROM ... 
                    WHERE `nr` < [b]4711[/b]
                    ORDER BY `nr` 
                    LIMIT 1
                    bei rewind bzw. mit > 4711 bei forward.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      doch habe ich

                      Aber wenn du deine FOtos nach Datum sortieren willst, bekommst du ein problem.

                      außerdem, aus schönheitstechnischen gründen ziehe ic URLS ala page1, page2, ~3, ... irgendwie vor.

                      at least bei normalen (größe) fotoalben hat man bei der performance keinerlei nachteile.

                      Kommentar


                      • #12
                        wahsaga: ok, jetzt hab ich dich verstanden.
                        du hast auf jeden fall recht, wenn es reicht, pfeile "vor" und "zurück" anzuzeigen. ich dachte anfangs an ein großes bild (das aktuelle), das links und rechts von zwei thumbnails mit titeln umgeben ist.

                        Kommentar

                        Lädt...
                        X