Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Kolejność wyświetlania
gandziorz
post
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.12.2006

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


Witam,
Potrzebuję pomysłu jak zrobić sortowanie wyników.

Przyjmijmy że mamy bazę danych o nazwie "lista" a w niej tabele:
-temat
-tresc
-sort

Teraz przyjmijmy że mamy rekordy:
(temat | tresc | sort)

A | aa | 1
B | bb | 2
C | cc | 3
D | dd | 4

Teraz chciałbym aby temat D był pierwszy wyświetlany więc baza powinna wyglądać tak:
D | dd | 1
A | aa | 2
B | bb | 3
C | cc | 4

Skrypt musi umożliwiać przesuwanie względem siebie wiele elementów. Chciałbym żeby "D" było pierwsze a "B" ostatnie. Wówczas baza musiała by wyglądać tak:
D | dd | 1
A | aa | 2
C | cc | 3
B | bb | 4

Proste sortowanie nie robi problemu (góra/dół) ale jeżeli chcemy jednocześnie zmienić kilka kolejności wymaga to lepszego pomysłu. Ktoś coś poradzi?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Tomplus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


array_multisort
Go to the top of the page
+Quote Post
gandziorz
post
Post #3





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.12.2006

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


Cytat(Tomplus @ 27.11.2015, 17:56:40 ) *

Chodzi o to żeby sortowanie było zapisane w mysql.
Zmiana rekordów w tabeli "sort".

Cytat(gandziorz @ 27.11.2015, 17:08:40 ) *
Witam,
Potrzebuję pomysłu jak zrobić sortowanie wyników.

Przyjmijmy że mamy bazę danych o nazwie "lista" a w niej tabele:
-temat
-tresc
-sort

Teraz przyjmijmy że mamy rekordy:
(temat | tresc | sort)

A | aa | 1
B | bb | 2
C | cc | 3
D | dd | 4

Teraz chciałbym aby temat D był pierwszy wyświetlany więc baza powinna wyglądać tak:
D | dd | 1
A | aa | 2
B | bb | 3
C | cc | 4

Skrypt musi umożliwiać przesuwanie względem siebie wiele elementów. Chciałbym żeby "D" było pierwsze a "B" ostatnie. Wówczas baza musiała by wyglądać tak:
D | dd | 1
A | aa | 2
C | cc | 3
B | bb | 4

Proste sortowanie nie robi problemu (góra/dół) ale jeżeli chcemy jednocześnie zmienić kilka kolejności wymaga to lepszego pomysłu. Ktoś coś poradzi?

Podałem to na przykładach wyżej.
W 1 przykładzie ustawiam D jako pierwszy więc rekord sort zmienia się następująco:
4 na 1
1 na 2
2 na 3
3 na 4

Zaś w 2 przykładzie gdzie ustawiam D i B rekord sort w mysql musi się zmienić:
4 na 1
1 na 2
3 pozostaje niezmienione
4 na 1

Kombinacji jest sporo więcej bo im więcej mamy wpisów w mysql tym więcej możliwości konfiguracji. Nie mam zbytnio pomysłu jak wykonać sortowanie wg. widzi mi się wink.gif w takim układzie dla wielu wpisów.
Najprościej zrobić to na zasadzie góra/dół wówczas zmieniamy ze sobą wartości sort tylko 2 wpisów. Jednak jak mamy np. 40 wpisów i chcielibyśmy posegregować je wszystkie wg. swojego upodobania. To raczej takie rozwiązanie byłoby czasochłonne.



Ten post edytował gandziorz 27.11.2015, 21:46:09
Go to the top of the page
+Quote Post
matix
post
Post #4





Grupa: Zarejestrowani
Postów: 278
Pomógł: 10
Dołączył: 13.02.2007
Skąd: Rybnik

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


IF .... a potem sortowanie po nim.


SELECT *, IF (temat = "A", 0, IF (temat = "D", 2, 1)) AS sort FROM ... ORDER BY sort DESC/ASC..

Ja bym tak to zrobił. Ale dziwne takie sortowanie...


--------------------
Nawet, jeżeli nie jesteś zainteresowany usługami IT ani outsourcingiem, a Twoją pasją jest programowanie - zobacz naszą stronę. Piszemy dużo fajnych use-caseów, jak podchodzimy do tematu programowania dla naszych klientów. A tak na co dzień tworzymy budujemy mvp oraz tworzymy platformę b2b.
Go to the top of the page
+Quote Post
gandziorz
post
Post #5





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.12.2006

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


Cytat(matix @ 28.11.2015, 17:15:15 ) *
IF .... a potem sortowanie po nim.


SELECT *, IF (temat = "A", 0, IF (temat = "D", 2, 1)) AS sort FROM ... ORDER BY sort DESC/ASC..

Ja bym tak to zrobił. Ale dziwne takie sortowanie...

Nie chodzi o żadne sortowanie wyników tylko aktualizacja pozycji "sort" w mysql.
Go to the top of the page
+Quote Post
Damonsson
post
Post #6





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Twój problem jest raczej po stronie front-endu z tego co piszesz. Do bazy idzie zapytanie z nową wartością dla pola odpowiadającego za sortowanie i tyle. To jakiś mechanizm po stronie klienta musi nadawać odpowiednie cyferki, zależnie od tego jak sobie posortujesz.

Ten post edytował Damonsson 28.11.2015, 21:54:31
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 Aktualny czas: 22.08.2025 - 05:49