![]() |
![]() ![]() |
![]() |
![]()
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? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 879 Pomógł: 230 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 0 Dołączył: 20.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o to żeby sortowanie było zapisane w mysql. Zmiana rekordów w tabeli "sort". 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ę (IMG:style_emoticons/default/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 |
|
|
![]()
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... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 101 Pomógł: 0 Dołączył: 20.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:55 |