Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: rekord góra, doł
Forum PHP.pl > Forum > PHP
SN@JPER^
Witam,

w jaki sposób zrobić, aby rekordy przesuwany się góra dół o jedno pole? Sortuje według Value, gdy zwiększe dodaje jeden, gdy zmniejsze odejmuje. Jednak jak zrobić tak, że - jeśli np. rekord jest na 8 pozycji, gdy zwieksze(góra) to zeby wskoczył na 7 pozycję, a nie na pierwsza...?

Obrazowo:

Shido
Jeżeli bawisz się po Value to nie mogą mieć wszystkie 0.

Musisz zrobić tak by value ( lub inna kolumna np "kolejnosc" ) różne wyniki, w kolejności 1, 2, 3 itd.
Wtedy dając zwiększ lub zmniejsz zamienić zawartość odpowiedniej kolumny z kolumną niżej/wyżej.

Na zasadzie:

ID | kol | tytul
1 | 1 | Ala ma kota
2 | 2 | Jurek ogórek
3 | 3 | Kot

I dajesz np Jurkowi zwiększ:

ID | kol | tytul
2 | 1 | Jurek ogórek
1 | 2 | Ala ma kota
3 | 3 | Kot

i analogicznie dla zmniejsz.
lukaskolista
  1. $offset = 5; // Od ktorego rekordu zaczac pobieranie
  2. $limit = 8; // Ilosc rekordow pobrac
  3. $sql = 'SELECT * FROM tabela ORDER BY value LIMIT '.$limit.' OFFSET '.$offset;
Teraz wystarczy, ze bedziesz zwiekszal/zmniejszal wartosc zmiennej $offset o 1.
spokoloko123
Tak samo jak działają skrypty tasujące karty do gry tylko, że nie wybierasz losowych elementów tylko przesuwany + niższy/wyższy. Tzn. wybierasz dwa i zamieniasz w nich to po czym sortujesz. Lecz w twoim przypadku sortowanie po tylko po Value to żart.
lukaskolista
Cytat
Lecz w twoim przypadku sortowanie po tylko po Value to żart.
Jezeli sortujesz po kolumnie, w ktorej wartosci sie powtarzaja, to rekordy z powtazajacymi sie wartosciami zostana jeszcze raz posortowane wedlug domyslnego mechanizmu sortowania bazy danych.
SN@JPER^
A jak to zrobić jesli te rekordy najpierw pobieram zapytaniem/

  1. SELECT DISTINCT(etaps.DATA), races.sort, races.active, races.id, races.name, races.id_where, races.place, races.data_do, races.data_od, categories.name AS name_cat, etaps.id_race FROM races LEFT JOIN categories ON races.id_cat=categories.id LEFT JOIN etaps ON races.id=etaps.id_race WHERE races.data_od<='.time().' AND races.active=0 GROUP BY races.id ORDER BY races.sort DESC, etaps.DATA DESC LIMIT 8
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.