Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak sprawdzić przedostatni i kolejny rekord tablicy ?
Forum PHP.pl > Forum > PHP
piotrekk
Witam,
mam taki problem. Robię galerię, w której można zmieniać pozycję zdjęć zależnie w górę i w dół. Zdjęcia ładują mi się
według kolejności ID. Czyli wystarczy podmienić ID i zmieni się pozycja zdjęcia. Nie wiem jednak jak sprawdzić przed ostatni i kolejny istniejący numer ID z pobranej tablicy z bazy danych...

Dosłownie można zrobić to np. odejmując 1, ale niekiedy poprzednie ID nie musi być pełne tylko puste bo wcześniej zdjęcie zostało uwunięte i ID leca np. 1,2,3,Puste, 5 itd.

Proszę o pomoc

Z góry dzieki
nospor
Pierwszy i podstawowy blad jaki robisz to uzywanie ID jako pola do kolejnosci i zmienianie jego...
ID to pole, ktore identyfikuje rekord. ID dla danego rekordu z zalozenia ma się nie zmieniać.
Dodaj sobie dodakowe pole KOLEJNOSC i na nim operuj
piotrekk
Dzięki, ale do zmiany pozycji i tak będę potrzebował przed ostatniego i kolejnego rekorgu z tablicy "kolejnosc", jak sprawdzić jaką mają wartość ?
nospor
Chyba nie czaję twojego algorytmu: po co ci przedostani i kolejny element tablicy do zmiany kolejnosci?

Swoją drogą pobierasz je przy pomocy SELECT oraz LIMIT
piotrekk
No ja to sobie obmyśliłem tak:

Pobieram dane do wyświetlenia zdjęć:

foto | góra | dół | usuń

foto -> zdjęcie
góra -> id i kolejnosc
dół -> id i kolejność
usuń -> id i nazwa


Przykładowa kolejność: 1,2,3,4,5
I chce teraz zmienić 5 zdjęcie na 4 czyli naciskam góra i zmienia mi w bazie kolejność, czyli w tym wypadku można zrobić "kolejnosc - 1"

Ale może też być tak, że wcześniej zostanie usunięte zdjęcie i będzie 1,2,3,5 i wtedy kolejnosc -1 nie zadziala i musze znać poprzedni rekord z tablicy...

Jak to zrobić? Jeżeli źle rozumuję to za proponuj jakieś rozwiązanie bo ja nie wiem jak inaczej to zrobić...

Znalazłem juz rozwiązanie:

do tyłu: (wynik 6, jeżeli w kolejności nie będzie akurat 6 to poda najbliższy np. 5)

  1. $query = "SELECT * FROM galeriaTest WHERE kolejnosc < '7' order by kolejnosc desc limit 1";


Do przodu:

  1. $query = "SELECT * FROM galeriaTest WHERE kolejnosc > '7' order by kolejnosc asc limit 1";


dzieki
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.