Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uploadowany obrazek = id dodanego rekordu
Forum PHP.pl > Forum > Bazy danych > MySQL
vieri_pl
Witam po raz kolejny. Chcę aby obrazek który uploaduje na serwer nazywał się
tak samo jak najwyższy id tabeli+1, jak to zrobić?? Przykładowo mam w bazie 89 rekordów i obrazek który właśnie uploaduje na serwer nazywał by się 90.jpg. Jak to zrobić??
ikioloak
mysql_insert_id()+1 smile.gif
markac
  1. SELECT @max := MAX(id)
  2. FROM uploads; INSERT
  3. INTO uploads (obrazek)
  4. VALUES ( CONCAT( @max + 1, '.jpg' ) )


Zakładając, że struktura tabeli wygląda tak:
  1. #
  2. # Struktura tabeli dla `uploads`
  3. #
  4. # Utworzenie: 03 Sie 2005, 22:25
  5. # Ostatnia aktualizacja: 03 Sie 2005, 22:25
  6. #
  7.  
  8. CREATE TABLE `uploads` (
  9. `id` int(11) NOT NULL AUTO_INCREMENT,
  10. `obrazek` varchar(255) NOT NULL DEFAULT '',
  11. PRIMARY KEY (`id`)
  12. ) TYPE=MyISAM AUTO_INCREMENT=1 ;
vieri_pl
Jak ma w końcu wyglądać ten formularz?questionmark.gif bo teraz to nie wiem gdzie co z czym posklejać??
markac
To jest forum o bazach danych. Dostałeś odpowiedź co do samego zapytania SQL. Chcesz formularz, pisz na forum php.
nospor
@markac jestes w podwójnym błędzie.
1)Twój algorytm jest zły.
Masz rekordy o kolejnych id 1,2,3,4. Usuwasz rekord o id = 4. Wg Twojego algorytmu, następny rekord powinien mieć więc id max (3) + 1 = 4. A będzie mial 5. Autoincrement pamieta ostatnio utworzone id, nie interesuje się aktualnym stanem tabeli (czytaj dziurami spowodowanymi deletem rekordu).

2) Jeżeli ktoś załozyl już temat to nie może go ponowiać w innym forum (taki jest regulamin) , wieć proszę mi tu nie wprowadzać w błąd użytkowników.

@veri_pl
musisz pobrać następne id (przy zalozeniu ze id jest auto_increment). Tu masz link. Jest tam skrypcik (przedostatni post), który pobiera następne id.
http://forum.php.pl/index.php?showtopic=33...533;entry191278

mając już to id robisz upload. Umiesz robić upload? Jest wiele skryptów na forum.
markac
Nospor, o usuwaniu rekordów z tabeli nie było mowy snitch.gif

wow, widzę że humor ci dopisuje. Czasami trzeba jednak "patrzeć tam gdzie wzrok nie sięga" i się domyśleć że taki przypadek jednak jest możliwy
---
nospor
mhs
Cytat(markac @ 2005-08-04 14:07:21)
Nospor, o usuwaniu rekordów z tabeli nie było mowy  snitch.gif

tak, a usuwanie rekordow nie wystepuje w ogole...

przeciez trzeba pisac tak programy by dzialaly zawsze, a nie tylko w szczegolnych przypadkach
SongoQ
Dodatkowe zalozenie ktore utrudni to wielosesyjnosc. Jesli pobierzesz kolejne id nastepnie a po miedzy Twoim dodaniem ktos juz zapisze bedziesz mial zdupblowane dane. Jest mozliwosc zwracania bledow i wielokrotnego odwolanie sie o wolny id lub wymuszenie id. MySQL jest taka baza ze nie radzi sobie w takich przypadkach, no chyba ze robisz ALTERA na inkrementracji
markac
Od tego mamy LOCK TABLES.
SongoQ
Cytat
Od tego mamy LOCK TABLES.

Mozna tez tak, ale sa tez inne rozwiazania. Wszystko zalezy co sie potrzebuje. Szkoda ze nie ma sekwencji, bo sprawa jest wtedy bardzo prosta.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.