Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> konkretne zapytanie - zapytanie mysql, znajdowanie poprzedniego i nastepnego rekordu
hrehor
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.02.2007

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


pewnie post powinien byc w "przedszkolu", niemniej potrzebuje pomocy.

tworze galerie fotograficzna, i mam problem z zapytaniem mysql.
adres strony to: http://www.photography.kw.pl/

mam takie cos:
$query = "SELECT * FROM `photos` WHERE `".$nav."` = '".$value."'";
//gdzie $nav to np "category" lub "date", a value to np "arch" lub "people" lub np "2007-02-12"
$result = mysql_query($query);
$ilosc_fotek = mysql_num_rows($result); //to wiem ze nr ostatniego rekordu :-)

przy przegladaniu zdjec chcialbym zeby byly opcja ogladania zdjec nastepnego i poprzedniego wzgledem daty i kategorii. jak to najprosciej zrobic ?
jako zmienne mam na stronie wyciagniete pole z bazy danych [id] biezacego zdjecia. jak znalezc zdjecie poprzednie i nastepne ?
nie moge zrobic +1 i -1 bo id juz nie sa po kolei, a co dopiero pozniej. poza tym, chce zeby przy pierwszym "previous" przeskakiwal do ostatniego, a w ostatnim "next" do pierwszego.

mam nadzieje ze pomozecie,
pozdro
Hrehor
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tomaszdurka
post
Post #2





Grupa: Zarejestrowani
Postów: 32
Pomógł: 1
Dołączył: 12.02.2007

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


Witam tak na szybko to można zrobić to tak:

  1. <?php
  2. $current = $_GET['current_photo'];
  3. if ($current < 1) {
  4. die("Błędne foto");
  5. }
  6. $query = "SELECT * FROM `photos` WHERE `" . $nav . "` = '" . $value . "' ORDER BY " . $nav . " ASC LIMIT " . ($current - 1). ", 18446744073709551615"; // 18446744073709551615 to max mysql number
  7. $result = mysql_query($query);
  8. $ilosc_fotek = mysql_num_rows($result); 
  9.  
  10. if (!$ilosc_fotek) {
  11. die("Błędne foto");
  12. } elseif($current == 1) {
  13. $next = $current + 1;
  14. $prev = $ilosc_fotek;
  15. } elseif ($ilosc_fotek == 1) {
  16. $next = 1;
  17. $prev = $current -1;
  18. } else {
  19. $next = $current + 1;
  20. $prev = $current - 1;
  21. }
  22. ?>


Tutaj szukasz zdjęcia po danych kryteriach, potem wybierasz pierwsze, określone przez $_GET['current_photo'].
Jeśli jako current dasz ujemną albo liczbe większą niż jest zdjęć w wyszukiwanych kryteriach MySQL zwróci komunikat błednego photo.
Jako następną fotkę zastosuj $next jako poprzednią $prev.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 17:36