![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 14.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mam w bazie tabale z artykułami:
id | kategoria | tytul | tresc jakiego zapytania użyć, żeby wyświetlić dane według własnej kolejności, którą będą tytuły artykułów. Czyli np: id | kategoria | tytul | tresc | ____________________________________ 1. | menu | Pizze | jakas tresc | 2. | menu | Obiady | inna tresc | 3. | menu | Dodatki | tersc numer 2 | itp Właściciel zażyczył sobie kolejność artykułów według której nie można znaleźć żadnego logicznego wyjścia dlatego chciałbym pobrać dane według wypisanych tytułów tych artykułów. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 5 Dołączył: 22.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
nie wiem czy do końca rozumiem, ale chodzi Ci o to, że niezależnie jakie id będą miały wpisy w bazie, to klient ma swoją "wizję" kolejności, która nie jest również zbieżna z np. tytułem w kol. alfabetycznej?
Jeśli tak to widzę 2 opcje. Jeśli kolejność nie będzie modyfikowana, to po prostu wprowadź do bazy w kolejności takiej, jak mają być. Czyli
Jeśli zaś ma być możliwość ustalenia kolejności etc., to proponuję dodanie kolumny "kolejnosc" - INTEGER i zrobienie tak:
I wtedy dla pierwszej pozycji wprowadzasz kolejnosc=1, dla drugiej 2 itd. Możesz dorobić też potem np. w panelu admina możliwość zmiany (swap) kolejności (przenieś o 1 w górę, o 1 w dół). Ja takie coś musiałem zrobić w jednym z projektów do zarządzania kolejnością elementów w menu. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 14.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Tak chodzi o to ze nie można ani alfabetycznie, ani po ID.
Wyczytałem, że można użyć:
ale wywala mi błąd Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource Ktoś ma jakiś pomysł? PS. Wy-edytować bazy wolałbym uniknąć, żeby nie popsuć zależności między tabelami. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Bo użyć można. Problem w tym czy sobie sprawdziłeś co dostajesz w wyniku. Może to tutaj jest błąd bo masz jakąś starszą wersję bazy, która tej składni nie rozpoznaje i rzuca błędem, którego zwyczajnie nie widzisz bo nie sprawdzasz czy result jest false, tylko pchasz od razu wyjście z danymi do mysql_fetch_array.
EDIT: zawsze też możesz stworzyć dodatkową tabelę przechowująca kolejność wierszy dla każdego z userów. Wszystkie miały by określoną wartość domyślną i dopiero istotne miały by nadawaną wartość od 1 wzwyż. Potem ORDER BY ta kolumna. A to jak rozwiązać kolejność jest już kwestią umiejętności. Można nawet to dać samemu klientowi do wyboru jako ileś tam z góry (10?). Używasz drag & drop czy innej techniki i odpowiednio modyfikujesz wartości tej kolumny pod kątem tego co robi user z rekordami możesz to potem nawet zapisać jako zwykły string, który potem podasz w podzapytaniu. Ten post edytował thek 18.12.2009, 10:18:21 -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 2.05.2025 - 05:06 |