![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Cześć, chciałem zrobić sobie sortowanie rekordów poprzez przyciski góra/dół. Jednakże coś mi to nie prądzi, tak jak powinno. Oto mój przykład:
BAZA id || title || position (typ: float) KOD
Pomożecie z tym? Nie wiem, co jest nie tak. Źle w ogóle wpisuje mi te pozycje. Dodaje sobie 0.0001, bo to tak to przy mojej ilości danych się na pewno nie zdubluje. Ten post edytował in5ane 11.12.2012, 11:36:14 -------------------- > > > Tworzenie stron < < <
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
1) Pozycja typu całkowitego
2) Algorytm: masz id do przeniesienia. pobierasz id rekordu obok (dol lub gora) zamieniasz wartosci POZYCJA obu rekordów i po sprawie zas co do bledow w twoim kodzie: 1) $pos_n = $pos_p+0.0001; dodajesz niezależnie czy to góra czy dół 2) W zapytaniu musisz dodać ....ORDER BY id asc, gdyż baza niekoniecznie musi ci sortować rekordu wg. twojego założenia. 3) WHERE id < $id Skoro pozycje określa pole POZYCJA to nie możesz brać rekordu mniejszego po ID, gdyż on wcale nie musi być mniejszy, ale ma być mniejszy po POZYCJA. Wówczas i do sortowania dajesz POZYCJA a nie ID -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%) ![]() ![]() |
Zrobiłem sobie coś takiego, ale teraz zauważyłem, że jak chce ostatni rekord (z ostatnim position) podnieść do góry, to on zamienia się pozycją z pierwszym rekordem. Co robię nie tak?
Niestety nie mogę dać WHERE position < $pos-1 ponieważ może nie istnieć o 1 mniejsze, bo np. rekord był usunięty, więc chciałem zrobić z tym mniejsze większe, ale coś nie działa, jak należy. @edit: Poradziłem sobie. Dla zainteresowanych, jak problem został rozwiązany już mówię. Otóż w przenoszeniu do góry zrobiłem sortowanie od tyłu (czyli nie ASC, a dałem DESC). Ot cała filozofia. Teraz działa poprawnie. Ten post edytował in5ane 11.12.2012, 14:14:19 -------------------- > > > Tworzenie stron < < <
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 00:59 |