Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP]Automatyczne poprawianie ID
DamianRastMan
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 2
Dołączył: 3.04.2015

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


Mój problem polega na tym, że chciałbym sortować listę według id w tabeli i je przy tym wyświetlać. Jednak, dane z mojej listy można usuwać przy pomocy polecenia DELETE, co z kolei tworzy dziury. Czyli mając listę:

1. a
2. b
3. c

Chcemy usunąć 'b', co daje nam taki wynik:

1. a
3. c

Co zrobić, by sql automatycznie poprawiał id tak, by nie było dziur?
W tej chwili moje rozwiązanie to po prostu nie używać id, a jedynie w pętli która wyczytuje dane z listy, dodana jest zmienna $no, o wartości która
zwiększa się o jeden z każdym kolejnym wierszem tabeli.

Czy macie może jakiś sposób by uniknąć używania "osobnego" numerowania wierszy?
Będę bardzo wdzięczny za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Z tym, że to powinny być przecież osobne mechanizmy numerowania.

Pętla wyświetlająca dane z bazy jest elementem warstwy prezentacji. Numerek ma tu bardziej walor "estetyczny" niż pragmatyczny.
Dane w bazie to warstwa danych (szok, co nie? (IMG:style_emoticons/default/wink.gif) ). Tutaj ID nie jest numeracją, a po prostu unikalnym i jednoznacznym identyfikatorem konkretnego zasobu i NIE POWINIEN SIĘ ZMIENIAĆ. Z tego prosty wniosek, że usunięty zasób usuwa także swoje ID.

A czemu to ważne? Prosty, obrazowy przykład: wyobraź sobie appkę "Dotacje i datki na polityczne dziatki", w której można przekazać darowiznę na partię polityczną wybraną przez siebie. Oczywiście jako programista napisałeś se bota, który wchodzi pod adres http://politycznedziatki.pl/wspomoz/1 i dajesz datek na Twoją Ukochaną Partię… I teraz se pomyśl, że ktoś tę partię usunął z bazy (bo np. nowy admin appki ma inne preferencje polityczne) i teraz 1 oznacza Twoją Znienawidzoną Partię, a Ty tego nie dostrzegłeś i wciąż przelewasz im 20k miesięcznie (IMG:style_emoticons/default/wink.gif)

Dlatego ID jest unikalne i konkretne ID zawsze powinno wskazywać na ten sam zasób. A jak tego zasobu już nie ma, to ID również nie powinno istnieć.
Go to the top of the page
+Quote Post

Posty w temacie


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: 14.10.2025 - 17:05