![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 171 Pomógł: 0 Dołączył: 17.12.2003 Skąd: Krakół Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym zrobić tak, że zdjęcie które było następne po usuniętym, wskakuje na miejsce tego usuniętego, i tak wszystkie zdjęcia zmieniają swój numerek.
Załóżmy, że mamy 4 zdjęcia. - 1,2,3,4 Usuwam 3 - 1,2,4 Przeładowanie zdjęć - 1,2,3 Zacząłem coś pisać, ale nie mogę sobie z tym poradzić, mój smieszny kod.
Ten post edytował tomekp 24.11.2004, 13:15:02 -------------------- escape from the execution is futile.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Mam jedno pytanie.. PO CO?
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 171 Pomógł: 0 Dołączył: 17.12.2003 Skąd: Krakół Ostrzeżenie: (0%) ![]() ![]() |
To w takim razie jak ty byś to widział ?
Bo to wygląda tak, że klient ma możliwość wprowadzenia 20 zdjęć, dodaje, usuwa. -------------------- escape from the execution is futile.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
zapisuję na dysku zdjęcie o nazwie
Dzięki czemu moge w ułamek sekundy sprawdzić, czy identyczne zdjęcie nie jest już zapisane. Zapisuję do bazy ID zdjęcia, ID usera, nazwę oryginalną, $sFilename. Usuwając zdjęcie usuwam odpowiednie ID z bazy, usuwam odpowiedni plik z dysku. Przypominam, ze ID się nie przenumerowywuje, bo.. po prostu NIE. Ma byc unikalne zawsze. (jak uważasz, ze INT to za mało, zawsze masz BIGINT). -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 245 Pomógł: 0 Dołączył: 9.09.2002 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(scanner @ 2004-11-24 14:47:53) Przypominam, ze ID się nie przenumerowywuje, bo.. po prostu NIE. Ma byc unikalne zawsze. (jak uważasz, ze INT to za mało, zawsze masz BIGINT). To lubię ![]() Oczywiście argument scanner-a ma bardziej racjonalne przesłanki niż NIE, BO NIE. Wyobraź sobie sytuację w której Twoja baza zawiera relację pomiędzy ID Twojego obrazka a ID w 125 tabelach, które informacje nt. tej fotki zawierają. Musisz zatroszczyć się o "przenumerowanie" wszystkich relacji, bo inaczej zapytanie (nieważny kod) zwróci fałszywe wyniki. Poza tym dodanie czegokolwiek co ma być unikalne najlepiej wykonać przy użyciu Kod auto_increment Sprawdzanie, czy w 17849 elementowej bazie miejsce 345 nie jest akurat wolne, żeby tam coś dodać to komplikacja, której nie tłumaczą ewentualne zyski.
-------------------- Nie ma nic stałego prócz zmiany...
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 171 Pomógł: 0 Dołączył: 17.12.2003 Skąd: Krakół Ostrzeżenie: (0%) ![]() ![]() |
A jak to rozwiązać gdy mam 250 użytkowników z tego każdy może mieć 20 zdjęć dodanych. A co się dzieje w przypadku gdy skonczą się wolne miejsca w polu id przy auto_increment ?
-------------------- escape from the execution is futile.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
Zmien typ pola na BIGINT UNSIGNED. Masz wtedy możliwość zapisania liczb od 0 do 18446744073709551615. Styknie to Twoim userom na zapisanie 73786976294838206 zdjęć przez każdego z nich.
-------------------- "Coś się kończy, coś się zaczyna." Andrzej Sapkowski
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 171 Pomógł: 0 Dołączył: 17.12.2003 Skąd: Krakół Ostrzeżenie: (0%) ![]() ![]() |
Nie no aż tyle rekordów to miał nie będe.
Ale chyba zamiast auto_increment wykorzystam moją funkcje, do wyszukiwania pierwszego wolnego rekordu. To chyba będzie lepsze rozwiązanie. Jak uważacie ? Funkcja wygląda w ten sposób :
Co sądzicie ? -------------------- escape from the execution is futile.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 57 Pomógł: 0 Dołączył: 17.08.2004 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Głupota do kwadratu.
Od tego jest auto_increment w mysql zeby sobie radzic z takimi rzeczami. Jezeli pole jest 'auto-increment' i 'unique', masz pewnosc ze beda unikalne wpisy, i nie musisz sie bawic skryptem. 20 zdjec dla usera? Zadnen problem. Suma wszystkich rekordow dla danego usera musi byc mniejsza/rowna 20 i tyle. Klopoty z listowaniem pokolei? Zadnego. Polecam dla odmiany teraz manuala mysql poczytac [LIMIT itp]. -------------------- Artur Wasilewski
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 245 Pomógł: 0 Dołączył: 9.09.2002 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(tomekp @ 2004-11-24 20:05:45) Nie no aż tyle rekordów to miał nie będe. Ale chyba zamiast auto_increment wykorzystam moją funkcje, do wyszukiwania pierwszego wolnego rekordu. To chyba będzie lepsze rozwiązanie. Jak uważacie ? Jeżeli robisz to dla treningu, to rób, ale jeżeli to ma być użyteczny skrypt, to , jak już wielkorotnie padło w tym wątku: PO CO? Poza tym uczysz się złych schematów i będziesz później generował skrypty 100-linijkowe zamiast 5-linijkowych robiących dokładnie to samo, tylko dużo szybciej. -------------------- Nie ma nic stałego prócz zmiany...
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 15:11 |