Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Kolejność wyświetlania
Forum PHP.pl > Forum > PHP
gandziorz
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?
Tomplus
array_multisort
gandziorz
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.

matix
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...
gandziorz
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.
Damonsson
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.
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.