Afisare in sens descrescator imagini numerotate ordonat

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
adrian_ady
Mesaje: 80

Afisare in sens descrescator imagini numerotate ordonat

Am acest script care preia si afiseaza imaginile din folder. Deoarece afisarea ar fi mai corecta in sens invers adica de la ultima foto adaugata la prima doresc ajutor sa fac modificarile necesare. Fotografiile sunt numerotate incepand cu '01' si preluate din folder pentru a fi adaugate intr-o galerie fancybox.

Cod: Selectaţi tot

<div id="gallery"> 
<?php
include 'navigare.php';        // clasa Navigare
$directory = "images/proiecte/";
$count = count(glob($directory . "*.jpg"));
$total_rows = $count / 2;
$limit = 20;     // nr. imagini pe pagina
$nrpg = isset($_GET['page']) ? intval($_GET['page']) : 1;     // numarul paginii accesate
$start_img = $nrpg * $limit - $limit + 1;     // numarul primei imagini in pagina
$this_script ='proiectetest.php?'; 

// parcurge de la prima imagine pana la maxim adaugat $limit, dar nu mai mare de total
for($i=$start_img; $i<min($total_rows + 1, ($start_img + $limit)); $i++) {
  if($i < 10) $i = '0'. $i;
    echo '<a href="images/proiecte/'. $i .'_big.jpg" rel="gallery" title=""><img src="images/proiecte/'. $i .'_small.jpg" alt=""></a>';
}
?>
</div>

MarPlo
Salut
Daca fisierele cu imagini sunt in asa fel incarcate, cu numere dupa ordinea incarcarii, ultima imagine e cea cu numarul mai mare. Faci un alt index care este egal cu numarul maxim de parcurs minus $i (cel curent), si devin descrescator.
Cred ca merge acest cod.

Cod: Selectaţi tot

<div id="gallery"> 
<?php
include 'navigare.php';        // clasa Navigare
$directory = "images/proiecte/";
$count = count(glob($directory . "*.jpg"));
$total_rows = $count / 2;
$limit = 20;     // nr. imagini pe pagina
$nrpg = isset($_GET['page']) ? intval($_GET['page']) : 1;     // numarul paginii accesate
$start_img = $nrpg * $limit - $limit + 1;     // numarul primei imagini in pagina
$this_script ='proiectetest.php?'; 

// parcurge de la prima imagine pana la maxim adaugat $limit, dar nu mai mare de total
$max_nr = min($total_rows + 1, ($start_img + $limit));
for($i=$start_img; $i<$max_nr; $i++) {
  $f = $max_nr - $i;    // ca sa aibe numar de la cel mai mare spre cel mic
  if($f < 10) $f = '0'. $f;
  echo '<a href="images/proiecte/'. $f .'_big.jpg" rel="gallery" title=""><img src="images/proiecte/'. $f .'_small.jpg" alt=""></a>';
}
?>
</div>
- Nu e testat, daca apare vreo eroare incearca sa modifici /sa corectezi.

adrian_ady
Multumesc, am incercat insa nu merge (bineinteles, am facut multe teste schimband una, alta). Eu nu am niciun fel de cunostinte in sensul programarii si plecand de la scriptul original am incercat sa inventez si am reusit varianta de mai jos(va rog, sa nu radeti!!!!) care, culmea, merge! Unicul defect este ca la ultima pagina continua sa incarce pozitii(imagini goale) dincolo de imaginea mea nr. "01" care ar trebui sa fie afisata ultima.. Daca reusim sa punem 'stop' la ultima foto, e super! Culmea, daca fac pagina unica $limit = $total_rows totul mrge OK, nu se incarca nimic in plus.

Cod: Selectaţi tot

<div class="gallery" id="gallery-big">
       <?
       $directory = "images/proiecte/";
       $count = count(glob($directory . "*.jpg"));
       $total_rows = $count / 2;
       $limit = 4;     // nr. imagini pe pagina
       $nrpg = isset($_GET['page']) ? intval($_GET['page']) : 1;     // numarul paginii accesate
       $start_img = $total_rows - $nrpg * $limit + $limit;     // numarul primei imagini in pagina
       $this_script ='test.php?'; 

        // parcurge de la prima imagine pana la maxim adaugat $limit, dar nu mai mare de total
       for($i=$start_img; $i>($start_img - $limit); $i--) {
       if($i < 10) $i = '0'. $i;
          echo '<a href="images/proiecte/'. $i .'_big.jpg" rel="gallery" title=""><img src="images/proiecte/'. $i .'_small.jpg" alt=""></a>';
          }
       ?>
       </div>

MarPlo
Codul acesta l-am testat, functioneaza.

Cod: Selectaţi tot

<div class="gallery" id="gallery-big">
<?php
$directory = "images/proiecte/";
$this_script ='proiectetest.php?'; 
$count = count(glob($directory . "*.jpg"));
$total_rows = $count / 2;
$limit = 4;     // nr. imagini pe pagina
$nrpg = isset($_GET['page']) ? intval($_GET['page']) : 1;     // numarul paginii accesate
$start_img = min($total_rows, ($total_rows - $nrpg * $limit + $limit));     // numarul primei imagini in pagina (cea mai mare)
$stop_img = max(0, ($start_img - $limit));    // imagine ultim afisata (la care se opreste parcurgerea)

// parcurge descrescator
for($i=$start_img; $i>$stop_img; $i--) {
  if($i < 10) $i = '0'. $i;
  echo '<a href="images/proiecte/'. $i .'_big.jpg" rel="gallery" title=""><img src="images/proiecte/'. $i .'_small.jpg" alt=""></a>';
}
?>
</div>

adrian_ady
Acum chiar ca merge!
Multumesc mult!

Subiecte similare