Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Auto korekta numerów ID w tabeli, jak ?
warezxp
post 7.02.2010, 16:26:25
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

Ostrzeżenie: (0%)
-----


Witam !

Otóż natknąłem się na mały problem, jak mam bazę MySQL a w niej tabele z rekordami z której po usunięciu powiedzmy rekordu o numerze "4" zostaje pustka jest tak ...1.2.3.5.6... i mimo auto-numerowania pustka ta nie jest wypełniana następnymi rekordami. Jak można temu zaradzić ?


Z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
Kshyhoo
post 7.02.2010, 16:43:01
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Można uzupełnić, ale po co?


--------------------
Go to the top of the page
+Quote Post
darko
post 7.02.2010, 16:46:38
Post #3





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Nie ma sensu zachowywać ciągłości idków w bazie, jednak jednym z rozwiązań mógłby być odpowiedni trigger ustawiony na operację delete w bazie, który przenumerowałby idki. Tylko tu należy zwrócić uwagę na tabele powiązane danym kluczem obcym i raczej w przypadku rozbudowanych relacji nie będzie proste napisanie stosownego triggera, a i pewnie trzeba byłoby użyć tabel tymczasowych.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
warezxp
post 7.02.2010, 16:47:07
Post #4





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

Ostrzeżenie: (0%)
-----


Gdyż te wszystkie rekordy są pytaniami, gdy jej wywołuje ID jest numerem pytania i nie estetycznie wygląda pytanie nr: 3 a po nim nr:5.
Go to the top of the page
+Quote Post
darko
post 7.02.2010, 16:48:49
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


To pobierz tylko ilość wszystkich rekordów i (wszystkie IDKI?) i ustal pozycję bieżącego ID w danej puli, następnie wyświetl jedynie pozycję IDKA w zbiorze.

Ten post edytował darko 7.02.2010, 16:49:09


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
warezxp
post 7.02.2010, 16:49:39
Post #6





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 20.03.2007

Ostrzeżenie: (0%)
-----


Ok, dzięki tak zrobię smile.gif Nie wpadłem na to by przesuwać następne IDeki zaraz po usuniętym biggrin.gif

Dzięki
Go to the top of the page
+Quote Post
Kshyhoo
post 7.02.2010, 16:52:02
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Możesz też po każdym usunięciu rekordu użyć:
Kod
ALTER TABLE nazwa_tabeli AUTO_INCREMENT=1;


--------------------
Go to the top of the page
+Quote Post
The Night Shadow
post 7.02.2010, 16:59:32
Post #8





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Robisz tak. ID z autonumerownaiem przyspiesza wyuszukiwanie danych w danej tabeli więc tego sie nie pozbywaj. Stwórz kolejną kolumne np. o nazwie NUMER.

1. Dodawanie rekordu
Pobierz MAX(numer) z tabeli z pytaniami dla danej póli. Podczas dodawania nowego rekordu ustal numer jako +1 względem pobranej wartości.
2. Usuwanie rekordu
Po usunięciu pobierz rekordy z danej puli sortując je według numeru rosnąco i kolejno aktualizuj podając kolejne numer.

Dodatkowo można stworzyć dwie funkcje jedną dla przesunęcia pytania w góre, drugą dla przesunięica pytania w dół.


--------------------
Programista Stron i Serwisów WWW oraz Aplikacji Internetowych
Specjalista ds. Pozycjonowania Aplikacji Internetowych
Copywriter
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 11:23