Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][PHP]Automatyczne poprawianie ID
DamianRastMan
post 10.01.2016, 18:24:27
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
rad11
post 10.01.2016, 18:50:40
Post #2





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Najlepiej jak zostawisz to właśnie w taki sposób z tym ze pamiętając aby w id nie podawać $no tylko id z bazy.

Ten post edytował rad11 10.01.2016, 18:54:04
Go to the top of the page
+Quote Post
Comandeer
post 10.01.2016, 19:00:32
Post #3





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? 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 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
DamianRastMan
post 10.01.2016, 20:51:46
Post #4





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

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


@Comandeer
Rozumiem, co znaczy identyfikator, i masz rację, że istnieją powody, dla których nie powinno się ich zmieniać, kiedy w kodzie podajemy statyczne wczytywanie
danych z bazy dla jakiegoś id.

@rad11
Jeżeli faktycznie dobrym pomysłem jest zostawić to w takiej wersji, to dziękuję, za rady.
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: 20.07.2025 - 02:16