Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Wczytywanie z bazy. Problem
Forum PHP.pl > Forum > Przedszkole
skete
Moim zamysłem było wczytanie danych zdjęcia o id większym i mniejszym od aktualnie wyświetlanego.
Każdy wpis numerowany jest automatycznie przez bazę. Doszedłem do momentu w którym przyszło mi do głowy że przecież kiedy jedno ze zdjęć zostanie usunięte to w numeracji pojawi się dziura i zwykłe wczytywanie danych WHERE id=$stareid+1 nie ma sensu. zrobiłem to tak :
Dla zdjęcia następnego:
  1. <?php
  2. $numerzdjeciap = $numerzdjecia+1;
  3.  
  4.    
  5.    $sql3 = "SELECT * FROM ".$galeria." WHERE id>='".$numerzdjeciap."'";
  6.    $result3 = mysql_query($sql3);
  7.    $r3 = mysql_fetch_array($result3);
  8.    if($r3['id'])
  9.    {
  10.    $adresminiaturkip = $r3['min'];
  11.    $tytulp = $r3['tytul'];
  12.    }
  13. ?>


i wszystko działa. Nawet jeśli znajdują się dziury w numeracji. Jednak dla zdjęcia poprzedniego nie jest tak pięknie.
Niestety za każdym razem wczytują się dane od zdjęcia o id=1 niezależnie od id aktualnego zdjęcia.
Kod wygląda analogicznie do tego wyżej.
  1. <?php
  2. $numerzdjeciaw = $numerzdjecia -1;
  3.    $sql2 = "SELECT * FROM ".$galeria." WHERE id<='".$numerzdjeciaw."'";
  4.    $result2 = mysql_query($sql2);
  5.    $r2 = mysql_fetch_array($result2);
  6.    if($r2['id']>0)
  7.    {
  8.    $adresminiaturkiw = $r2['min'];
  9.    $tytulw = $r2['tytul'];
  10.    }
  11. ?>

Ma ktoś może pomysł jak to zmienić żeby działało poprawnie lub pomysł jak ominąć problem dziur w numeracji ?
legorek
  1. <?php
  2. $sql3 = "SELECT * FROM ".$galeria." WHERE id>".(int) $numerzdjeciap." ORDER BY `id` DESC LIMIT 1"; // Następne
  3. $sql4 = "SELECT * FROM ".$galeria." WHERE id<".(int) $numerzdjeciap." ORDER BY `id` ASC LIMIT 1"; // Poprzednie
  4. ?>
skete
Niestety w tym wypadku odczytuje tylko skrajne wartości. (w obie strony)
artur_dziocha
Legorek
Powinno chyba być odwrotnie
ASC dla >(od najmniejszego do największego)
DESC dla mniejszego < (od największego do najmniejszego)
czyli
  1. <?php
  2. $sql3 = "SELECT * FROM ".$galeria." WHERE id>".(int) $numerzdjeciap." ORDER BY `id` ASC LIMIT 0,1"; // Następne
  3. $sql4 = "SELECT * FROM ".$galeria." WHERE id<".(int) $numerzdjeciap." ORDER BY `id` DESC LIMIT 0,1"; // Poprzednie
  4. ?>
skete
Działa fantastycznie winksmiley.jpg Wielkie dzięki:)
legorek
Racja, mój błąd smile.gif A autor tematu jakby troszkę pomyślał to by to wykrył.
artur_dziocha
ano zdarza sie i najlepszyjm:)
hehe
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.