Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][Algorytm] Algorytm kolejności z zapisem do bazy
Forum PHP.pl > Forum > PHP
R4D3K
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
Fifi209
Zamiast zapisywać kolejność zapisz po prostu id kolejnego rekordu?
R4D3K
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 ?
Crozin
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 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.
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.