Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] ID przed stworzeniem rekordu
Forum PHP.pl > Forum > Przedszkole
glaacier
Witam,

Pisze sobie pewien skrypt, który bazuje na bazach danych MySQL. Skrypt ma byc pewnego rodzaju systemem newsow. Zatrzymałem się jednak na pewnym problemie, któego nie potrafie rozwiązać.

Otóż:

Czy jest jakaś funkcja, opcja, cokolwiek co pozwalałoby mi na zidentyfikowanie numeru ID danego rekordu w tabeli MySQL przed dodaniem  tego rekordu? Kolumna ID jest uzupełniania automatycznie (auto_increment) w tabeli.

Do czego mi to potrzebne?

Otóż chce dodać do newsa zdjęcie. Przynależność zdjęcia rozpoznawana jest w tabeli po unikatowym numerze ID danego newsa. Żeby dodać zdjęcie/a przed dodaniem danego newsa potrzebuje numeru jego ID.

Jakieś sugestie? Odsyłacze do konkretnych kursów, działów kursów? Nie oczekuje gotowców, a raczej wskazówek smile.gif

Pozdrawiam
athei
O to chodzi http://pl2.php.net/manual/en/function.mysql-insert-id.php ? Jak nie to pobierz sobie ostatni id z tabeli, dodaj 1 i to będzie następny.
glaacier
No wlasnie przy auto_increment jest drobny problem, bo jak dodam +1 do poprzedniego ID to nie zawsze będzie to prawdą, gdyż w momencie kiedy usunę dany rekord i dodam kolejny zostanie mu nadany numer z pominięciem tego ID który został usunięty.

Przykład:

Id 1
Id 2
Id 3 - Kasuje

Dodaje nowy rekord

Otrzymuje:

Id 1
Id 2
Id 4 - to ten rekord ktory dodalem smile.gif

Juz sprawdzam linka, ktorego mi podaleslales.
athei
Jest jeszcze jedno rozwiązanie:
Kod
$sql = "SHOW TABLE STATUS LIKE 'nazwa_tabeli'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$next_id = $row['Auto_increment'];
glaacier
Obydwie odpowiedzi bardzo mi pomogły.

Przy pierwszej, stworzyłem sobie nową tabele, gdzie przy dodawaniu nowego rekordu updatuje numer ostatniego ID. Tutaj jest sens dodania do podanej liczby 1, bo ten numer zawsze bedzie najwiekszy smile.gif

Drugi można by powiedzieć robi to samo, tylko od razu podaje następny numer ID przy dodaniu kolejnego rekordu i jest to na pewno sposób wygodniejszy smile.gif

Dziekuje bardzo za pomoc smile.gif



Kshyhoo
Jeżeli chcesz uzyskać ostatni numer ID, to:
  1. SELECT max(id)+1 AS nr FROM tabela

Mam ten sam problem, numeruję tutoriale i nie mogę polegać na ID ze względu na dziury po usunięciu rekordów. Mam do tego dodatkową kolumnę, gdzie trzymam numer przypisany do tutoriala, zgodny z numerem katalogu z plikami do tutoriala.
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-2025 Invision Power Services, Inc.