![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 12 Dołączył: 16.03.2007 Ostrzeżenie: (0%)
|
Witam wszystkich ! Piszę bo mam problem merytoryczny z cyklu jak dobrze zaimplementować dane rozwiązanie. Otóż mam w bazie danych (MySQL) tabele question, która zawiera pola id,name, polls_id. Moim zadaniem jest przy operacjach CRUD w panelu admina udostępnienie funkcjonalności ułożenia pytań wedle określonej przez niego kolejności w ramach danej ankiety (polls_id). Dokładniej chodzi o to , że przy dodawaniu,edytowaniu rekordów jest możliwość zmiany kolejności wyświetlania: na koniec, na początek lub po danym polu takie coś jak dodawanie/edytowanie pól do danej tabeli w phpmyadminie.
W pierwszej kolejności przyszło mi do głowy: Dodaj pole order do tabeli w niej zapisuj liczby => najmniejsza liczba to rekord jest pierwszy dalej pytania układają się analogicznie jak rosną liczby. Ale po chwili zastanowienia pomyślałem: ale jak wtedy wcisnąć dany rekord między dwoma innymi rekordami ? Przeindekdować wszystko ? i wykonać zapytanie update order = order+1 form question where order >= x ??Hmm tutaj zaświtał mi pomysł żeby dodawać liczby np dla 1 rekordu 100 dla 2 200 i wtedy jak trzeba coś wcisnąć między rekordem 1 a 2 to będę nadawać liczbę między 100 a 200. Fajnie, ale ,ale ... jak user między rekord 1 a 2 doda 3 inne rekordy a później ze chce między te dodane rekordy coś wcisnąć ? Czy ktoś miał podobny problem, i jak najlepiej to rozwiązać. Dodam, że tworzona przez mnie aplikacja będzie miała po koło 200 pytań dla każdej ankiety(polls_id) więc możliwość swobodnej edycji, usuwania oraz zmieniania kolejności pytań jest tu bardzo ważna no i przede wszystkim jest wymogiem klienta.</p> Serdecznie dziękuje za każde sensowne odpowiedzi Ten post edytował R4D3K 4.08.2011, 14:09:26 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%)
|
Zamiast zapisywać kolejność zapisz po prostu id kolejnego rekordu?
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 12 Dołączył: 16.03.2007 Ostrzeżenie: (0%)
|
W sumie dobry i prosty sposób tylko tyle, że przy usuwaniu danego pytania będę musiał znaleźć pytanie ,które było następne, znaleźć pytanie poprzednie do usuniętego i z aktualizować rekord następnego pytania, tak aby nie wskazywał na nieistniejący tylko na znaleziony poprzedni rekord, to zawsze lepiej jak przeindeksowanie wszystkich pytań =]
I drugie ale odnośnie tej metody to jak pobrać zapytania dla danej ankiety w odpowiedniej kolejności ? Ten post edytował R4D3K 4.08.2011, 11:31:14 |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Cytat pierwszej kolejności przyszło mi do głowy: Dodaj pole order do tabeli w niej zapisuj liczby => najmniejsza liczba to rekord jest pierwszy dalej pytania układają się analogicznie jak rosną liczby. Ale po chwili zastanowienia pomyślałem: ale jak wtedy wcisnąć dany rekord między dwoma innymi rekordami ? Przeindekdować wszystko ? i wykonać zapytanie update order = order+1 form question where order >= x (IMG:style_emoticons/default/questionmark.gif) To jest całkiem prosty i dobry sposób. Nie kombinuj gdzie nie trzeba.PS. Na przyszłość weź jakieś akapity porób, bo takie ściany tekstu się ciężko czyta. |
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 21:08 |