Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> rekord góra, doł
SN@JPER^
post 5.07.2012, 04:09:41
Post #1





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


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:

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Shido
post 5.07.2012, 07:42:38
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


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.

Ten post edytował Shido 5.07.2012, 07:43:09


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post
lukaskolista
post 5.07.2012, 07:54:14
Post #3





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


  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.
Go to the top of the page
+Quote Post
spokoloko123
post 5.07.2012, 08:27:36
Post #4





Grupa: Zarejestrowani
Postów: 114
Pomógł: 12
Dołączył: 15.02.2012

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


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.


--------------------
Pomogłem? Kliknij POMÓGŁ
Go to the top of the page
+Quote Post
lukaskolista
post 5.07.2012, 08:43:03
Post #5





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


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.
Go to the top of the page
+Quote Post
SN@JPER^
post 5.07.2012, 15:03:26
Post #6





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


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
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 12:32