Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 2 Dołączył: 17.01.2005 Ostrzeżenie: (0%)
|
Jak w temacie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Rozchodzi sie o najbardziej optymalny mało kombinownay sposób na zmiane pozycji np. Kategorii w bazie danych. Chodzi oczywiście o zmiane pozycji w góre lub w dół.
|
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%)
|
W relacyjnych bazach danych pozycja nie ma znaczenia! Jak chcesz to sobie daj dodatkową kolumnę position i tam wpisuj pozycję, jak pobierasz dane to sortuj według tej kolumny... bo pewnie o to Ci chodzi z tymi pozycjami.
Ten post edytował ayeo 16.12.2007, 18:22:54 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 2 Dołączył: 17.01.2005 Ostrzeżenie: (0%)
|
ayeo własnie o to mi chodzi, jak zaimplementowac ta zmiane pozycji! dodam ta kolumne i co z tego? mam powiedzmy 15 kategorii i chce 12 dac o 1 w gore, czyli musialbym zmieniac wartosc pozycji pola 11 i 12. Chodzi mi o to jak zrobic to w sposob najbardziej przejrzysty i optymalny
Ten post edytował Luke_Star 16.12.2007, 18:27:18 |
|
|
|
Post
#4
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%)
|
Nie napiszę Ci kodu bo nie wiem jak wygląda Twoja baza danych. Musisz poprostu zrobić sobie funkcję, która jako parametr pobiera nazwę kategorii. Funkcja odpytuje baze o pozycję (lub id) tej kategorii, i następnie updatujesz position na position-1, wcześniej pobierasz też kategorię o position o 1 mniejszą niż tamtejk kategorii i zamieniasz na position (o 1 większą niż była) w sensie zamienisz miejscami jakąś kategorię z tą o wyższej pozycji. Oczywiście taka funkcja przesuwa do góry.... Korzystając z rekurencji ta sama funkcja może przesuwać o ile pozycji chcesz, oczywiście nie będzie to wydajne rozwiązanie.
PS jeśli position musi być unikalne to na czas zamiany ustaw je na powiedzmy 0, żeby się niepowtarzały zanim nie updatujesz obu wierszy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował ayeo 16.12.2007, 18:34:33 |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 2 Dołączył: 17.01.2005 Ostrzeżenie: (0%)
|
ayeo ten sposób znam wrecz opisłame go posta wyżej, chodziło mi o to czy ktoś odnalazł bardziej optymalne i estetyczne rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) No nic musi mi chyba wystarczyc to co mam
|
|
|
|
Post
#6
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%)
|
Jeśli masz 15 kategorii to sobie odpal PHPMYADMIN i sobie pozmieniaj ręcznie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
|
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 2 Dołączył: 17.01.2005 Ostrzeżenie: (0%)
|
bardzo śmieszne (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 136 Pomógł: 22 Dołączył: 19.09.2007 Skąd: Sosnowiec Ostrzeżenie: (0%)
|
Zamiast pakować to w pętlę czy rekurencję dla przesunięć o większą ilość pozycji już lepiej podać na którą pozycję ma być przesuniecie, zmienić w bazie pole odpowiedzialne za pozycję wszystkim wartościom (większym lub równym ale mniejszym niż przesuwana pozycja - dla przesunięcia w górę, analogicznie w dół) na +1 (lub -1 dla przesunięć w dół), a następnie przypisać przesuwanemu wierszowi wartość pola na które chcesz przesunąć.
Dla przykładu: Kod 1. Sałata 2. Kapusta 3. Marchew 4. Kalafior 5. Ogórek Przesunięcie Kalafior na pozycję numer 2 to: inkrementacja pól dla Kapusty i Marchwii a następnie przypisanie Kalafiorowi pozycji 2. Efekt finalny: Kod 1. Sałata 2. Kalafior 3. Kapusta 4. Marchew 5. Ogórek PS. Wybaczcie to łopatologiczne porównanie do warzyw, ale mam właśnie dobry humor (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Ten post edytował Nattfarinn 16.12.2007, 19:15:14 |
|
|
|
Post
#9
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%)
|
Cytat PS. Wybaczcie to łopatologiczne porównanie do warzyw, ale mam właśnie dobry humor (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Nie martw się, przejdzie Ci (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
|
![]() ![]() |
|
Aktualny czas: 20.12.2025 - 15:03 |