Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][Algorytm] Algorytm kolejności z zapisem do bazy
R4D3K
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Fifi209
post
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?
Go to the top of the page
+Quote Post
R4D3K
post
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
Go to the top of the page
+Quote Post
Crozin
post
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 13:27