Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] mechanizm NEXT | PREVIOUS?
jagon
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 20.10.2007

Ostrzeżenie: (0%)
-----


Witam, od dłuższego czasu próbuję stworzyć mechanizm, którego zadaniem będzie przeglądanie fotek. Najprościej mówiąc: po kliknięciu w NEXT, skrypt otwiera nam następna fotkę itd. chciałbym też, aby zawierał opcję PREVIOUS.

Najważniejsze jest jednak to, że na stronie będzie wiele galerii, dzięki czemu mechanizm musi być uniwersalny.

Ma ktoś jakiś pomysłsmile.gif?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
isso
post
Post #2





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

Ostrzeżenie: (0%)
-----


Mechanizm powiadasz.... a nie lepiej wypisać wszystkie fotki z katalogu/bazy i przegladac je poprzez lightbox`a?

Ja ogólnie do operowania zdjęciami użyłbym tablicy... na tablicach właśnie można wykonywać next i previous smile.gif

powodzenia


--------------------
Go to the top of the page
+Quote Post
Kihol
post
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 6
Dołączył: 20.06.2005
Skąd: Pyskowice

Ostrzeżenie: (0%)
-----


Najlepiej napisz sobie jakąś funkcję, która jako parametry będzie przyjmowała np id galerii i id aktualnego zdjęcia. Przy pomocy tych dwóch informacji tworzysz zapytanie, które wyszukuje poprzednie i następne zdjęcie w danej galerii, np:
  1. <?php
  2. function getNextPrev($galleryId, $photoId) {
  3. $query = "SELECT num FROM photos WHERE galleryId = $galleryId AND id=$photoId";  //wyciągamy num - czyli aktualną pozycję zdjęcia (zakładam, że zdjęcia są układane według pola num)
  4. $photo = mysql_fetch_row($query);
  5. $num = $photo[0]; // mamy num aktualnego zdjęcia
  6. $query2 = "SELECT id FROM photos WHERE num>$num LIMIT 1"; // tu mamy następne zdjęcie
  7. $query3 = "SELECT id FROM photos WHERE num<$num LIMIT 1"; // a tu poprzednie
  8. $nextPhoto = mysql_fetch_row($query2);
  9. $nextPhotoId = $nextPhoto[0];
  10. $prevPhoto = mysql_fetch_row($query3);
  11. $prevPhotoId = $prevPhoto[0];
  12. return array($prevPhotoId, $nextPhotoId);   //zwrócona zostaje tablica z identyfikatorem poprzedniego i następnego zdjęcia
  13. }
  14.  
  15. // i używasz tego gdzieś w skrypcie :
  16. $photos = getNextPrev($galleryId, $id);
  17. echo '<a href="jakis_site/photos.php?id='.$photos[0].'">poprzednie</a> | <a href="jakis_site/photos.php?id='.$photos[1].'">następne</a>';
  18. ?>
Go to the top of the page
+Quote Post
slewin
post
Post #4





Grupa: Zarejestrowani
Postów: 104
Pomógł: 7
Dołączył: 9.12.2008
Skąd: wroc

Ostrzeżenie: (0%)
-----


Ja mam u siebie prosty i nie zawodny mechanizm
  1. <?php
  2. echo '<a href="galeria.php?nr='.($_GET['nr']-1).'" align="left">Poprzednia strona</a>
  3.        <a href="galeria.php?nr='.($_GET['nr']+1).'" align="right">Następna strona</a>';
  4. ?>


a jesli miał byś dużo galerii ( mądrze by było trzymać zdjecia w bazie danych) to wtedy masz proste rozwiazanie :

budujesz baze gdzie beda kategorie i zjęcia nastepnie piszesz skrypt łaczący się z baza wybierajacy odpowiedna kategorie ,galerie,zdjecie i dodajesz do ostetniej strony kod typu:
  1. <?php
  2. echo '<a href="galeria.php?kat='.$row['kat'].'&nr='.($row['nr']-1).'" align="left">Poprzednia strona</a>
  3.          <a href="galeria.php?kat='.$row['kat'].'&nr='.($row['nr']+1).'" align="right">Następna strona</a>';
  4. ?>


a żeby przegladać tylko kategorie :

  1. <?php
  2. echo '<a href="galeria.php?kat='.($row['kat']-1).'" align="left">Poprzednia strona</a>
  3.            <a href="galeria.php?kat='.($row['kat']+1).'" align="right">Następna strona</a>';
  4. ?>


możesz to dowolnie modyfikowac , zależy jak piszesz ten skrypt galerii . może Ci się to przyda
pozdro
Go to the top of the page
+Quote Post
Kihol
post
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 6
Dołączył: 20.06.2005
Skąd: Pyskowice

Ostrzeżenie: (0%)
-----


slewin, Twój skrypt niestety ma jedną dużą wadę. Jeśli z bazy zostanie usunięty jakiś rekord, to $row['nr']-1, $row['nr']+1 może przestać działać, bo nie będzie rekordu z danym id, czy po czym tam sobie to sprawdzasz..
Go to the top of the page
+Quote Post
isso
post
Post #6





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

Ostrzeżenie: (0%)
-----


to tak jak napisałem... użyj katalogów do odzielania kontentu.. później wczytuj do tablicy i przeglądaj smile.gif za pomocą next(); prev().... poszukaj troche o tym smile.gif to prosta sprawa smile.gif


--------------------
Go to the top of the page
+Quote Post
slewin
post
Post #7





Grupa: Zarejestrowani
Postów: 104
Pomógł: 7
Dołączył: 9.12.2008
Skąd: wroc

Ostrzeżenie: (0%)
-----


wiem o tym , to jest duży problem . Można go rozwiązać . Właśnie nad tym myślę i mam już kikla pomysłów , przetestuje to dam znac .
Go to the top of the page
+Quote Post
Kihol
post
Post #8





Grupa: Zarejestrowani
Postów: 46
Pomógł: 6
Dołączył: 20.06.2005
Skąd: Pyskowice

Ostrzeżenie: (0%)
-----


Możesz wykorzystać fragment tego co zamieściłem wyżej, albo jak napisał isso. Czyli wrzucić wszystko do tablicy (tylko że tablice wtedy trzeba przekazywać np. przez sesję) i poprzez next(), prev() wybierać odpowiednie dane z tablicy.
Go to the top of the page
+Quote Post
jagon
post
Post #9





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 20.10.2007

Ostrzeżenie: (0%)
-----


Dzieki, tylko nie umiem korzystać z tablic, nie bez znaczenia napisałem temat w dziale przedszkole:) cóż poszperam jeszcze...
Go to the top of the page
+Quote Post
slewin
post
Post #10





Grupa: Zarejestrowani
Postów: 104
Pomógł: 7
Dołączył: 9.12.2008
Skąd: wroc

Ostrzeżenie: (0%)
-----


Zamiast następna poprzednia ten kawałek kodu wypisze tylko te zdjecia które istnieją biggrin.gif ( coś takiego chyba też moze być )
  1. <?php
  2. $wynik = mysql_query ("SELECT * FROM zdjecia ORDER BY nr");
  3.  $i = 1;
  4.  while ($wynik && $rekord = mysql_fetch_assoc ($wynik)) {
  5.     $nazwa[$i] = $rekord['nr'];
  6.    $i++;
  7.  }
  8.    // listing
  9.    print "<H3>Lista zdjec:</H3>";
  10.    for ($i=1; $i<=count($nazwa); $i++) {
  11. print "<A HREF=galeria.php?nr=".$nazwa[$i].">".$nazwa[$i]."</A>\n";
  12.    }
  13. ?>




i co wy na to questionmark.gif

Ten post edytował slewin 2.02.2009, 15:38:53
Go to the top of the page
+Quote Post
jagon
post
Post #11





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 20.10.2007

Ostrzeżenie: (0%)
-----


A prosiłem...bez bazy:) Jest ktoś w stanie pomóc mi w rozwiązaniu? same hasła nic mi nie mówią niestety, jestem na etapie IFowania...
Go to the top of the page
+Quote Post
slewin
post
Post #12





Grupa: Zarejestrowani
Postów: 104
Pomógł: 7
Dołączył: 9.12.2008
Skąd: wroc

Ostrzeżenie: (0%)
-----


Oto prosty skrypt galerii
tworzysz sobie katalogi na serwerze galeria
nastepnie katalog zdjecia , w kat. zdjecia wrzucasz miniaturki fotografii oraz tworzysz katalog duze , a tam wrzucasz fotki w w orginalnym formacie lub jakim tam chcesz .
Ten kod jest z książki PHP5 - przykłady praktyczne .
Uważam że bardzo dobra galeria na stronke jeśli nie masz dużo zdjec .
plik galeria.php
  1. <? // Skrypt do realizacji prostej galerii.
  2.  
  3.    // odczyt zawartości katalogu
  4.    $katalog = opendir ('zdjecia'); // to katalog gdzie terzymasz zdjecia
  5.    $i=1;
  6.    while ($plik = readdir ($katalog)) {
  7.      if (ereg (".gif$|.jpg$", $plik)) { $zdjecia[$i++] = $plik; }
  8.    }
  9.    closedir ($katalog);
  10.  
  11.    if (($_GET['nr']>0) && ($_GET['nr']<=count($zdjecia))) {
  12.      print "<P ALIGN=CENTER>";
  13.      if ($_GET['nr']>1) {
  14.        print '<A HREF="galeria.php?nr='.($_GET['nr']-1);
  15.        print '">Poprzednie</A>&nbsp;&nbsp;&nbsp;';
  16.      }
  17.      print '<A HREF="galeria.php">Galeria</A>&nbsp;&nbsp;&nbsp;';
  18.      if ($_GET['nr']<count($zdjecia)) {
  19.        print '<A HREF="galeria.php?nr='.($_GET['nr']+1).'">Następny</A>';
  20.      }
  21.      print "</P><P ALIGN=CENTER>";
  22.      $nazwapliku = './zdjecia/duze/'.$zdjecia[$_GET['nr']]; // duze zdjecia , pelen wymiar
  23.      if (file_exists($nazwapliku)) {
  24.        $rozmiar = getimagesize($nazwapliku);
  25.        print '<IMG SRC='.$nazwapliku.' '.$rozmiar[3];
  26.        print '></P>';
  27.      } else {
  28.        print "Brak dużego zdjęcia</P>";
  29.      }
  30.  
  31.    } elseif (count($zdjecia)>0) {    // jest przynajmniej jedno zdjęcie
  32.      print "<H2>Galeria zdjęć</H2><P ALIGN=CENTER>";
  33.      for ($i=1; $i<=count($zdjecia); $i++) {
  34.        $nazwapliku = './zdjecia/'.$zdjecia[$i];  // miniaturki
  35.        $rozmiar = getimagesize($nazwapliku);
  36.        print "<A HREF=\"galeria.php?nr=$i\">";
  37.        print "<IMG SRC=\"$nazwapliku\" ".$rozmiar[3];
  38.        print "BORDER=0 HSPACE=10 VSPACE=10 ALIGN=absmiddle></A>";
  39.      }
  40.      print "</P>";
  41.    } else { // w katalogu nie ma zdjęć
  42.      print "Katalog jest pusty!";
  43.    }
  44.  ?>
Go to the top of the page
+Quote Post
jagon
post
Post #13





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 20.10.2007

Ostrzeżenie: (0%)
-----


Dzięki bardzo! właśnie o taki prosty skrypcik mi chodziło. Teraz tylko zmodyfikuję go wg moich potrzeb i będzie super.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 14:58